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*****>