mysql - MySql 中的简单搜索

标签 mysql select search innodb sql-like

我正在尝试为 MySQL InnoDB 创建基本搜索功能。我知道有全文搜索,但我现在只想做一个简单的解决方案。我想要的是,当用户搜索“宝马汽车”时,我不仅想找到“宝马汽车”这样的结果,还想找到“宝马汽车”“宝马 Z4 汽车”等结果。有没有一种简单的方法可以做到这?您将如何实现这样的搜索?

现在我正在使用 LIKE:

SELECT title,id FROM table WHERE title LIKE '%BMW Car%'

但这不会给我像“Car BMW”“BMW Z4 Car”这样的结果..

最佳答案

您可以使用两个“LIKE”:

SELECT title,id FROM table WHERE title LIKE '%BMW%' AND title LIKE '%Car%'

如果不需要将服务器配置更改为reduce the minimum key word size从 4 到 3 来匹配 BMW,我想说你最好使用 full-text searchboolean mode从头开始。它更加灵活:

SELECT title,id FROM table WHERE MATCH (title)
AGAINST ('+BMW +Car -Volvo' IN BOOLEAN MODE);

全文搜索还可以搜索短语:

SELECT title,id FROM table WHERE MATCH (title)
AGAINST ('+"BMW Z4" -"BMW Z3"' IN BOOLEAN MODE);

关于mysql - MySql 中的简单搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3849111/

相关文章:

mysql - SQL查询比较两个表

php - “隐藏”管理文件夹,使用不同的文件夹名称?

创建过程中的 MySql OUT 参数未编译

mysql - Ruby:解析时间字符串以在 MySql 中接受为有效的日期时间

python - 谁能告诉我这个二进制搜索代码哪里出了问题?无法向用户打印索引

javascript - Jquery 搜索 - 不区分大小写

客户每月的 SQL 平均值

mysql - 经过一些计算后,如何在一个表中显示多行,在另一个表中显示一行

来自同一个表的 MySQL UPDATE 和 SELECT

MySQL boolean 搜索 - 如何过滤掉所有不包含至少 2 个输入字符串的结果?