我有一个产品表,其中包含以下数据:

         name           |
-------------------------
Nokia X 4GB Nokia X 3G  |
Nokia X 4GB 3G          |
Nokia XL 4GB Nokia X 3G |
Nokia XL 4GB Nokia X 3G |
Nokia Asha 512          |
Nokia Lumia 925         |
Nokia Asha 306 2GB      |
....

然后当我运行此查询时:
 SELECT name,
 MATCH(name) AGAINST('+Nokia +X +4GB +3G' IN BOOLEAN MODE ) AS rank
 FROM products as p
 ORDER BY rank DESC limit 4;

它应该返回表中的前4个结果,但我看到它返回
Nokia Asha 309 A00008390
Nokia Asha 306 2GB

有人知道为什么吗?

最佳答案

MySQL全文索引的默认字长为4个字符。你应该试着把它改成1个字符。为此,请在[mysqld]部分的my.ini文件中添加以下设置:

ft_min_word_len=1

然后重新启动MySQL服务器,然后删除并重新创建全文索引以重新生成它。

关于mysql - MySQL全文搜索完全匹配无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25957277/

10-10 02:47