function_score内容较多,此篇主要是对function_score内容做系统性的讲解,之后会出几篇实际应用的方法,参考以下链接
ElasticSearch - function_score (field_value_factor具体实例)
ElasticSearch - function_score (weight具体实例)
ElasticSearch - function_score (衰减函数 linear、exp、gauss 具体实例)
-
在使用ES进行全文搜索时,搜索结果默认会以文档的相关度进行排序,而这个 "文档的相关度",是可以透过 function_score 自己定义的,也就是说我们可以透过使用function_score,来控制 "怎麽样的文档相关度更高" 这件事
-
function_score是专门用于处理文档
_score
的DSL,它允许爲每个主查询query匹配的文档应用加强函数, 以达到改变原始查询评分 score的目的 -
function_score会在主查询query结束后对每一个匹配的文档进行一系列的重打分操作,能够对多个字段一起进行综合评估,且能够使用 filter 将结果划分爲多个子集 (每个特性一个filter),并爲每个子集使用不同的加强函数
-
-
function_score 提供了几种加强
_score
计算的函数-
weight
: 设置一个简单而不被规范化的权重提升值-
weight加强函数和 boost参数类似,可以用于任何查询,不过有一点差别是weight不会被Lucene nomalize成难以理解的浮点数,而是直接被应用 (boost会被nomalize)
-
例如当 weight 爲 2 时,最终结果爲
new_score = old_score * 2
-
-
field_value_factor
: 将某个字段的值乘上old_score
-
像是将 字段shareCount
-
-