MySQL匹配在2台服务器上提供2个不同的结果

时间:2014-11-05 15:00:55

标签: mysql match against

我有一个网站的本地开发版本,我正在为搜索功能编码并遇到一个问题,我在PC上得到的结果与服务器不同。问题在于数据中存在斜线。例如,该字段包含类似

的内容
Amazing Product Name/Exp

在两台服务器上运行以下查询:

SELECT name, MATCH(name) AGAINST('amazing,name,exp' IN BOOLEAN MODE) AS relevance 
FROM `product_description` 
WHERE MATCH(name) AGAINST('amazing,name,exp' IN BOOLEAN MODE)

在我的电脑上,相关性字段显示2,而在服务器上,它显示3应该是。我的PC上的数据是来自服务器的转储。两者都使用相同的字符集。虽然MySQL版本不同,PC:5.5.39,服务器:5.1.73-1-log但我不认为这会有所作为吗?

我比较了每个上的charset xml文件,它们是相同的。我不相信服务器源代码已被更改并重新编译。这是基于我在此处阅读的内容:http://dev.mysql.com/doc/refman/5.5/en/fulltext-fine-tuning.html

我认为这样做的默认行为是将斜杠视为空格或单词分隔符或其他任何内容。

有人说明他们为什么会有所不同?

1 个答案:

答案 0 :(得分:0)

我找到了原因,我专注于斜线是问题,但真正的原因是ft_min_word_len mysql系统变量。默认值为4,但服务器为3.我在PC上编辑了my.ini文件并添加了

ft_min_word_len = 3

重新启动mysql并重新编制数据索引,现在它显示的结果与服务器相同。