在 Amazon CloudSearch 尋結果進行排序 - Amazon CloudSearch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon CloudSearch 尋結果進行排序

預設情況下,搜尋結果會依其與搜尋請求的相關性進行排序。文件的相關性分數 (_score) 是以搜尋詞彙在此文件中出現的頻率相較於該詞彙遍佈網域內所有文件的常見程度為基準。相關性分數為正值,視您的資料及查詢而定,變動幅度可能頗大。查詢中每個字句的分數將相加,所以字句較多的查詢自然會比只有一兩個字句的查詢得到更高的分數。若您知道典型的查詢是什麼樣貌,便可進行一些測試查詢來了解大概會落在哪個分數範圍。

如欲變更搜尋結果的排序方式,您可以:

  • 使用 textliteral 欄位將結果按字母順序排序。請注意 Amazon CloudSearch 係依 Unicode 字碼指標進行排序,所以數字會排在英文字母前面,而大寫字母會排在小寫字母前面。數字排序視同字串,而非按照其值;例如,10 會排在 2 前面。

  • 使用 intdouble 欄位將結果按數字大小排序。

  • 使用 date 欄位將結果按日期排序。

  • 使用自訂運算式對結果進行排序。

若要使用欄位對搜尋結果進行排序,您必須設定該欄位為 SortEnabled。唯有單值欄位可為SortEnabled-陣列類型的欄位無法用於排序。如需如何設定欄位的詳細資訊,請參閱configure indexing options

若要使用運算式進行排序,請使用 int 欄位、其他運算式、文件的相關性分數以及數字運算子和函數,建構數值運算式。您可以由網域組態或搜尋請求中定義運算式。如需如何設定運算式的詳細資訊,請參閱設定運算式

提示

若要將結果隨機排序,您可以使用單純的 _rand 運算式:

/2013-01-01/search?expr.r=_rand&q=test&return=r%2Cplot%2Ctitle&sort=r+desc

此運算式相當穩定,即便您來回翻頁也不會丟失最初的隨機排序方式。若您想要使用不同的隨機排序方式,可以在 _rand 值後面加上 a-z0-9 字元,例如:

/2013-01-01/search?expr.r=_rand1a2b3c&q=test&return=r%2Cplot%2Ctitle&sort=r+desc

您將使用 sort 參數,指定您要用於對結果進行排序的欄位或運算式。除了欄位或運算式的名稱,您還必須明確指定排序方向。例如,。sort=year ascsort=year desc

當您使用欄位進行排序時,該欄位內無任何值的文件將列於最後。如果您是指定欄位或運算式以逗號分隔的清單,第一個欄位或運算式將做為主要排序條件,第二個則做為次要排序條件,依此類推。

若您並未指定 sort 參數,搜尋結果將會按照文件的預設相關性分數排名,最高分的文件列於最前。這相當於指定 sort=_score desc

您可以使用 q.options 參數指定欄位權重,供系統在計算文件的相關性分數 _score 時套用。如需更多詳細資訊,請參閱 使用欄位相對權重自訂文字相關性