【问题标题】:Min_score for a "must" in a bool query in ElasticsearchElasticsearch 中布尔查询中“必须”的 Min_score
【发布时间】:2016-11-24 18:23:12
【问题描述】:

有没有办法在 elasticsearch 的 bool 查询中对 must 子句应用最低分数。

我希望能够做这样的事情:

{
  "query": {
     "bool": {
        "must": [
            {
              "match": {
                 "name": {
                    "query":"A Name",
                    "min_score": 0.3
                 }
               }
            },
            {
              "match": {
                 "address": {
                    "query":"1 Somewhere Street, Somewhereset, UK",
                    "min_score": 0.3
                 }
               }
            }
        ]
    }
  }
}

这需要名称查询与分数 > 0.3 匹配,地址查询与分数 > 0.3 匹配才能返回文档。这是为了阻止返回非常好的名称匹配,尽管地址匹配很糟糕(例如,只匹配 1),反之亦然。

我目前使用的是 Elasticsearch 1.5,但我过去也希望在 2.3 中使用它。

【问题讨论】:

  • 指定 Elastic 的版本对解决一些问题很有帮助 - v1 和 v2 之间可能存在差异。

标签: elasticsearch relevance booleanquery


【解决方案1】:

试试这个,让我知道它是否有效:

{
  "query": {
    "bool": {
      "must": [
        {
          "function_score": {
            "query": {
              "match": {
                "name": {
                  "query": "A Name"
                }
              }
            },
            "min_score": 0.3
          }
        },
        {
          "function_score": {
            "query": {
              "match": {
                "address": {
                  "query": "1 Somewhere Street, Somewhereset, UK"
                }
              }
            },
            "min_score": 0.3
          }
        }
      ]
    }
  }
}

【讨论】:

  • 效果很好。我曾想过使用函数分数查询,但我想我需要使用该函数来使分数变得如此之低,以至于不会超过总的最低分数。另外,我希望它太慢而无法实用,但它似乎一点也不慢,因为它实际上并没有使用函数。谢谢。
【解决方案2】:

似乎查询的分数是根据所有字段组合计算得出的。您可以在函数查询中使用 script_score 更改分数的计算方式:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-script-score

但是,您似乎不太可能单独访问每个字段结果的分数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 2020-05-03
    相关资源
    最近更新 更多