

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

# 在搜尋請求中定義 Amazon CloudSearch 表達式
<a name="defining-expressions-in-requests"></a>

您可以直接由搜尋請求中定義與使用運算式，讓您能夠快速反覆運算，同時微調用於對結果進行排序的運算式。若由搜尋請求中定義運算式，您還可以將情境資訊納入運算式，例如使用者的地理位置。您可藉著由搜尋請求中定義同名的運算式以覆寫網域組態所定義的運算式。

由搜尋請求中定義的運算式並不會存放於您的網域組態。若想要在其他請求中使用該運算式，每一次的請求都必須定義該運算式，或者將該運算式加入至您的網域組態。由每一次的請求定義運算式而非加入至網域組態會增加請求負擔，以致可能造成回應時間過久進而增加您運行網域的成本。如需如何將運算式加入至網域組態的相關資訊，請參閱[設定運算式](configuring-expressions.md)。

單次搜尋請求可以定義與使用多個運算式。運算式的定義可參考該請求中定義的其他運算式，以及由網域組態所設定的運算式。

由搜尋請求中定義的運算式並無任何用法上的限制。您可以使用運算式對搜尋結果進行排序、定義其他運算式，或由搜尋結果傳回經過計算的資訊。

**由搜尋請求中定義運算式**

1. 使用 `expr.{{NAME}}` 參數，其中 NAME 是您要定義的運算式的名稱。例如：

   ```
   expr.rank1=log10(clicks)*_score
   ```

1. 若要使用此運算式對結果進行排序，使用 `sort` 參數指定運算式的名稱：

   ```
   search?q=terminator&expr.rank1=log10(clicks)*_score&sort=rank1 desc
   ```

1. 若要將計算得出的值納入搜尋結果，於 `return` 欄位的清單中加入此運算式：

   ```
   search?q=terminator&expr.rank1=log10(clicks)*_score&sort=rank1 desc&return=rank1
   ```

 例如，以下請求建立兩個運算式用於對結果進行排序，並隨搜尋結果傳回其中一個運算式：

```
search?q=terminator&expr.rank1=sin( _score)&expression.rank2=cos( _score)&sort=rank1 desc,rank2 desc&return=title,_score,rank2
```