PostgreSQL 9.4.5文書 | |||
---|---|---|---|
前のページ | 上に戻る | 付録 F. 追加で提供されるモジュール | 次のページ |
unaccentは語彙素からアクセント(発音区分記号)を取り除く全文検索用の辞書です。 これはフィルタ処理を行う辞書、つまり、標準の動作と異なり、その出力が常に次の辞書(もしあれば)に渡されるものです。 これにより全文検索においてアクセントを無視した処理を行うことができます。
現在のunaccentの実装ではthesaurus辞書向けの正規化用辞書として使用することはできません。
unaccent辞書は以下のオプションを受け付けます。
RULESは翻訳規則の一覧を含むファイルのベースネームです。 このファイルは$SHAREDIR/tsearch_data/内に格納しなければなりません。(ここで$SHAREDIRはPostgreSQLインストレーションの共有データディレクトリを意味します。) この名前は.rulesで終わらなければなりません。(.rulesはRULESパラメータには含まれません。)
rulesファイルの書式は以下の通りです。
各行は、アクセント付き文字とその後にアクセントを取り除いた文字から構成される組み合わせを表します。 一つ目が二つ目に変換されます。 以下に例を示します。
À A Á A Â A Ã A Ä A Å A Æ A
unaccent.rulesは、ほとんどの欧州圏の言語で直接使用できる、より複雑な例です。 これはunaccentモジュールをインストールした時に$SHAREDIR/tsearch_data/にインストールされます。
unaccent拡張をインストールすることで、unaccent全文検索テンプレートとそれに基づくデフォルトのパラメータを持つunaccent辞書が生成されます。 unaccent辞書はRULES='unaccent'というデフォルトパラメータ設定を持ちます。これは標準のunaccent.rulesファイルを即座に使用可能にします。 次の例のようにパラメータを変更することができます。
mydb=# ALTER TEXT SEARCH DICTIONARY unaccent (RULES='my_rules');
また、このテンプレートに基づいた辞書を新規に作成することができます。
以下を行うことで、辞書の動作を確認することができます。
mydb=# select ts_lexize('unaccent','Hôtel'); ts_lexize ----------- {Hotel} (1 row)
全文検索設定にunaccent辞書を組み込む方法を示す例を以下に示します。
mydb=# CREATE TEXT SEARCH CONFIGURATION fr ( COPY = french ); mydb=# ALTER TEXT SEARCH CONFIGURATION fr ALTER MAPPING FOR hword, hword_part, word WITH unaccent, french_stem; mydb=# select to_tsvector('fr','Hôtels de la Mer'); to_tsvector ------------------- 'hotel':1 'mer':4 (1 row) mydb=# select to_tsvector('fr','Hôtel de la Mer') @@ to_tsquery('fr','Hotels'); ?column? ---------- t (1 row) mydb=# select ts_headline('fr','Hôtel de la Mer',to_tsquery('fr','Hotels')); ts_headline ------------------------ <b>Hôtel</b> de la Mer (1 row)
unaccent
関数は与えられた文字列からアクセント(発音区別符号)を取り除きます。
基本的にこれはunaccent辞書のラッパです。しかし通常の全文検索以外の文脈で使用することができます。
unaccent([dictionary, ] string) returns text
下記は使用例です。
SELECT unaccent('unaccent', 'Hôtel'); SELECT unaccent('Hôtel');