.. -*- rst -*- .. highlightlang:: none .. groonga-command .. database: tutorial-patricia-trie パトリシア木による前方一致検索 ============================== groongaのテーブルは、テーブル作成時にパトリシア木オプションを指定すると、前方一致検索を行うことができます。また、追加のオプションを指定することにより、主キーの後方一致検索をも行うことができます。 主キーによる前方一致検索 ------------------------ table_createコマンドのflagsオプションにTABLE_PAT_KEYを指定することで、主キーによる前方一致検索ができるようになります。 .. groonga-command .. include:: ../example/tutorial/patricia_trie-1.log .. .. table_create --name PatPrefix --flags TABLE_PAT_KEY --key_type ShortText .. load --table PatPrefix .. [ .. {"_key":"ひろゆき"}, .. {"_key":"まろゆき"}, .. {"_key":"ひろあき"}, .. {"_key":"ゆきひろ"} .. ] .. select --table PatPrefix --query _key:^ひろ 主キーによる後方一致検索 ------------------------ table_createコマンドのflagsオプションにTABLE_PAT_KEYとKEY_WITH_SISを指定することで、主キーによる前方一致検索・後方一致検索の両方が可能となります。 KEY_WITH_SISフラグを付与すると、データを追加する際に後方一致用のレコードも追加されてしまいます。そのため、単純に検索すると、元のレコードに加えて自動的に追加されたレコードまでヒットしてしまいます。元のレコードのみ検索するために、一工夫必要になります。 例えば、元のレコードと自動的に追加されたレコードとの区別をつけるために、元のレコードであることを示すoriginalカラムを追加して、検索時にはoriginalカラムが ``true`` も検索条件に加えます。 ``--query`` オプションでは ``Bool`` 型の値を直感的に指定することができないので ``--filter`` オプションを使っていることに注意してください。 .. groonga-command .. include:: ../example/tutorial/patricia_trie-2.log .. .. table_create --name PatSuffix --flags TABLE_PAT_KEY|KEY_WITH_SIS --key_type ShortText .. column_create --table PatSuffix --name original --type Bool .. load --table PatSuffix .. [ .. {"_key":"ひろゆき","original":true}, .. {"_key":"まろゆき","original":true}, .. {"_key":"ひろあき","original":true}, .. {"_key":"ゆきひろ","original":true} .. ] .. select --table PatSuffix --query _key:$ゆき .. select --table PatSuffix --filter '_key @$ "ゆき" && original == true'