首页 > 解决方案 > Elasticsearch ,multi_match 如何使用 multi minimum_should_match

问题描述

我想要多mininmum_should_match查询multi_match 例如

GET /similarity/_search
{
  
  "query": {
    
    "multi_match": {
      "query": "Zamana  su miktarı gösterilmiştir. ",
      "fields": ["text1"],
      "type": "best_fields", 
      "minimum_should_match": "5<10%"
    }
  }
}

我想要两个条件minimum_should_match如下,但我怎么能做到 小心 minimum_should_match

GET /similarity/_search
{
  
  "query": {
    
    "multi_match": {
      "query": "Zamana  su miktarı gösterilmiştir. ",
      "fields": ["text1"],
      "type": "best_fields", 
      "minimum_should_match": "5<10% 15<%25"
    }
  }
}

标签: elasticsearch

解决方案


我认为你的做法是对的。

您可以使用 1<40% 4<90% 的 minimum_should_match 条件。这意味着如果您的搜索标记数小于或等于 1,则所有标记都应匹配,如果它们大于 1 且小于或等于 4,则 40% 应匹配,如果它们大于 4,则 90% 应匹配匹配。

要记住的是,您使用的是以字段为中心的 best_fields,因此它会为每个字段生成 minimum_should_match 条件。因此,如果您有“text1”以外的字段,则将为每个字段生成一个最低应匹配条件。如果这不是您想要的,那么您应该使用 cross_fields。在此处阅读更多信息:https ://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html


推荐阅读