3

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

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

谢谢并恭祝安康

4

2 回答 2

3

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

custom_score :script => "_score+doc['increase_relevance_points'].value" do
  boolean do
    should { match :increase_relevance_text, term}
  end
end
于 2013-10-17T06:15:17.873 回答
0

您可以将数据库记录中的点值作为整数索引到 ElasticSearch 中。一旦它在那里,你有很多使用custom_score基于脚本的排序的选项。

如果您想将每个结果提升一个因子,point_value则查询可能类似于:

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

查看自定义分数查询文档以获取完整信息。

于 2013-09-27T15:33:09.360 回答