。如何根据多个参数elasticsearch计算分数

时间:2015-11-27 06:10:55

标签: elasticsearch

我有两个参数可以根据评分来完成,   1.距离因子,从用户的位置到目的地的位置   2.评级因子,每个目的地都有评级 如果距离系数低于要求的半径(比如5 km),则给予更多的重量。并且评级因子应该与距离得分相乘并且应该计算新的得分。如何在弹性搜索中进行这种评分。

1 个答案:

答案 0 :(得分:0)

使用elasticsearch的function_score.Basically函数得分是每种查询/衰变/脚本的单个助推器数组。对于距离你可以使用衰减函数,elasticsearch附带三种类型的衰减线性,指数和高斯衰减与偏移,比例和衰减参数。 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html

对于评级助推器编写脚本以从doc_values返回评级。 要汇总函数查询中各个助推器的分数,请使用score_mode和boost_mode。

{
    "query": {
        "function_score": {

            "functions": [{
                    "linear": {
                        "FIELD": {
                            "origin": "",
                            "scale": "",
                            "offset": ""
                        }
                    }
                }, {
                    "script_score": {
                        "script": "doc['ratinf_field'].value"
                    }
                ]
            },
            "boost_mode": "max",
            "score_mode": "multiply"
        }
    }

希望这适合你。