当用户按名称搜索产品时,我尝试返回产品表中的结果。目前我有这个查询(简化):
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
。这些是我得到的结果。
问题是我不想要结果'测试领带项链'例如。 Mysql正在单独搜索测试和 druzy 。如何搜索两个单词组合。性能也是一个问题,因为该表预计会非常大。
我也尝试使用LIKE,但根本不会返回任何结果。
有什么想法吗?
答案 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)