我有一个产品表,其中包含以下数据:
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/