规范实际存储在Elasticsearch中的内容

时间:2019-06-19 06:27:04

标签: elasticsearch

我遇到了一个映射,该映射在某些使用custom analyzer的字段上禁用了规范

然后,我阅读了有关Norms的内容,https://www.elastic.co/guide/en/elasticsearch/reference/current/norms.html找到了这个官方文档,但是并没有清楚地解释确切存储的内容及其在计分中的实际作用

下面是上面链接的摘录:

  

规范存储各种归一化因子,以后在查询时使用   时间以计算文档相对于文档的分数   查询。

我找到了其他一些文档,这些文档提供了更多信息,并建议禁用已分析字段的规范,例如数字代表相对字段长度和索引时间提升设置。但是我还是无法完全理解它。

因此,简而言之,我有以下疑问:

  1. 规范到底存储了什么?
  2. 相对字段长度到底是什么?对得分有什么用?
  3. 规范的默认值?
  4. 我可以通过一些ES查询来查看规范的内容吗?

1 个答案:

答案 0 :(得分:1)

这是一个可能的答案:)

确切存储了哪些规范,相对字段长度究竟是什么,以及它如何用于评分?

它存储使弹性体知道相对场长的信息。为什么呢

  

该字段多长时间?场越短,权重越高。   如果术语出现在短字段(例如标题字段)中,则该术语会更多   该字段的内容可能与该术语有关,而不是   同一词出现在更大的身体领域

规范的默认值?

规范在文本字段上被激活,在其他字段上被禁用。

我可以通过一些ES查询来查看规范的内容吗?

否,规范存储在细分的数据中。但是,如果在请求中使用explain flag,则可以看到规范的影响。在分数说明中的某个地方,您会看到类似的东西:

{
    "value": 1.4506965,
    "description": "tfNorm, computed as (freq * (k1 + 1)) / (freq + k1 * (1 - b + b * fieldLength / avgFieldLength)) from:",
    "details": [
        {
            "value": 3,
            "description": "termFreq=3.0",
            "details": []
        },
        {
            "value": 1.2,
            "description": "parameter k1",
            "details": []
        },
        {
            "value": 0.75,
            "description": "parameter b",
            "details": []
        },
        {
            "value": 34.572754,
            "description": "avgFieldLength",
            "details": []
        },
        {
            "value": 48,
            "description": "fieldLength",
            "details": []
        }
    ]
}

其中fieldLengthavgFieldLength的计算要归功于norms数据

此答案主要基于https://www.elastic.co/fr/blog/practical-bm25-part-2-the-bm25-algorithm-and-its-variableshttps://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html#field-norm