php - MySQL 搜索与搜索项中的整数匹配

标签 php mysql sql

使用以下查询来搜索产品数据库。它在我们的后端中用于查找要编辑的产品,以下搜索词和查询工作正常。

搜索词:欧元等级

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/

相关文章:

php - 如何使用 Symfony 在 Twig 中启用自动转义

php - 将数据添加到表形式 sql 并存储回新数据库

php - 生成数组所有版本的算法,可能的权重分配为 0-100

mysql - 授予读取 View 的权限,但拒绝其他表的权限

mysql - 如何通过 2 种不同的排序方式对 MySQL 结果进行排序?

php - 如何每 30 天使用触发器更新一次表?

ios - 如何使用 NSPredicate 在 NSDate 中按天分组 - 需要创建多个 UITableView 部分

sql - 如何计算运行 SUM?

mysql - 具有嵌套查询、分组依据和计数的 SQL 查询

php - 如何获取select查询返回结果的列名