我有一个网站的本地开发版本,我正在为它编写搜索函数,但遇到了一个问题,我在电脑上得到的结果与服务器不同。问题在于数据中有一个斜线。例如,该字段包含类似的内容
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。我电脑上的数据作为来自服务器的转储。两者都使用相同的字符集。MySQL版本不同,PC:5.3.59,Server:5.1.73-1-log,但我认为这不会有什么不同?
我比较了每个上的字符集xml文件,它们是相同的。我认为服务器源代码根本没有被更改和重新编译。这是基于我在这里读到的内容:http://dev.mysql.com/doc/refman/5.5/en/fulltext-fine-tuning.html
我本以为这种情况的默认行为是将斜杠视为空格或单词分隔符或其他字符。
有人解释了为什么他们会有所不同吗?
我找到了原因,我专注于斜杠问题,但真正的原因是ft_min_word_len mysql系统变量。默认值为4,但服务器为3。我在电脑上编辑了my.ini文件,并添加了
ft_min_word_len = 3
重新启动mysql并重新索引数据,现在它显示出与服务器相同的结果。