[Senna-dev 919] Re: NGRAMインデックスを利用している場合のキーワードマッチ条件について

Back to archive index

Tasuku SUENAGA a****@razil*****
2008年 6月 14日 (土) 23:05:30 JST


Tritonnのデフォルトでは、
アルファベット・数字・記号の場合はbi-gramではなく、
tokenでインデックス作成を行うように設定されています。

一般的な用途である、文章を検索する目的に最適化するためです。

前方一致だけでよければ、以下の手法が使えます。
1. '*D-7'をクエリに指定することによって、
   前方一致の検索はできると思います。
  MATCH(col1) AGASINST('*D-7 ca' IN BOOLEAN MODE);

完全に一致させたいのであれば、以下の手法が使えます。
2. インデックス作成時に、SPLIT_ALPHA, SPLIT_DIGIT, SPLIT_SYMBOL
   を指定してください。
   CREATE FULLTEXT INDEX ft
    USING NGRAM, SPLIT_ALPHA, SPLIT_DIGIT, SPLIT_SYMBOL
    ON table1 (col1);

Haruhiko Mitsuya さんは書きました:
> お世話になっております。みつやと申します。
> 
> Senna(Tritonn)のNGRAMインデックスを利用している場合の
> キーワードマッチ条件について調べております。
> 
> 
> 
> 今のところ、最新のTritton1.0.9の設定を規定値で動作させております。
> 
> インデックスも規定値で作成していますので、n-gram(Sennaの規定値で
> おそらくbigram?)形式になっているはずです。
> 
> 
> n-gramであればmecabで動作させている場合にくらべて、辞書に無い
> キーワードでもヒットし易いはずと考えておりました。
> 
> 
> ところが、英単語の一部分などで検索をかけると、結構な割合で検索
> 漏れが発生してしまいます。
> 
> 例えば、
> 
> cards
> audio
> 
> では検索ヒットしますが、
> 
> 
> ca
> aud
> 
> 
> ではヒットしません。
> 
> 
> 
> TCD-12
> KH-Y54
> 
> 
> このようなありがちな製品IDのような文字列もヒットしたり、ヒット
> しなかったりします。
> 
> 
> 
> 
> [Senna-dev 664] NGRAM での英数字の部分一致検索について
> http://lists.sourceforge.jp/mailman/archives/senna-dev/2007-August/000663.html
> 
> 
> ここでも説明されているように、純粋にn-gram化されているわけではない
> ように感じられるのですが、規定値の動作としては、実際のところどのような
> 仕様になっているのでしょうか。
> 
> 
> ※公式サイトなどを探してみましたが、そのものズバリと思えるような解説
> ページなどは見つけられませんでした。。
> 
> 
> もし、どなたかご教示頂けましたら誠に幸いです。
---
tasuku <a****@razil*****>




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