7.10.1. QueryExpanderTSV#
7.10.1.1. 概要#
QueryExpanderTSV
はクエリー展開プラグインです。同義語はTSV(データをタブで区切るファイルフォーマット)ファイルから読み込みます。このプラグインは組み込みのクエリー展開機能よりも機能が少ないです。例えば、単語の正規化をサポートしていません。しかし、TSVファイルで同義語を管理できるためこちらの方が使いやすいかもしれません。TSVファイルなのでExcelなどの表計算ソフトで同義語を編集できます。組み込みのクエリー展開機能では、Groongaのテーブルとして同義語を管理します。
7.10.1.2. インストール#
QueryExpanderTSV
を使う前に query_expanders/tsv
をプラグインとして登録します:
plugin_register query_expanders/tsv
7.10.1.3. 使い方#
select
コマンドに --query_expander QueryExpanderTSV
パラメーターを追加します:
select --query "QUERY" --query_expander QueryExpanderTSV
QUERY
内に登録済みの同義語がある場合はそれらが展開されます。例えば、以下の同義語があるとします。
単語 |
同義語1 |
同義語2 |
---|---|---|
groonga |
groonga |
Senna |
mroonga |
mroonga |
groonga MySQL |
この表は、 単語
の同義語は 同義語1
と 同義語2
という意味です。例えば、 groonga
の同義語は groonga
と Senna
です。また、 mroonga
の同義語は mroonga
と groonga MySQL
です。
クエリーが groonga
のときのクエリー展開の例です:
select --query "groonga" --query_expander QueryExpanderTSV
上記のコマンドは以下のコマンドと同じ意味です:
select --query "groonga OR Senna" --query_expander QueryExpanderTSV
クエリーが mroonga search
のときのクエリー展開の例です:
select --query "mroonga search" --query_expander QueryExpanderTSV
上記のコマンドは以下のコマンドと同じ意味です:
select --query "(mroonga OR (groonga MySQL)) search" --query_expander QueryExpanderTSV
登録されている単語だけ(ここでは groonga
と mroonga
)クエリー展開されて、登録されていない単語(ここでは search
)はクエリー展開されていないことが大事なポイントです。また、再帰的にクエリー展開しません。クエリー展開した結果の (mroonga OR (groonga MySQL))
の中に groonga
がありますが、これは展開されません。
通常、同義語の中に 単語
自身も含める必要があります。例えば、 groonga
と mroonga
が同義語の中に含まれています。もし、 単語
自身を無視したい場合は同義語の中に 単語
を含めないでください。例えば、クエリー展開機能をスペル訂正機能として使う場合は、以下のような同義語を使ってください。
単語 |
同義語 |
---|---|
gronga |
groonga |
単語
の gronga
には誤字があります。 o
がひとつ足りません。 同義語
の groonga
が正しい単語です。
スペル訂正機能としてクエリー展開機能を使う例です:
select --query "gronga" --query_expander QueryExpanderTSV
上記のコマンドは以下のコマンドと同じ意味です:
select --query "groonga" --query_expander QueryExpanderTSV
前者のコマンドは --query
の値に誤字がありますが、後者のコマンドは誤字がありません。
7.10.1.4. TSVファイル#
同義語はTSVフォーマットのファイルで定義します。このセクションでは定義方法について説明します。
7.10.1.4.1. 場所#
TSVファイルのファイル名は synonyms.tsv
で、設定ディレクトリに置かなければいけません。例えば、 /etc/groonga/synonyms.tsv
がTSVファイルの場所になります。場所はビルド時に決まります。
環境変数 GRN_QUERY_EXPANDER_TSV_SYNONYMS_FILE
を指定することで実行時に場所を変更することもできます:
% env GRN_QUERY_EXPANDER_TSV_SYNONYMS_FILE=/tmp/synonyms.tsv groonga
上述のコマンドでは /tmp/synonyms.tsv
ファイルが使われます。
7.10.1.4.2. フォーマット#
TSVファイル内に0個以上の同義語を定義することができます。1行につき 単語
と 同義語リスト
のペアを定義します。 --query
の値の中にでてきた 単語
は 同義語リスト
に展開されます。 同義語リスト
は OR
でまとめます。例えば、同義語リスト groonga
と Senna
は groonga OR Senna
と展開されます。
最初のカラムが 単語
で、残りのカラムが 単語
の 同義語リスト
になります。以下は、 単語
が groonga
で、 同義語リスト
が groonga
と synonyms
の例です。 (TAB)
はタブ文字( U+0009
)という意味です:
groonga(TAB)groonga(TAB)Senna
コメント行をサポートしています。 #
から始まる行は無視します。以下はコメント行の例です。 groonga
とある行はコメント行として無視されます:
#groonga(TAB)groonga(TAB)Senna
mroonga(TAB)mroonga(TAB)groonga MySQL
7.10.1.5. 制限#
同義語を再読み込みするにはgroongaを再起動する必要があります。TSVファイルはプラグイン読み込み時に一度だけ読み込みます。
7.10.1.6. 参考#
詳細については query_expander を参照してください。