[groonga-dev,02818] Re: IN NATURAL LANGUAGE MODEにおける検索スコア

Back to archive index

Kazuhiko kazuh****@fdiar*****
2014年 9月 26日 (金) 22:45:39 JST


On 26/09/2014 13:57, Kouhei Sutou wrote:
> In <54252****@fdiar*****>
>   "[groonga-dev,02816] Re: IN NATURAL LANGUAGE MODEにおける検索スコア" on Fri, 26 Sep 2014 10:50:23 +0200,
>   Kazuhiko <kazuh****@fdiar*****> wrote:
> 
>>> 「boolean」ってスコアは小さめっていう意味合いもあったんでし
>>> たっけ。私は、ANDとかORを使って検索できる、っていう意味なの
>>> かなぁと思っていました。
>>
>> boolean、つまり「あったらTrue、なかったらFalse」で、Trueの数を返すものだ
>> と思っていました。少なくともMyISAMだとそうです。
> 
> それでORは説明できると思いますが、ANDが説明できないような。。。

おっしゃるとおり。。。
ということは、「natural language modeでは期待されるスコアとして類似度が
考えられるが、boolean modeでは0かそうでないかが返ることが重要で、スコア
の値にそれ以上の何が期待されるかはよくわからない」ということでしょうか。

それでも、Mroongaのboolean modeでは「各キーワードが出現した数の合計、た
だしANDやNOT等の条件を満たさない場合は無条件にゼロ」みたいに何らかの仕様
が明記してあると安心して利用できる気がします。もちろん、「0かそうでない
か以上の意味は期待できない」という仕様もありでしょう。その場合は、「じゃ
あ、ソートしなくていいね」という判断ができますし。

>>> もしかしたら、なんですけど、かずひこさんが求めている挙動って
>>>
>>>   "word1 word2 word3" IN BOOLEAN MODE
>>>
>>> (word1 OR word2 OR word3)だったりしないかなぁと思いました。
>>
>> 求めている挙動は、「適当にキーワードを多めにつっこんだら、いい感じのスコ
>> アでソートされて返ってくる」です。
>>
>> 上述の仕様の違いで、Mroonga in boolean modeは、MyISAM in boolean modeよ
>> りはましな結果になりそうですが、やっぱりキーワードごとの重みが考慮される
>> ほうが「いい感じのスコアでソート」になりそうなので、(word1 OR word2 OR
>> word3)だとあまり嬉しくありません。以下、比較実験しました。
> 
> 例を示してくれてありがとうございます!
> ただ、この例だとどのcontentが上位にくるのが妥当なのかわから
> ないので、「望ましい挙動」がわからないなぁと思いました。
> 「fine tomorrow bell」で検索したら「Ring the bell.」が一番上
> 位になってうれしい。。。の?みたいな感じです。

まあ、あれは例が極端なので、bellだけが突出して高い重みを持ってしまってい
ますが、でも「TD-IDFはそういうもの」なんじゃないでしょうか。 :)

かずひこ




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