使用以下查询来搜索产品数据库。它在我们的后端中用于查找要编辑的产品,以下搜索词和查询工作正常。
搜索词:欧元等级
SELECT * FROM product_descriptions WHERE MATCH(product_name) AGAINST('"+euro* +grade*"' IN BOOLEAN MODE) LIMIT 10
输出:
product id product_name price
1 Euro Grade 20k 200.00
2 Euro Grade 30k 300.00
3 Euro Grade 40k 400.00
但是,如果我们想在搜索查询中使用整数进行搜索,它将不会返回结果
搜索词:欧元等级 40k
SELECT * FROM product_descriptions WHERE MATCH(product_name) AGAINST('"+euro* +grade* +40k*"' IN BOOLEAN MODE) LIMIT 10
最佳答案
问题可能出在系统变量ft_min_word_len
上。该值的默认值为 4
(如 here 所解释),这意味着 1、2 和 3 个字符的单词将被忽略。您的单词 '40k'
太短,因此甚至没有编入索引。
您需要更改参数值,然后重新构建索引。
关于php - MySQL 搜索与搜索项中的整数匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22146238/