

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

# 在 Amazon CloudSearch 中排序結果
<a name="sorting-results"></a>

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

如欲變更搜尋結果的排序方式，您可以：
+ 使用 `text` 或 `literal` 欄位將結果按字母順序排序。請注意，Amazon CloudSearch 會依 Unicode 編碼點排序，因此數字會先於字母，而大寫字母則先於小寫字母。數字排序視同字串，而非按照其值；例如，10 會排在 2 前面。
+ 使用 `int` 或 `double` 欄位將結果按數字大小排序。
+ 使用 `date` 欄位將結果按日期排序。
+ 使用自訂運算式對結果進行排序。

若要使用欄位對搜尋結果進行排序，您必須設定該欄位為 `SortEnabled`。只有單一值欄位可以 `SortEnabled`— 您不能使用陣列類型欄位進行排序。如需如何設定欄位的詳細資訊，請參閱[設定索引欄位](configuring-index-fields.md)。

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

**提示**  
若要將結果隨機排序，您可以使用單純的 `_rand` 運算式：  

```
/2013-01-01/search?expr.r=_rand&q=test&return=r%2Cplot%2Ctitle&sort=r+desc
```
此運算式相當穩定，即便您來回翻頁也不會丟失最初的隨機排序方式。若您想要使用不同的隨機排序方式，可以在 `_rand` 值後面加上 `a-z` 和 `0-9` 字元，例如：  

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

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

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

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

您可以使用 `q.options` 參數指定欄位權重，供系統在計算文件的相關性分數 `_score` 時套用。如需詳細資訊，請參閱[使用欄位相對權重自訂文字相關性](weighting-fields.md)。