gpt4 book ai didi

lucene - ElasticSearch分数的分母是多少?

转载 作者:行者123 更新时间:2023-12-03 02:08:26 24 4
gpt4 key购买 nike

我有多个条件的搜索。

每个条件(按should分组)具有不同的加权得分。

ElasticSearch返回结果列表;每个都有分数-在我看来这是一个任意分数。这是因为我找不到该分数的分母。

我的问题是-如何用分数表示每个分数?

将每个得分除以max_score无效,因为它会以与搜索条件的100%匹配来显示最佳匹配。

最佳答案

_score的计算取决于所使用查询的组合。例如,一个简单的查询如:

{ "match": { "title": "search" }}

将使用Lucene的 TFIDFSimilarity,结合:
  • 术语频率(TF):术语search在此文档的title字段中出现几次?频率越高,
  • 的得分越高
  • 反向文档频率(IDF):术语search在索引中所有文档的title字段中出现几次?频率越高,
  • 分数越低
  • 字段规范:title字段多长时间?字段越长,得分越低。 (像title这样的狭窄字段被认为比像body这样的更长字段更为重要。)
  • 查询规范化因子。 (可以忽略)

  • 另一方面,像这样的 bool查询:
    "bool": {
    "should": [
    { "match": { "title": "foo" }},
    { "match": { "title": "bar" }},
    { "match": { "title": "baz" }}
    ]
    }

    将为每个匹配的子句计算 _score,将它们加在一起,然后除以子句的总数(然后再次应用查询归一化因子)。

    因此,这完全取决于您使用的查询。

    您可以通过将 _score参数添加到查询中来详细了解 explain的计算方式:
    curl localhost:9200/_search?explain -d '
    {
    "query": ....
    }'

    My question is - how can I represent each score as a ratio?



    如果不了解您要查询执行的操作,就不可能回答这个问题。根据您的用例,您可以使用 function_score query来实现自己的评分算法。

    关于lucene - ElasticSearch分数的分母是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21346164/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com