全部產品
Search
文件中心

OpenSearch:排序服務

更新時間:Nov 22, 2025

AI搜尋開放平台支援通過Java SDK的方式調用排序服務。

前提條件

已開通AI搜尋開放平台服務,具體操作請參見開通服務

已通過API-KEY完成身份鑒權,擷取鑒權資訊請參見擷取API-KEY

參數說明

  • 請求體body最大不能超過8MB。

  • 更多參數說明請參見排序服務

package com.aliyun.sample;

import com.aliyun.searchplat20240529.Client;
import com.aliyun.searchplat20240529.models.GetDocumentRankRequest;
import com.aliyun.searchplat20240529.models.GetDocumentRankResponse;
import com.aliyun.teaopenapi.models.Config;

import java.util.Arrays;

public class RankerDemo {
    public static void main(String[] args) throws Exception {
        Config config = new Config();
        config.setBearerToken("your-api-key: OS-****");
        //endpoint: 配置統一的請求入口 需要去掉http://
        config.setEndpoint("替換API訪問地址:****.opensearch.aliyuncs.com");
        config.setProtocol("http");
        Client client = new Client(config);
        GetDocumentRankRequest request = new GetDocumentRankRequest();
        request.setQuery("");
        String[] docs = {"應用: 應用是使用者的一套資料配置,包括應用的資料來源結構,索引結構及其它一些資料屬性配置。一個應用即一個搜尋服務。文檔:文檔是可搜尋的結構化資料單元。文檔包含一個或多個欄位,但必須有主鍵欄位,OpenSearch通過主索引值來確定唯一的文檔。  主鍵重複則文檔會被覆蓋。欄位:欄位是文檔的組成單元,包含欄位名稱和欄位內容","索引:索引是一種用於加速文檔檢索速度的資料結構,一個使用者可以建立多個索引。複合式索引:允許使用者將多個TEXT、SHORT_TEXT等文本類型的源欄位索引到同一個欄位,用來做複合式索引。如一個論壇搜尋,需要提供基於標題(title)的搜尋及基於標題(title)和內容(body)的綜合搜尋,那麼可以將title建立title_search、default的索引,將body建立default索引。那麼,在title_search上查詢即可實現基於標題的搜尋,在default上查詢即可實現基於標題和內容的綜合搜尋。預設展示欄位;用來做結果展示使用,同時可以通過API參數fetch_fields來控制每次結果的返回欄位,需注意在程式中配置fetch_fields該參數後會覆蓋應用中預設展示欄位配置,以程式中的fetch_fields設定為主,若程式中不設定fetch_fields參數則以應用中預設展示欄位為主。分詞;對推送上來的文檔進行片語切分,TEXT類型為按檢索單元進行切分,SHORT_TEXT為按單字進行切分。如“浙江大學”,TEXT類型會切分成2個片語:“浙江”、“大學”。SHORT_TEXT會切分成4個片語:“浙”、“江”、“大”、“學”。Term:分詞後的片語稱為term。","構建索引:分完詞後會進行索引構建操作,以便根據使用者查詢,快速定位到具體的文檔。搜尋引擎一般會構建出兩種類型的鏈表:倒排和正排鏈表。倒排:片語到文檔的對應關係組成的鏈表,query子句用的就是這種排序方式,查詢效率高。例如:term1->doc1,doc2,doc3;term2->doc1,doc2正排:文檔到欄位對應關係組成的鏈表,filter子句用的就是這種排序方式,效能略慢於倒排。例如:doc1->id,type,create_time…召回:通過使用者查詢的關鍵詞進行分詞,將分詞後的片語通過尋找倒排鏈錶快速定位到文檔,這個過程稱為召回。召回量:召回得到的文檔數為召回量。","排序運算式:排序運算式是用於控制搜尋結果文檔排序的數學運算式,支援基本數學運算、數學函數和內建函數。粗排運算式; 對搜尋結果進行第一輪的海選, 因為要遍曆所有的文檔( 目前上限為100萬), 所以粗排要盡量簡單( 選取對文檔最重要的幾項內容, 如新聞類可以選用文本性及時效性), 按照運算式對文檔進行算分, 並按照算分結果進行排序。 精排運算式; 對第一輪的排序結果選取前N個按照精排運算式進行第二輪更細節的分值計算, 按照分值進行最終的排序, 並返回給使用者。 結果摘要: 常值內容一般會很長, 在搜尋結果展示的時候可以只展示部分匹配的內容, 方便使用者快速瞭解文檔主要內容。 查詢分析: 可以配置若干分析規則, 目前支援拼字檢查、 停用詞、 詞權重等功能, 可以讓使用者更好的幹預搜尋行為, 獲得更好的搜尋體驗。 "};
        request.setDocs(Arrays.asList(docs));
        GetDocumentRankResponse response = client.getDocumentRank("default","ops-bge-reranker-larger",request);
        System.out.println(response.getStatusCode());
    }
}