【发布时间】:2015-11-27 06:10:54
【问题描述】:
我有两个参数可以作为评分的基础, 1.距离因素,从用户所在位置到目的地所在位置 2.一个评分因子,每个目的地都有评分 如果距离因子低于要求的半径(例如 5 公里),则距离因子将被赋予更多权重。并且评级因子应该乘以距离分数,并且应该计算一个新的分数。如何在 elasticsearch 中进行这种评分。
【问题讨论】:
标签: elasticsearch
我有两个参数可以作为评分的基础, 1.距离因素,从用户所在位置到目的地所在位置 2.一个评分因子,每个目的地都有评分 如果距离因子低于要求的半径(例如 5 公里),则距离因子将被赋予更多权重。并且评级因子应该乘以距离分数,并且应该计算一个新的分数。如何在 elasticsearch 中进行这种评分。
【问题讨论】:
标签: elasticsearch
使用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"
}
}
希望这对你有用。
【讨论】: