我想在 MySql 中使用 match 来搜索那些在 state 字段中不包含“rajasthan”的行。
我的查询是这样的:
SELECT * from member where MATCH(state) AGAINST('-rajasthan' IN BOOLEAN MODE)
但是,它返回一个空的结果集。
这有什么问题?
我相信这会成功:
SELECT
*
FROM
Member
WHERE
NOT MATCH (state) AGAINST ('+rajasthan' IN BOOLEAN MODE)
资料来源:MySQL Boolean Full-Text Searches 中的“Show all except”
当心-我相信这将进行全表扫描,并且此查询不会像您希望的那样从全文索引中受益。
至于你的空结果:
注意:- 运算符仅用于排除与其他搜索词匹配的行。因此,仅包含以 - 开头的术语的布尔模式搜索返回空结果。它不会返回“除包含任何排除项的行之外的所有行。”</p>
- 运算符仅用于排除与其他搜索词匹配的行。因此,仅包含以 - 开头的术语的布尔模式搜索返回空结果。它不会返回“除包含任何排除项的行之外的所有行。”</p>
因此,请尝试附加到您的查询OR 1 = 1
中,以便查询返回您的所有记录而不使用 MATCH 运算符