[groonga-dev,02863] Re: BOOLEAN MODEの+とか-の意味

Back to archive index

Kazuhiko kazuh****@fdiar*****
2014年 10月 24日 (金) 18:24:36 JST


かずひこです。

On 24/10/2014 10:52, Kouhei Sutou wrote:
> できれば、他の人にも次の観点で確認して欲しいんですが、
> Mroongaを使っている人は協力してもらえませんか?
> 
>   * MySQLのドキュメントが示す挙動と同じ挙動か
>     (網羅的だとうれしい)
>   * MyISAMの挙動と同じ挙動か
>     (網羅的だとうれしい。スコアの値の多い少ないは関係ない。)
>   * InnoDBの挙動と同じ挙動か
>     (網羅的だとうれしい。スコアの値の多い少ないは関係ない。)

実はMariaDB 10.0.14にはすでにInnoDB FTSが入っていたので、MyISAMと同様に
ドキュメント通り(+と-は絶対!)なのを確認しました。

* InnoDB FTS

SELECT title, MATCH (title) AGAINST('+quick fox dog white' IN BOOLEAN
MODE) AS score FROM books;
+---------------------------------------------+---------------------+
| title                                       | score               |
+---------------------------------------------+---------------------+
| Quick brown fox jumps over the lazy dog.    | 0.09061906486749649 |
| Slow white fox jumps over the diligent dog. |                   0 |
+---------------------------------------------+---------------------+

SELECT title, MATCH (title) AGAINST('fox dog brown -quick' IN BOOLEAN
MODE) AS score FROM books;
+---------------------------------------------+----------------------------+
| title                                       | score                      |
+---------------------------------------------+----------------------------+
| Quick brown fox jumps over the lazy dog.    |                          0 |
| Slow white fox jumps over the diligent dog. | 0.000000003771856604828372 |
+---------------------------------------------+----------------------------+

> が!自分でパッチ当ててビルドして動かしてみてね、は敷居が高い
> ですよねぇ。変数で挙動を切り替えられるようにしておくといいの
> かしら。
> 
> あ、この変更は後方互換性が壊れるので、4.X系にはいれないです。
> 変数で切り替えられるようにしても、デフォルトではこれまでと同
> じ挙動にします。
> 
> 変更するにしても5.00をリリースしたタイミングになります。

まあ、確かに以前と非互換ではありますが、Mroongaのドキュメントにだって
mustとかmust notと書いてあるのだから、私は挙動を切り替える変数など無く修
正していいレベルの不具合だと思います。

ドキュメントと挙動が違う!の最近の例で言うと、
> Mronnga を検証しておりまして、ドキュメントに記載されている内容と異なる挙動がありました。
> 
> http://mroonga.org/ja/docs/reference/full_text_search/scoring.html
> に記載されている、「4.重みが大きい上位N個のトークンを取り出す」のステップで、「明日」だけが残るという認識なのですが、
> 実際は、「天気」も対象になっているようです。
(snip)
> すみません。これはプログラムの方がバグっています。
> わざわざIDF値を計算した挙げ句にトークンIDの方でソートしていました。
を、後方互換性とか問答無用で修正したのと同じでいいんじゃないか、と思います。

むしろ、どうしても以前の挙動(+とか-が実は絶対じゃない)でないと困る人は
いるのでしょうか?

かずひこ




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