elasticsearch boost

作者: jacksu在简书 | 来源:发表于2016-07-13 14:13 被阅读3102次

    我们可以通过指定一个boost值来控制每个查询子句的相对权重,该值默认为1。一个大于1的boost会增加该查询子句的相对权重。因此如下:

    GET/_search{
        "query": {
            "bool": {
                "must": {
                    "match": {
                        "content": {
                            "query": "full text search",
                            "operator": "and"
                        }
                    }
                },
                "should": [{
                    "match": {
                        "content": {
                            "query": "Elasticsearch",
                            "boost": 3
                        }
                    }
                },
                {
                    "match": {
                        "content": {
                            "query": "Lucene",
                            "boost": 2
                        }
                    }
                }]
            }
        }
    }
    

    boost参数被用来增加一个子句的相对权重(当boost大于1时),或者减小相对权重(当boost介于0到1时),但是增加或者减小不是线性的。换言之,boost设为2并不会让最终的_score加倍。
    相反,新的_score会在适用了boost后被归一化(Normalized)。每种查询都有自己的归一化算法(Normalization Algorithm)。但是能够说一个高的boost值会产生一个高的_score。
    如果你在实现你自己的不基于TF/IDF的相关度分值模型并且你需要对提升过程拥有更多的控制,你可以使用function_score查询,它不通过归一化步骤对文档的boost进行操作。

    相关文章

      网友评论

        本文标题:elasticsearch boost

        本文链接:https://www.haomeiwen.com/subject/rigsjttx.html