elasticsearch:算法 function_score自定义相关度分数
程序员文章站
2022-07-05 08:10:36
...
可以自定义一个function_score函数,自己将某个field的值,跟es内置算出来的分数进行运算,然后由自己指定的field来进行分数的增强
如网络中的帖子,查看的人越多,帖子的分数越高
GET /forum/article/_search
{
"query": {
"function_score": {
"query": {
"multi_match": {
"query": "java spark",
"fields": ["tile", "content"]
}
},
"field_value_factor": {
"field": "follower_num",
"modifier": "log1p",
"factor": 0.5
},
"boost_mode": "sum",
"max_boost": 2
}
}
}
1、如果只有field,那么会将每个doc的分数都乘以follower_num
- 如果有的doc follower是0,那么分数就会变为0
- 加个log1p函数(先加1再取log)【log函数】
- 如上所示:“fileld_value_factor”下,添加了log1p则field对应的follower_num需要 +1再取flag
2、再加factor,进一步影响分数,new_score = old_score * log(1 + factor * number_of_votes)
3、boost_mode,可以决定分数与指定字段的值如何计算,multiply,sum,min,max,replace,上面算出来的值和es算出来的分时是相乘、相加还是怎么着
4、max_boost,限制计算出来的分数不要超过max_boost指定的值
推荐阅读
-
elasticsearch:算法 function_score自定义相关度分数
-
Elasticsearch 之(22) 自定义相关度分数算法 和 常见的相关度分数优化方法
-
28深度探秘搜索技术_实战用function_score自定义相关度分数算法
-
Elasticsearch 控制相关度 (六) - function_score查询中的filter,functions及random_score参数
-
Elasticsearch 控制相关度 (五) - function_score查询及field_value_factor,boost_mode,max_
-
elasticsearch(12)用function_score自定义相关度分数算法