【发布时间】:2020-08-04 02:00:40
【问题描述】:
我正在尝试创建一个全文查询,以匹配多个确切短语中的任何一个并排除其他短语。在我的测试查询中。我想选择任何包含(或两者)确切短语“棕牛”或“绿猫”而不是“银犀牛”的记录。我已经用这三个短语的组合设置了测试记录,如果我能正确查询,应该返回 3 条记录。
查询 1 选择 * 从 jos_sea_messages WHERE ((Match(body,subject) Against('"+green cat"' IN BOOLEAN MODE) OR Match(body,subject) Against('"+brown cow"' IN BOOLEAN MODE)) AND ( Match(body,subject) Against('"-silver rhino"' IN BOOLEAN MODE)))
返回 2 条记录 - 其中一条带有“银犀牛”,所以不是我想要的
查询 2 选择 * 从 jos_sea_messages WHERE ((Match(body,subject) Against('"+green cat" "-silver rhino"' IN BOOLEAN MODE) OR Match(body,subject) Against('"+brown cow" "-silver rhino"' IN BOOLEAN模式))) 返回包含任何短语的所有记录,包括“silver rhino”,因此仍然不正确
查询 3 选择 * 从 jos_sea_messages WHERE (Match(body,subject) Against('"+green cat" "+brown cow" "-silver rhino"' IN BOOLEAN MODE)) 返回一大堆行,其中一些我认为没有任何确切的短语?
查找包含确切短语“brown cow”和“green cat”但不能包含“silver rhino”的记录的正确语法是什么?
提前致谢。
【问题讨论】:
标签: mysql boolean full-text-search