子句說明
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的限制。