mysql匹配多个单词

mysql匹配多个单词,mysql,full-text-search,Mysql,Full Text Search,下面是一个我一直使用的sql示例,它不会返回名为“iPhone4S”的产品,它会返回10个其他结果。任何帮助都很好,谢谢 第一个sql示例 结果:包含单词“iphone”和“4s” 第二个sql示例 结果:包含单词“iphone”,但如果同时包含“4s”,则排名更高 第三个sql示例 结果:包含单词“iphone”或“4s” 我想搜索的是“iPhone4S”,但它会带来其他结果,比如“iphone不错,但4s…”,“新的iPhone5已经发布了…” 有人能帮我解决吗?谢谢。要匹配准确的短语,只需

下面是一个我一直使用的sql示例,它不会返回名为“iPhone4S”的产品,它会返回10个其他结果。任何帮助都很好,谢谢

第一个sql示例 结果:包含单词“iphone”和“4s”

第二个sql示例 结果:包含单词“iphone”,但如果同时包含“4s”,则排名更高

第三个sql示例 结果:包含单词“iphone”或“4s”

我想搜索的是“iPhone4S”,但它会带来其他结果,比如“iphone不错,但4s…”,“新的iPhone5已经发布了…”


有人能帮我解决吗?谢谢。

要匹配准确的短语,只需使用双引号将要匹配的短语括起来

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

使用


如果like运算符不一定要使用match-CONTROL,则可以轻松地使用like运算符。
SELECT * FROM products 
           WHERE match(desc) against('+iphone 4s' IN BOOLEAN MODE) LIMIT 10";
SELECT * FROM products 
           WHERE match(desc) against('iphone 4s' IN BOOLEAN MODE) LIMIT 10";
SELECT * 
FROM products 
WHERE MATCH(desc) 
      AGAINST('"iphone 4s"' IN BOOLEAN MODE) 
LIMIT 10
SELECT * FROM products 
WHERE desc REGEXP 'iphone[[. .]]*4s'
LIMIT 10;