yukio ishi
ishi.****@gmail*****
2007年 8月 8日 (水) 17:43:00 JST
こんにちは、石野です。お世話になります。
Senna+mysql+tritonnで、medab辞書の単語をDORの後に連結して、DBに蓄積してあったデータを検索しているのですが、
mysql> SELECT count(*) FROM table_name WHERE MATCH(column_name)
AGAINST('*DOR 単語1 単語2 単語3 ... 略 ' in boolean mode);
この連結する単語数を多くしていくと、単語1などがテーブルに存在していても検索結果が0件になってしまいます。
mecab辞書で試した場合は、
1000単語のOR:12件ヒット
5000単語のOR:0件
10000単語のOR:0件
という結果でした。
文字列長に制限があるのかと思い、以下のように試してみたところ
mysql> SELECT count(*) FROM table_name WHERE MATCH(column_name)
AGAINST('*DOR 単語1 単語2 ランダム値 ランダム値 ... 略 ' in boolean mode);
こちらは10000単語(文字列長は先ほどより長め)でも正常にヒットしました。
ご存知の方いらっしゃいましたらご教授願えませんでしょうか。どうぞよろしくお願い致します。
■動作環境
Linux kernel 2.4.20
mysql-4.1.22
senna-1.0.4
tritonn-1.0.2.mysql-4.1.22.senna-1.0.4
テーブルはNGRAMで作成
--
ishi.yukio [at] gmail.com