[groonga-dev,02138] Mroonga 3.12以降のWプラグマで期待するスコアが取れない

yoku ts. yoku0****@gmail*****
2014年 2月 19日 (水) 15:35:19 JST


こんにちは、yoku0825といいます。

https://gist.github.com/yoku0825/9087000

3.11と3.12の間で、MATCH .. AGAINST ..の値を数値で出力させたとき、
Wプラグマ周りの動作がおかしいような気がします。
(3.11はWプラグマなしのスコアと各列のWプラグマありのスコアの和が一致するので、こっちが正しい気がします)

ご確認いただければ幸いです。


ちなみに、Mroonga 3.12でWプラグマの動作が変わったタイミング以降どうも検索結果がおかしくなっていて、

↓のようなクエリーで
mysql> SELECT COUNT(*) FROM t1 WHERE MATCH (c1, c2, c3, c4, c5, c6,
c7, c8, c9, c10) AGAINST ('*W1,2,3,4,5,6,7,8,9,10 +さようなら' IN BOOLEAN
MODE)\G
*************************** 1. row ***************************
COUNT(*): 6
1 row in set (0.02 sec)

3.11までは1003件HITしていたものが、何故か6件になっています。
(オフセットは3.12にあわせて書き変えてあります。
 3.11までのAGAINSTの中身は '*W0,1,2,3,4,5,6,7,8,9 +さようなら'でした)

この状態で、c10カラムの指定をはずしてやると、従来どおり1003件HITします。
(c10カラムにはもともと"さようなら"にマッチする値が格納されていないので、
 結果の件数は変わらない、が本来正しい動作です)

mysql> SELECT COUNT(*) FROM t1 WHERE MATCH (c1, c2, c3, c4, c5, c6,
c7, c8, c9, c10) AGAINST ('*W1,2,3,4,5,6,7,8,9 +さようなら' IN BOOLEAN
MODE)\G
*************************** 1. row ***************************
COUNT(*): 1003
1 row in set (0.02 sec)

Wプラグマの指定を外しても1003件です。

mysql> SELECT COUNT(*) FROM t1 WHERE MATCH (c1, c2, c3, c4, c5, c6,
c7, c8, c9, c10) AGAINST ('+さようなら' IN BOOLEAN MODE)\G
*************************** 1. row ***************************
COUNT(*): 1003
1 row in set (0.01 sec)

ということで、何か変? と思って切り分けようとスコアを計算させてみたら取れなかった、というのがまずの経緯です。。
よろしくお願いします。


/* yoku0825 */




groonga-dev メーリングリストの案内