function_score
在使用ES进行全文搜索时,搜索结果默认会以文档的相关度进行排序,而这个 "文档的相关度",是可以透过 function_score 自己定义的,也就是说我们可以透过使用function_score,来控制 "怎麽样的文档相关度更高" 这件事
- function_score是专门用于处理文档_score的DSL,它允许爲每个主查询query匹配的文档应用加强函数, 以达到改变原始查询评分 score的目的
- function_score会在主查询query结束后对每一个匹配的文档进行一系列的重打分操作,能够对多个字段一起进行综合评估,且能够使用 filter 将结果划分爲多个子集 (每个特性一个filter),并爲每个子集使用不同的加强函数
es内置了几种预先定义好了的函数:
1、weight
对每份文档适用一个简单的提升,且该提升不会被归约,设置一个简单而不被规范化的权重提升值:
当weight为2时,结果为2 * _score
weight加强函数和 boost参数类似,可以用于任何查询,不过有一点差别是weight不会被Lucene nomalize成难以理解的浮点数,而是直接被应用 (boost会被nomalize)
2、field_value_factor
将某个字段的值乘上old_score
像是将 字段shareCount 或是 字段likiCount 作爲考虑因素,new_score = old
|