Mysql - 搜索多字查询

时间:2018-06-06 09:02:28

标签: mysql search full-text-search

当用户按名称搜索产品时,我尝试返回产品表中的结果。目前我有这个查询(简化):

SELECT id, name FROM products WHERE status > 0 AND MATCH(name) AGAINST('test druzy%' IN BOOLEAN MODE) ORDER BY id desc LIMIT 0, 50

我的搜索查询位于test druzy。这些是我得到的结果。

results of first query

问题是我不想要结果'测试领带项链'例如。 Mysql正在单独搜索测试 druzy 。如何搜索两个单词组合。性能也是一个问题,因为该表预计会非常大。

我也尝试使用LIKE,但根本不会返回任何结果。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

您是否尝试降低字段名称并按以下方式应用LIKE:

SELECT id, name
FROM products
WHERE status > 0
AND LOWER(name) LIKE LOWER('Test Druzy%')
ORDER BY id desc LIMIT 0, 50
编辑:您可以将LOWER放在另一侧 或者使用不区分大小写的字符集格式

答案 1 :(得分:0)

您应该使用LIKE查询而不是使用MATCH查询。

答案 2 :(得分:0)

要搜索这两个字,您可以使用+运算符

MATCH(name) AGAINST('+test +druzy' IN BOOLEAN MODE) 

Demo

Boolean Full-Text Searches