0

我有一个网站的本地开发版本,我正在为其编写搜索功能并遇到问题,即我在 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)

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

我比较了每个字符集的 xml 文件,它们是相同的。我不相信服务器源代码已被更改和重新编译。这是基于我在这里读到的:http: //dev.mysql.com/doc/refman/5.5/en/fulltext-fine-tuning.html

我曾认为默认行为是斜杠将被视为空格或单词分隔字符或其他字符。

任何人都阐明了为什么他们可能会有所不同?

4

1 回答 1

0

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

ft_min_word_len = 3

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

于 2014-11-06T11:37:40.280 回答