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

Posted

技术标签:

【中文标题】术语与术语查询的评分不同【英文标题】:scoring of Term vs. Terms query different 【发布时间】:2020-06-06 05:20:22 【问题描述】:

我正在通过过滤和使用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】:

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

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

就你这部分而言

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

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

【讨论】:

所以,如果我希望我的分数更高,当有几种颜色匹配时,我将不得不使用多个术语查询? 如果要匹配多个颜色,那么最佳做法是使用术语,因为它与多个搜索词匹配。 是的,这就是我的观点。匹配的颜色越多 -> 得分越高。但这显然不适用于terms 查询 - 无论匹配多少颜色,分数始终为 1\0。如果我使用 term 查询,它会起作用 "是的,这是因为搜索词没有分析搜索到的词。它只是匹配确切的搜索词。" - 你能澄清一下吗

以上是关于术语与术语查询的评分不同的主要内容,如果未能解决你的问题,请参考以下文章

Solr 点击评分实现

拒绝推断问题(转)

盘点:2022年豆瓣评分8.0以上的计算机书籍有哪些?

在 Elasticsearch 中计算相关性评分与 Couchbase 有何不同?

Google App Engine Search API 自定义评分

查询以获取评分最高的 x,评分最低的 x 人