[Tritonn-dev 134] Re: "word*"という検索式の意味

アーカイブの一覧に戻る

Kazuhiko kazuh****@fdiar*****
2009年 9月 7日 (月) 17:43:06 JST


こんにちは、かずひこです。

morit****@razil***** wrote:
> "*"が付いているクエリのハンドリングに不備があるようです。
> 
> 直した方がいいですよねぇ・・・。

お返事ありがとうございます。

MySQLと連動してバリバリ使う、というこちらのユースケースでは、Sennaがまだ
まだ現役なのです。

このバグをふんだ経緯を補足します。

他のコンディション付きで"garra"で全文検索するとヒットせず、"garrah"で全
文検索するとヒットして、何故だ?と思って調べてみると、"garra"がexactマッ
チする文書があって、それが他のコンディションを満たさなかったため、「完全
一致→非わかち書き→部分一致」という切り替えが行われていませんでした。
一方、"garrah"の場合は、exactマッチする文書が無かったので、「完全一致→非
わかち書き→部分一致」という切り替えが行われて、garrahanを含む文書を見つ
けてくれました。

なので、こういうケースでは"garra*"で検索すればいいのかな? と思って試し
た次第です。

"*E"プラグマをいじって対応するというワークアラウンドも検討したのですが、
上記のように「Sennaの全文検索では(*Eプラグマの数値1以上の件数)exact
ヒットするけれど、他のコンディションを満たさない」というケースでは、「完
全一致→非わかち書き→部分一致」と切り替えてくれないので、そうなると常に-5
とか-7とかにするしかなく、それはパフォーマンスに対する影響が大きすぎそう
でちょっと躊躇します。

「完全一致→非わかち書き→部分一致」の切り替えが、全文検索の結果だけでな
く、クエリ全体の結果に応じて切り替わればいいのですが、これはバグではなく
て仕様、でしょうか?

どうぞよろしくお願いします。

かずひこ




Tritonn-dev メーリングリストの案内
アーカイブの一覧に戻る