7.7. ノーマライザー

7.7.1. 概要

Groongaには正規化をするノーマライザーモジュールがあります。これはテキストをトークナイズするときとテーブルのキーを保存するときに使われます。例えば、正規化をした後は Aa は同じ文字として扱われます。

ノーマライザーモジュールはプラグインとして追加できます。ノーマライザープラグインをGroongaに追加することでテキストの正規化方法をカスタマイズできます。

ノーマライザーモジュールはテーブルに関連付いています。テーブルは0個か1個のノーマライザーモジュールを持つことができます。 table_createnormalizer オプションでテーブルにノーマライザーオプションを関連付けることができます。

以下は 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. 追加のノーマライザー一覧

いくつか追加のノーマライザーがあります。

7.7.4. 参考