我遇到了一个映射,该映射在某些使用custom analyzer
的字段上禁用了规范。
然后,我阅读了有关Norms的内容,https://www.elastic.co/guide/en/elasticsearch/reference/current/norms.html找到了这个官方文档,但是并没有清楚地解释确切存储的内容及其在计分中的实际作用。
下面是上面链接的摘录:
规范存储各种归一化因子,以后在查询时使用 时间以计算文档相对于文档的分数 查询。
我找到了其他一些文档,这些文档提供了更多信息,并建议禁用已分析字段的规范,例如数字代表相对字段长度和索引时间提升设置。但是我还是无法完全理解它。
因此,简而言之,我有以下疑问:
答案 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": []
}
]
}
其中fieldLength
和avgFieldLength
的计算要归功于norms
数据
此答案主要基于https://www.elastic.co/fr/blog/practical-bm25-part-2-the-bm25-algorithm-and-its-variables和https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html#field-norm