我得到了难以理解的结果。我希望有人能够对这个问题有所了解。
我在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上都这样做。
您知道在哪里可以找到解析全文查询的源代码吗? 或任何其他信息来源,解释如何计算。欢迎任何帮助。