子句說明
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的限制。
文檔內容是否對您有幫助?