我正在尝试为 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 search在 boolean 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/