【问题标题】: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"

【问题讨论】:

    标签: elasticsearch elasticsearch-query term-query


    【解决方案1】:

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

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

    就你这部分而言

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

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

    【讨论】:

    • 所以,如果我希望我的分数更高,当有几种颜色匹配时,我将不得不使用多个术语查询?
    • 如果要匹配多个颜色,那么最佳做法是使用术语,因为它与多个搜索词匹配。
    • 是的,这就是我的观点。匹配的颜色越多 -> 得分越高。但这显然不适用于terms 查询 - 无论匹配多少颜色,分数始终为 1\0。如果我使用 term 查询,它会起作用
    • "是的,这是因为搜索词没有分析搜索到的词。它只是匹配确切的搜索词。" - 你能澄清一下吗
    猜你喜欢
    • 2014-07-19
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 2013-07-10
    • 2017-06-12
    相关资源
    最近更新 更多