dict_intは、全文検索用の辞書テンプレートの追加例です。
この辞書例の目的は、検索性能に大きく影響する一意な単語数の急激な増大を防ぎながら、こうした数のインデックス付けを行うことができるように、整数(符号付きおよび符号無)のインデックス付けを制御することです。
このモジュールは「trusted」と見なされます。つまり、現在のデータベースに対してCREATE権限を持つ非スーパーユーザがインストールできます。
この辞書は3つのオプションを受け付けます。
maxlenパラメータは整数型の単語で許される最大桁数を指定します。
デフォルト値は6です。
rejectlongパラメータは、桁数を超える整数を切り詰めるか無視するかを指定します。
rejectlongがfalse(デフォルト)ならば、辞書は整数の先頭のmaxlen桁を返します。
rejectlongがtrueならば、辞書は桁数を超えた整数をストップワードとして扱います。
このためインデックス付けされません。
これはまた、こうした整数を検索することができないことを意味します。
absvalパラメータは、先頭の「+」または「-」符号を整数型の単語から削除するかどうかを指定します。
デフォルトはfalseです。
trueの場合、maxlenが適用される前に符号は削除されます。
dict_int拡張機能をインストールすると、intdict_templateテキスト検索テンプレートとこれに基づき、そのデフォルト値でintdict辞書が作成されます。
以下のようにパラメータを変更することができます。
mydb# ALTER TEXT SEARCH DICTIONARY intdict (MAXLEN = 4, REJECTLONG = true); ALTER TEXT SEARCH DICTIONARY
または、このテンプレートを基に新しい辞書を作成してください。
辞書を試験するためには以下を試してください。
mydb# select ts_lexize('intdict', '12345678');
ts_lexize
-----------
{123456}
しかし、現実世界で使用する場合は、第12章で説明されるテキスト検索設定内にこれを含むようになるでしょう。 以下のようになります。
ALTER TEXT SEARCH CONFIGURATION english
ALTER MAPPING FOR int, uint WITH intdict;