我收到的結果很難理解。我希望有人能夠對這個問題提出一些看法。全文搜索Mysql - 不合邏輯的行爲
我有一個非常簡單的表在MySQL:
id| text 1 | testA testB testC 2 | testA testB
當我運行以下查詢:
SELECT id, MATCH (text) AGAINST ('+(+testA testB) +testC' IN BOOLEAN MODE) as score FROM test_fulltext
我得到以下不正確的結果(請注意,第二行應該返回0)
id| score 1 | 1,1666667461395 2 | 0,66666668653488
但是,當我運行稍微修改版本的查詢(在t之前沒有'+'符號ESTA):
SELECT id, MATCH (text) AGAINST ('+(testA testB) +testC' IN BOOLEAN MODE) as score FROM test_fulltext
我得到正確的結果:
id| score 1 | 1,3333333730698 2 | 0
你有,爲什麼第一個查詢的第二行匹配的任何想法? 它在mysql 4.1和5.0.5上都有。
你知道我在哪裏可以找到解析全文查詢的源代碼嗎? 或解釋如何計算的任何其他信息來源。歡迎任何幫助。
您可以從mysql網站下載源代碼(只需選擇'source'而不是os/distribution),邏輯位於'storage/myisam/ft_parser.c' – Wrikken 2010-08-05 17:02:37
@wrikken謝謝! – 2010-08-05 20:22:07