Mysql中的全文搜索 - 不合逻辑的行为

时间:2010-08-05 16:21:47

标签: mysql full-text-search

我得到了难以理解的结果。我希望有人能够对这个问题有所了解。

我在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

但是当我运行稍微修改的查询版本时(在testA之前没有'+'符号):

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上都这样做。

您知道在哪里可以找到解析全文查询的源代码吗? 或任何其他信息来源,解释如何计算。欢迎任何帮助。

2 个答案:

答案 0 :(得分:1)

似乎它是所有版本的mysql中存在的已知错误。 http://bugs.mysql.com/bug.php?id=36384

答案 1 :(得分:0)