Kouhei Sutou
kou****@clear*****
2016年 2月 18日 (木) 09:56:36 JST
須藤です。 In <CANUhGj1hMj+UEAF=jrcN7****@mail*****> "[groonga-dev,03941] Re: ベクターカラムの全文検索について" on Thu, 18 Feb 2016 09:09:13 +0900, Seto Ryuta <rseto****@gmail*****> wrote: > ベクターカラムのタグ検索(一致検索)とドリルダウンは、以下のような形で参照テーブルを使っていたのですが、 > 同じような設定で全文検索をしようとすると語彙表にデータが登録されなかったため、質問をさせていただきました。 > (スキーマのどこかが間違っていると思うのですが。。。) > ベクターカラムの全文検索についてはShortTextを型として利用することに致します。ありがとうございました。 参照型の(ベクター)カラムの値に対して全文検索する場合は「ネ ストした検索」機能を使う必要があります。(もっとパッとした名 前があるといいなぁと思っています。。。) ドキュメントではここらへんで触れられているやつです。 http://groonga.org/ja/docs/tutorial/match_columns.html#nested-index-search-among-related-table-by-column-index 今回の例だと↓のようにすると使えます。 ポイントは * Vector._keyに対して全文検索用のインデックスを作ること * VectorにEntry.vectorに対するインデックスを作ること * 検索するときはvector._key @ "..."とすること です。 一番大事なことは真ん中の「VectorにEntry.vectorに対するインデッ クスを作ること」です。これにより、Vector._keyでヒットした要 素を含むEntryのレコードを見つけることができるようになります。 このあたりの動きは絵を描くとわかりやすいんですよねぇ。 「Groongaで学ぶ全文検索 2016-02-26」 https://groonga.doorkeeper.jp/events/39274 に来てもらえれば絵を描いて説明します。 あ、そういえば、今回は19:30から開場していて、20:00前に来た人 向けに個別に相談を受け付ける予定です。 -- table_create Entry TABLE_HASH_KEY ShortText table_create Vector TABLE_PAT_KEY ShortText column_create Entry vector COLUMN_VECTOR Vector table_create BigramTerms TABLE_PAT_KEY ShortText \ --default_tokenizer TokenBigramSplitSymbolAlpha \ --normalizer NormalizerAuto column_create BigramTerms vector_key COLUMN_INDEX|WITH_POSITION Vector _key column_create Vector entry_vector COLUMN_INDEX Entry vector load --table Entry [ {"_key":1, "vector":["Head First Groonga", "Head First Mroonga"]}, {"_key":2, "vector":["Head First Mroonga", "Head First Rroonga"]} ] select --table Entry --filter 'vector._key @ "Rroonga"' --output_pretty yes # [ # [ # 0, # 1455756640.40757, # 0.000497341156005859 # ], # [ # [ # [ # 1 # ], # [ # [ # "_id", # "UInt32" # ], # [ # "_key", # "ShortText" # ], # [ # "vector", # "Vector" # ] # ], # [ # 2, # "2", # [ # "Head First Mroonga", # "Head First Rroonga" # ] # ] # ] # ] # ] -- -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> Groongaベースの全文検索システムを総合サポート: http://groonga.org/ja/support/ パッチ採用 - プログラミングが楽しい人向けの採用プロセス: http://www.clear-code.com/recruitment/ リーダブルコードワークショップ: http://www.clear-code.com/services/code-reader/readable-code-workshop.html