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の方でソートしていました。
を、後方互換性とか問答無用で修正したのと同じでいいんじゃないか、と思います。
むしろ、どうしても以前の挙動(+とか-が実は絶対じゃない)でないと困る人は
いるのでしょうか?
かずひこ