【问题标题】:MySQL Match Against giving 2 different results on 2 serversMySQL Match Against 在 2 个服务器上给出 2 个不同的结果
【发布时间】:2015-01-01 19:51:42
【问题描述】:

我有一个网站的本地开发版本,我正在编写搜索功能并遇到问题,我在 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,但我认为这不会有所不同?

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

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

有人解释了为什么他们可能会有所不同吗?

【问题讨论】:

    标签: mysql match against


    【解决方案1】:

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

    ft_min_word_len = 3
    

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

    【讨论】:

      猜你喜欢
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 2011-09-15
      • 1970-01-01
      相关资源
      最近更新 更多