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