7.7. ノーマライザー#
7.7.1. 概要#
Groongaには正規化をするノーマライザーモジュールがあります。これはテキストをトークナイズするときとテーブルのキーを保存するときに使われます。例えば、正規化をした後は A
と a
は同じ文字として扱われます。
ノーマライザーモジュールはプラグインとして追加できます。ノーマライザープラグインをGroongaに追加することでテキストの正規化方法をカスタマイズできます。
ノーマライザーモジュールはテーブルに関連付いています。テーブルは0個か1個のノーマライザーモジュールを持つことができます。 table_create の normalizer オプションでテーブルにノーマライザーオプションを関連付けることができます。
以下は NormalizerAuto
ノーマライザーモジュールを使う table_create
の例です。
実行例:
table_create Dictionary TABLE_HASH_KEY ShortText --normalizer NormalizerAuto
# [[0,1337566253.89858,0.000355720520019531],true]
注釈
Groonga 2.0.9以前には table_create
に --normalizer
オプションはありません。代わりに KEY_NORMALIZE
フラグを使っていました。
Groonga 2.1.0以降で古いデータベースを開くことができます。ここでいう古いデータベースとはGroonga 2.0.9以前で作ったデータベースということです。しかし、一度新しいGroongaで開いたデータベースを2.0.9以前のGroongaで開くことはできません。一度 Groonga 2.1.0以降のGroongaでデータベースを開くと、 KEY_NORMALIZE
フラグ情報がノーマライザー情報に変換されます。そのため、2.0.9以前のGroongaは、一度Groonga 2.1.0以降で開いたデータベース内から KEY_NROMALIZE
フラグの情報を見つけることができません。
ノーマライザーモジュールを持っているテーブルのキーは正規化されます。
実行例:
load --table Dictionary
[
{"_key": "Apple"},
{"_key": "black"},
{"_key": "COLOR"}
]
# [[0,1337566253.89858,0.000355720520019531],3]
select Dictionary
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# [
# [
# 3
# ],
# [
# [
# "_id",
# "UInt32"
# ],
# [
# "_key",
# "ShortText"
# ]
# ],
# [
# 1,
# "apple"
# ],
# [
# 2,
# "black"
# ],
# [
# 3,
# "color"
# ]
# ]
# ]
# ]
NormalizerAuto
ノーマライザーはテキストを小文字に正規化します。例えば、 "Apple"
は "apple"
に正規化され、 "black"
は "black"
に正規化され、 "COLOR"
は "color"
に正規化されます。
テーブルが全文検索用の語彙表の場合、トークナイズされたトークンは正規化されます。なぜなら、トークンはテーブルのキーとして保存されるからです。テーブルのキーは前述のように正規化されます。
7.7.2. 組み込みノーマライザー#
以下は組み込みのノーマライザーのリストです。
7.7.3. 追加のノーマライザー一覧#
いくつか追加のノーマライザーがあります。