mysql全文搜索多个单词

w8f9ii69  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(473)

我打过电话 keywords 存储的信息是一个关键字,用 | 例如:

sky|Banana is good|apple|apple is red|sky is blue|green

我试图做的是在该字段中搜索,并找到至少包含一个关键字的结果。
为此,我在布尔模式中使用了match-against

SELECT * FROM mytable 
WHERE MATCH(kewords) 
      AGAINST ('+sky is blue +Banana is good +otherword' IN BOOLEAN MODE)

但是results出错,例如它将选择包含 +sky is blue 还有一个词 sky 我知道如何在php中解决这个问题,但我正在寻找mysql解决方案,我认为match-against是我正在寻找的。

vs91vp4v

vs91vp4v1#

一种方法是使用 LIKE ,用分隔符分隔搜索词:

SELECT * FROM mytable
WHERE CONCAT('|', keywords, '|') LIKE '%|sky is blue|%' OR
      CONCAT('|', keywords, '|')LIKE '%|Banana is good|%' OR
      CONCAT('|', keywords, '|') LIKE '%|otherword|%'

这确保了搜索短语必须完全匹配(即。 sky is blue 将不匹配 sky ).
如果你想让所有的短语都出现(而不是任何一个),只需更改 ORAND .

相关问题