在elasticsearch中,文档的长度对搜索结果的最终得分很重要。因此,如果我在一个只有一行的字段中匹配,那么它将比单个匹配得分高得多......例如,一个包含5页文本的文档。 有没有办法覆盖这种行为,或者可靠地反复提升结果以克服这种行为?
答案 0 :(得分:3)
我猜你的意思是在计算得分时会考虑匹配字段的长度。如果您只想禁用此行为,则可以在编制索引时省略规范。这样你也会失去索引时间,但我猜你还没有使用它,即使你需要提升你也应该使用查询时间提升,方式更灵活。
您必须更新字段的映射,如下所示:
"field_name" : {
"type" : "string",
"omit_norms" : true
}
如果要覆盖所有字符串字段的默认行为,可以使用如下动态模板:
{
"type_name" : {
"dynamic_templates" : [
{
"omit_norms_template" : {
"match_mapping_type" : "string",
"mapping" : {
"omit_norms" : true
}
}
}
]
}
}