【问题标题】:.How to compute scores based on multiple parameters elasticsearch.如何基于多参数elasticsearch计算分数
【发布时间】:2015-11-27 06:10:54
【问题描述】:

我有两个参数可以作为评分的基础, 1.距离因素,从用户所在位置到目的地所在位置 2.一个评分因子,每个目的地都有评分 如果距离因子低于要求的半径(例如 5 公里),则距离因子将被赋予更多权重。并且评级因子应该乘以距离分数,并且应该计算一个新的分数。如何在 elasticsearch 中进行这种评分。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    使用elasticsearch的function_score。基本上,函数分数是每种查询/衰减/脚本的单个助推器的数组。对于距离,您可以使用衰减函数,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"
            }
        }
    

    希望这对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多