我有一个包含这些数据的产品表:
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
任何人都知道为什么?
答案 0 :(得分:1)
MySQL全文索引的默认字长为4个字符。您应该尝试将其更改为1个字符。为此,请将以下设置添加到[mysqld]
部分中的my.ini文件中:
ft_min_word_len=1
然后重启MySQL服务器,然后删除然后重新创建全文索引以重建它。