mysql匹配多个单词

时间:2012-12-27 12:57:20

标签: mysql full-text-search

下面是我坚持使用的一个示例sql,它不会返回名为“iphone 4s”的产品,它返回10个其他结果。任何帮助都会非常感谢

第一个SQL示例

SELECT * FROM products 
          WHERE match(desc) against('+iphone +4s' IN BOOLEAN MODE) LIMIT 10";

结果:包含“iphone”和“4s”字样

第二个SQL示例

SELECT * FROM products 
           WHERE match(desc) against('+iphone 4s' IN BOOLEAN MODE) LIMIT 10";

结果:包含“iphone”字样,但如果它们也包含“4s”

,则排名更高

第3个sql示例

SELECT * FROM products 
           WHERE match(desc) against('iphone 4s' IN BOOLEAN MODE) LIMIT 10";

结果:包含“iphone”或“4s”字样

我想要搜索的是'iphone 4s',但它带有其他结果,例如'iphone很好,但4s ......','新iphone 5已发布......',...

任何人都可以帮我解决吗?感谢。

2 个答案:

答案 0 :(得分:16)

要匹配精确的词组,只需使用双引号括起要匹配的词组;

SELECT * 
FROM products 
WHERE MATCH(desc) 
      AGAINST('"iphone 4s"' IN BOOLEAN MODE) 
LIMIT 10

More info at the manual pages

答案 1 :(得分:0)

使用REGEXP

SELECT * FROM products 
WHERE desc REGEXP 'iphone[[. .]]*4s'
LIMIT 10;

SQLFiddle demo