Mysql全文搜索完全匹配不按预期工作

时间:2014-09-21 08:21:20

标签: mysql sql full-text-search

我有一个包含这些数据的产品表:

         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

任何人都知道为什么?

1 个答案:

答案 0 :(得分:1)

MySQL全文索引的默认字长为4个字符。您应该尝试将其更改为1个字符。为此,请将以下设置添加到[mysqld]部分中的my.ini文件中:

ft_min_word_len=1

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