在弹性搜索中按分配给该记录的点提升记录

时间:2013-09-27 08:36:14

标签: boost elasticsearch

我的问题是我们如何为每个搜索记录提供动态提升值?

在我的情况下,数据库中的每条记录都有一个分配给它的点值,我必须在搜索时将该点指定为提升值。

谢谢和问候

2 个答案:

答案 0 :(得分:3)

我使用以下方法解决了这个问题:

custom_score :script => "_score+doc['increase_relevance_points'].value" do
  boolean do
    should { match :increase_relevance_text, term}
  end
end

答案 1 :(得分:0)

您可以将数据库记录中的点值作为整数索引到ElasticSearch中。一旦它出现在那里,您可以使用custom_scorescript based sorting来获得很多选项。

如果您希望将每个结果提升point_value因子,则查询可能如下所示:

"query": {
    "custom_score" : {
        "query" : {
            ....
        },
        "script" : "doc['point_value'].value * _score"
    }
}

查看custom score query docs以获取完整信息。