【问题标题】:how decrease score on TF in elasticsearch?如何在弹性搜索中降低 TF 分数?
【发布时间】:2019-07-11 00:35:24
【问题描述】:

两个文档:1. "Some Important Company",2. "Some Important Company Important branch"

由于“Important”的 docCount 很高(许多文档都有重要的词),所以当搜索“Some Important Company”时

第二个文档获得更高的分数,即使第一个文档完全匹配。

所以我的问题是如何在完全匹配时提高分数或降低 TF 分数?

我的查询是multi_match for customerName usedName,但在这种情况下usedName 都是“”

【问题讨论】:

  • 您使用的查询是什么?如果您想精确匹配短语,则需要使用 match_phrase 查询(除非您的索引分析器不会将短语拆分为标记,这不太可能)。

标签: elasticsearch


【解决方案1】:

我假设您的文档字段是使用标准文本分析器或类似工具编制索引的。我将使用dismax 复合查询组合match 查询和match_phrase 查询。 这会给出类似的结果:

{
    "query": {
        "dis_max" : {
            "queries" : [
                { "match" : { "myField" : "Some Important Company" }},
                { "match_phrase" : { "myField" : "Some Important Company" }}
            ],
            "tie_breaker" : 0.7
        }
    }
}

match 查询中没有“匹配精确短语”的概念。为此,您需要使用 match_phrase 查询。这就是为什么你在这里将两者结合起来。使用dis_max,匹配两个查询的文档将得到提升。您可以阅读有关 dis_max 和 match_phrase 的更多信息:

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-dis-max-query.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase.html

【讨论】:

    猜你喜欢
    • 2015-03-04
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    相关资源
    最近更新 更多