[groonga-dev,03941] Re: ベクターカラムの全文検索について

Back to archive index

Seto Ryuta rseto****@gmail*****
2016年 2月 18日 (木) 09:09:13 JST


瀬戸です。

村上さん、ありがとうございます。
ベクターカラムのタグ検索(一致検索)とドリルダウンは、以下のような形で参照テーブルを使っていたのですが、
同じような設定で全文検索をしようとすると語彙表にデータが登録されなかったため、質問をさせていただきました。
(スキーマのどこかが間違っていると思うのですが。。。)
ベクターカラムの全文検索についてはShortTextを型として利用することに致します。ありがとうございました。

・タグ検索
table_create Entry TABLE_HASH_KEY ShortText
table_create Vector TABLE_HASH_KEY ShortText
column_create Entry vector COLUMN_VECTOR Vector
column_create Vector entry 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@"Head First Groonga"'
[[0,1455753028.75039,0.00267195701599121],[[[1],[["_id","UInt32"],["_key","ShortText"],["vector","Vector"]],[1,"1",["Head
First Groonga","Head First Mroonga"]]]]]

・全文検索で参照テーブルを使った場合
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 entry_vector COLUMN_INDEX|WITH_POSITION 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 BigramTerms
[[0,1455753397.86934,0.00184440612792969],[[[0],[["_id","UInt32"],["_key","ShortText"],["entry_vector","UInt32"]]]]]
> select --table Entry --match_columns BigramTerms.entry_vector --query
"Mroonga"
[[0,1455753456.73035,0.013195276260376],[[[0],[["_id","UInt32"],["_key","ShortText"],["vector","Vector"]]]]]



2016-02-17 20:54 GMT+09:00 Naoya Murakami <visio****@gmail*****>:

> 村上と申します。
>
> 2016年2月17日 16:22 Seto Ryuta <rseto****@gmail*****>:
>
>> お世話になっております。瀬戸と申します。
>>
>> Groongaのベクターカラムを対象とした全文検索について質問があります。
>> 以下の設定で語彙表ができ、全文検索ができることがわかりました。
>> しかし、Groongaのドキュメントには、「ShortText, Text,
>> LongTextの3つの型についてはベクターとして保存したり出力したりすることはできますが、検索条件やドリルダウン条件に指定することができません。」
>> という記述があります。
>> ( http://groonga.org/ja/docs/reference/types.html#limitations-about-types
>> )
>>
>> 上記のような検索はしないほうが良いのでしょうか?
>> ご教示いただければ幸いです。
>> ( Groongaは5.1.2を使っています。 )
>>
>>
> 問題ないと思います。
> Groongaではベクターを指定してもちゃんとBigramにトークナイズ
> してくれて、転置索引を使って高速に検索できます。
>
> 昔はインデックスを使わない検索ができなかったようですが、
> 今はインデックス無しでもfilterならシーケンシャルでも一致検索は
> できるようです。queryは今もできなそうです。
> http://groonga.org/ja/blog/2015/07/29/release.html
>
> ドリルダウンもできると思います。
> ただし、数値型のドリルダウンに比べて遅いと思います。
> 参照型ベクター(テーブル型)の形にしておけば、テキストでも
> 高速にドリルダウンできます。
>
> 参考
> http://qiita.com/groonga/items/3b41893f3fe5230f5b1f
>
> column_create BigramTerms entry_vector
>> COLUMN_INDEX|WITH_SECTION|WITH_POSITION Entry vector
>>
>
> 余談ですが、インデックス対象のカラムを複数にする必要がなければ、
> WITH_SECTIONはなくても大丈夫です。
>
>
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.osdn.me/mailman/listinfo/groonga-dev
>
>


-- 
-----------------------------------------------------------
瀬戸隆太
E-mail: rseto****@gmail*****
-----------------------------------------------------------
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
Download 



groonga-dev メーリングリストの案内
Back to archive index