全部產品
Search
文件中心

OpenSearch:rank子句

更新時間:Jul 13, 2024

子句說明

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的限制。