.. highlightlang:: none

.. groonga-command
.. table_remove PatPre

主キーによる前方一致検索
========================

groongaのテーブルは、テーブル作成時にパトリシア木オプションを指定すると、前方一致検索を行うことができます。また、追加のオプションを指定することにより、主キーの後方一致検索をも行うことができます。

主キーによる前方一致検索
------------------------

table_createコマンドのflagsオプションにTABLE_PAT_KEYを指定することで、主キーによる前方一致検索ができるようになります。

.. groonga-command
.. include:: ../example/tutorial08-1.log
..
   table_create --name PatPre --flags TABLE_PAT_KEY --key_type ShortText
   load --table PatPre
   [
   {"_key":"ひろゆき"},
   {"_key":"まろゆき"},
   {"_key":"ひろあき"}
   ]
   select --table PatPre --query _key:@ひろ

.. #主キーによる後方一致検索
.. #------------------------
.. #
.. #table_createコマンドのflagsオプションにTABLE_PAT_KEYとKEY_WITH_SISを指定することで、主キーによる前方一致検索・後方一致検索の両方が可能となります。
.. #
.. #KEY_WITH_SISフラグを付与すると、データを追加する際に後方一致用のレコードまで追加されてしまいます。カラムに
.. #
.. #そのレコードとの区別をつけるためにflagカラムを追加しています。
.. #
.. #実行例 ::
.. #
.. # > table_create --name PatSuf --flags TABLE_PAT_KEY|KEY_WITH_SIS --key_type ShortText
.. # [[0,1270635931.03862,0.00379]]
.. # > column_create --table PatSuf --name original --type UInt8
.. # [[0,1270635969.35514,0.013933]]
.. # > load --table PatSuf
.. # > [
.. # > {"_key":"ひろゆき","original":1},
.. # > {"_key":"まろゆき","original":1},
.. # > {"_key":"ひろあき","original":1}
.. # > ]
.. # [[0,1270635973.61015,0.062957],3]
.. # > select --table PatSuf --query _key:@ゆき
.. # [[0,1270635977.04008,0.000461],[[[4],[["_id","UInt32"],["_key","ShortText"],["original","UInt8"]],[1,"ひろゆき",1],[5,"まろゆき",1],[3,"ゆき",0],[2,"ろゆき",0]]]]
.. # > select --table PatSuf --query "_key:@ゆき + original:1"
.. # [[0,1270636044.85414,0.000443],[[[2],[["_id","UInt32"],["_key","ShortText"],["original","UInt8"]],[1,"ひろゆき",1],[5,"まろゆき",1]]]]
