3

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

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

应该和使用一样

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

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

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

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

4

1 回答 1

1

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

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

就你这部分而言

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

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

于 2020-02-22T18:04:27.713 回答