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

non*_*oat 7 elasticsearch elasticsearch-query term-query

我通过过滤和使用term查询来应用分数来检索文档。查询应匹配具有指定颜色的所有动物 - 匹配的颜色越多,文档的分数越高。奇怪的是,term查询terms结果却有不同的评分。

{
    "query": {
        "bool": {
            "should": [
                {"terms": {"color": ["brown","darkbrown"] } },
            ]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

应该和使用一样

{"term": {"color": {"value": "brown"} } },
{"term": {"color": {"value": "darkbrown"} } }
Run Code Online (Sandbox Code Playgroud)

查询编号 无论 1 个或 2 个术语匹配,1 都会为文档提供完全相同的分数。如果匹配更多颜色,后者当然会返回更高的分数。

正如协调因子所述,如果匹配的术语越多,返回的分数应该越高。因此,这两个查询应该产生相同的分数 - 或者是因为term查询不分析搜索词?

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

Uma*_*yat 3

术语与术语查询之间的区别:

  • 术语查询返回在所提供字段中包含一个或多个精确术语的文档。
  • 术语查询与术语查询相同,只是您可以搜索多个值。
  • 警告:避免对文本字段使用术语“查询”。

就你这部分而言

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

是的,这是因为搜索词没有分析搜索到的词。它仅与确切的搜索词匹配。