术语与术语查询的评分不同
Posted
技术标签:
【中文标题】术语与术语查询的评分不同【英文标题】:scoring of Term vs. Terms query different 【发布时间】:2020-06-06 05:20:22 【问题描述】:我正在通过过滤和使用term
查询来应用分数来检索文档。
查询应匹配具有指定颜色的所有动物 - 匹配的颜色越多,文档的得分越高。奇怪的是,term
和 terms
查询结果不同。
"query":
"bool":
"should": [
"terms": "color": ["brown","darkbrown"] ,
]
应该和使用一样
"term": "color": "value": "brown" ,
"term": "color": "value": "darkbrown"
查询编号无论 1 个或 2 个术语是否匹配,1 给我的文档得分完全相同。如果匹配更多颜色,后者当然会返回更高的分数。
如coordination factor 所述,如果匹配的词条更多,则返回的分数应该更高。因此这两个查询应该得到相同的分数 - 还是因为 term
查询不分析搜索词?
我的字段被索引为文本。字符串被索引为字符串的“数组”,例如"brown","darkbrown"
【问题讨论】:
【参考方案1】:术语与术语查询之间的区别:
词条查询返回在提供的字段中包含一个或多个确切词条的文档。 术语查询与术语查询相同,只是您可以搜索多个值。 警告:避免对文本字段使用术语查询。就你这部分而言
还是因为词条查询不分析搜索词条?
是的,这是因为搜索词没有分析搜索到的词。它只匹配确切的搜索词。
【讨论】:
所以,如果我希望我的分数更高,当有几种颜色匹配时,我将不得不使用多个术语查询? 如果要匹配多个颜色,那么最佳做法是使用术语,因为它与多个搜索词匹配。 是的,这就是我的观点。匹配的颜色越多 -> 得分越高。但这显然不适用于terms
查询 - 无论匹配多少颜色,分数始终为 1\0。如果我使用 term
查询,它会起作用
"是的,这是因为搜索词没有分析搜索到的词。它只是匹配确切的搜索词。" - 你能澄清一下吗以上是关于术语与术语查询的评分不同的主要内容,如果未能解决你的问题,请参考以下文章
在 Elasticsearch 中计算相关性评分与 Couchbase 有何不同?