我有一个全文查询,如果我使用两个单词,似乎可以解决拼写错误,但是如果我只使用一个单词,则无法解决

我有一个全名字段表

在表格“ Nile Rodgers”,“ Bam Rogers”,“ Catherine Wyn Rogers”,“ Nigel Rogers”中

我的查询

SELECT *
FROM people
WHERE MATCH (fullname) AGAINST ('myquerytext' IN NATURAL LANGUAGE MODE)


如果我搜索“ Rodgers”,我会发现“ Nile Rodgers”

如果我搜索“ Rogers”,我会发现“ Bam Rogers”,“ Catherine Wyn Rogers”,“ Nigel Rogers”,但不是“ Nile Rodgers”

如果我搜索“尼罗河罗杰斯”,我会喜欢“尼罗河罗杰斯”,“巴姆·罗杰斯”,“凯瑟琳·温·罗杰斯”,“奈杰尔·罗杰斯”

可以调整公差吗?

最佳答案

您的问题是它搜索EITHER Nile或Rogers,因此您得到的结果是合乎逻辑的。

如果要使用所有单词而不是其中的任何单词,请使用BOOLEAN MODE并在每个单词前面添加+

SELECT *
FROM people
WHERE MATCH (fullname) AGAINST ('+Nile +Rogers' IN BOOLEAN MODE)



  12.9.2布尔全文搜索
  
  在实现此功能时,MySQL使用有时称为的内容
  作为隐含的布尔逻辑,其中
  
  •+代表AND
  
  •-表示NOT
  
  •[无运算符]表示“或”


Offcial doc

10-06 02:10