【问题标题】:FULLTEXT search with multiple exact phrases and exclusions具有多个确切短语和排除项的全文搜索
【发布时间】: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


    【解决方案1】:

    我想通了。这是我的查询: SELECT * FROM jos_sea_messages WHERE (Match(body,subject) Against('"green cat" "brown cow" -"silver rhino"' IN BOOLEAN MODE))

    + 不是必需的,因为这意味着两个短语都需要,并且 - 超出了双引号。

    希望它可以帮助别人。我确信这种类型的要求不是唯一的

    【讨论】:

      猜你喜欢
      • 2016-01-26
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2015-10-19
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多