否定与匹配

Dee*_*epa 1 mysql against match

我想在 MySql 中使用匹配来搜索状态字段中不包含“rajasthan”的那些行。

我的查询是这样的:

SELECT * from member where MATCH(state) AGAINST('-rajasthan' IN BOOLEAN MODE) 
Run Code Online (Sandbox Code Playgroud)

但是,它返回一个空的结果集。

这有什么问题?

Bri*_*ter 7

我相信这会解决问题:

SELECT 
  *
FROM 
  Member
WHERE 
  NOT MATCH (state) AGAINST ('+rajasthan' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

来源:MySQL Boolean Full-Text Searches 中的“Show all except”

当心- 我相信这将进行全表扫描,并且此查询不会像您希望的那样从 FullText 索引中受益。

至于你的空结果:

注意: - 运算符仅用于排除与其他搜索词匹配的行。因此,仅包含以 - 开头的术语的布尔模式搜索返回空结果。它不会返回“除包含任何排除项的行之外的所有行”。

来源