子句说明
rank子句帮助用户自定义打分逻辑,从而控制文档的返回顺序。
子句语法
{
"rank" : {
"ranking" : {
"lang": "expression",
"source" : "score_expression"
},
"reranking" : {
"lang": "expression",
"source" : "score_expression"
}
}
}
引擎的排序默认分为粗排和精排两个阶段,可以分别制定算分表达式控制各阶段的打分逻辑。其中ranking表示粗排算分,reranking表示精排算分。ranking与生效规则如下:
仅指定ranking,精排分数为粗排分,文档最终的分数为精排分数。
仅指定reranking,粗排默认为static_bm25()分数,精排使用reranking分数,文档最终的分数为精排分数。
指定ranking与reranking,粗排使用ranking分数,精排使用reranking分数,文档最终的分数为精排分数。
都不指定,粗排默认为static_bm25()分数,精排分数为粗排分,文档最终的分数为精排分数。
参数详解
lang:必选参数,算分脚本类型,目前仅支持expression。
source:必选参数,表达式内容,表达式为算数表达式,表达式的规则和可以使用的特征请参考排序表达式。
注意事项
如果返回的文档个数大于参与精排的文档个数,数据节点返回给查询节点的文档个数会大于参与精排的文档个数,会有部分文档的分数为粗排分。为了解决这一问题,引擎默认粗排分数小于10000,精排分数会加上10000。用户可以修改集群配置调整10000的限制。
文档内容是否对您有帮助?