score_mode: score_mode参数是functionscore内的一组设置的打分方式,默认为multiply也就是相乘,即一组funtionscore内的几项设置打分结果相乘,为了避免系数威力过大,建议设置为sum boost_mode: score_mode是设置查询外部打分与functionscore之间的模式,默认也为multiply,设置为sum max_boost 除上述两种模式可以设置之外,...
functions内部构造,然后将得到的functions与查询语句一起放入functionScore,设定相应的mode计算方式就行(下面的是不可运行的,仅供参考,需要注意的是functions的层层包装和内部的构建函数使用方式) public FunctionScoreQueryBuilder.FilterFunctionBuilder[] changeFunction(long userId,String province,Map<String,Float> face)...
score_mode设置为了max,意思是取两个打分函数的最大值作为func_score,对应上述假设也就是 2.3 和 42 两者中的最大值,即func_score= 42 boost_mode设置为了multiply,就是把原来的query_score与func_score相乘就得到了最终的 score 分数。 参数score_mode指定多个打分函数如何组合计算出新的分数: •multiply: 分数...
multiply:_score乘以函数结果(默认情况) sum:_score加上函数结果 min:_score和函数结果的较小值 max:_score和函数结果的较大值 replace:将_score替换成函数结果 如果我们是通过将函数结果累加来得到_score,其影响会小的多,特别是当我们使用了一个较低的factor时: GET /blogposts/post/_search {"query": {"fu...
"score_mode": "max", "boost_mode": "multiply", 备注:function_score query 的用法非常多,适用场景也比较广,比如说:1)通过文档中的字段值影响相关度,比如可以让博客的点赞数越多,相关度越高;2)随机分数【可应用于千人千面】;3)根据距离参考值的衰减函数计算相关度,比如说地理位置查询,距离参考点越远的,...
],//max_boost表示自定义的函数的分数不能超过指定分数"max_boost": 100,//总评分的评分规则:score_mode为自定义的函数(functions)的计算规则,boost_mode为查询分数和函数分数的计算规则//方法中分数的最低分为1(即即使设置权重为0,或者filter结果完全不匹配,仍然会返回结果1(即按理结果因当为0时)。其他结果...
从每个单独的函数而来的得分是如何合并的,这被称为score_mode。 从函数而来的得分是如何同原始查询得分合并的,这被称为boost_mode。 Q: score_mode的主要作用呢 A: 把多个结果缩减为1个结果,然后和_score进行合并。 A: 每个函数返回一个结果,所以需要一种将多个结果缩减到单个值的方式,然后才能将其与原始评分...
"5", "functions": [ { "filter": { "match": { "test": "bar" } }, "random_score": {}, "weight": 23 }, { "filter": { "match": { "test": "cat" } }, "weight": 42 } ], "max_boost": 42, "score_mode": "max", "boost_mode": "multiply", "min_score" : 42 }...
"function_score": { "query": { "match": { "title": "elasticsearch" } } <!-- 设置自定义打分函数,这里先省略,后面再展开讲解 --> "boost_mode": "multiply" } } } 最终搜索结果 score 的计算过程就是: 执行query得到原始的分数,与上文假设对应,即query_score分别是0.3、0.2、0.1。
"score_mode": "max", "boost_mode": "multiply", "min_score": 42 } } } score_mode 参数决定 filter 条件过滤之后打分的文档,它们之间如何结合成一个总分数。以上面示例:filter match "bar" 对命中的文档计算出一个分数,它用的 score 函数是 random_score。filter match "cat" 对命中的文档计算出一...