术语与术语查询的得分不同

时间:2020-02-21 18:28:07

标签: elasticsearch elasticsearch-query term-query

我正在通过过滤并使用term查询来应用分数来检索文档。 查询应匹配具有指定颜色的所有动物-匹配的颜色越多,文档的得分越高。奇怪的是, termterms查询导致了不同的得分。

{
    "query": {
        "bool": {
            "should": [
                {"terms": {"color": ["brown","darkbrown"] } },
            ]
        }
    }
}

应该与使用

相同
{"term": {"color": {"value": "brown"} } },
{"term": {"color": {"value": "darkbrown"} } }

查询编号无论匹配1个词还是2个词,1都会给我一个文档完全相同的分数。如果匹配更多颜色,则后者当然会得分更高。

coordination factor所述,如果匹配更多词,则返回分数应更高。因此,这两个查询应得出相同的分数-还是因为term个查询未分析搜索字词?

我的字段被索引为文本。字符串被索引为字符串的“数组”,例如"brown","darkbrown"

1 个答案:

答案 0 :(得分:0)

字词与字词查询之间的差异:

  • 术语查询返回在提供的字段中包含一个或多个确切术语的文档。
  • 术语查询与术语查询相同,不同之处在于您可以搜索多个值。
  • 警告:避免对文本字段使用术语查询。

就您所关注的部分而言

还是因为术语查询不分析搜索词?

是的,这是因为搜索词不分析搜索到的词。它只与确切的搜索词匹配。