

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

# 搜尋的運作方式
<a name="how-search-works"></a>

您想要搜尋的整組資料 (有時稱為*「主體」*) 可能包含非結構化的全文字文件、採用標記語言如 XML 等格式的半結構化文件，或是符合嚴謹資料模型的結構化資料。您希望能夠搜尋的每個項目 (如論壇文章或網頁) 都是以一份文件表示。每份文件都具有獨一無二的 ID 和一個或多個欄位，其中包含您要搜尋及納入結果的資料。

若要讓您的資料可搜尋，請以 JSON 或 XML 表示為一批文件，並將批次上傳至您的搜尋網域。然後，Amazon CloudSearch 會根據網域的組態選項，從您的文件資料產生搜尋索引。您要針對該份索引提交查詢，以找出符合特定搜尋條件的文件。

隨著資料變更，您需要提交更新，以便就您的索引新增、更動或刪除文件。系統會依收到的順序持續套用更新。

如需如何將資料格式化的相關資訊，請參閱[準備您的資料](preparing-data.md)。

## Amazon CloudSearch 中的索引
<a name="concepts-indexing"></a>

若要從資料建立搜尋索引，Amazon CloudSearch 需要下列資訊：
+ 您想要搜尋哪些文件欄位？
+ 您想要隨搜尋結果擷取哪些文件欄位值？
+ 哪些文件欄位代表您要用以縮小搜尋範圍和篩選搜尋結果的類別？
+ 應如何處理特定欄位內的文字？

您將透過設定網域組態的索引選項以定義此中繼資料。使用索引選項指定要納入搜尋索引的欄位，並且控制您能夠如何使用這些欄位。

您必須為資料中發生的每個文件欄位設定對應的索引欄位 - 文件欄位與 Amazon CloudSearch 索引中的欄位之間有one-to-one的映射。除了索引欄位名稱，還要指定以下資訊：
+ 索引欄位類型
+ 欄位是否可搜尋 (`text` 和 `text-array` 欄位一律可供搜尋)
+ 欄位是否可做為類別 (面向) 使用
+ 欄位值是否可隨搜尋結果傳回
+ 欄位是否可用於對結果進行排序
+ 對欄位是否可傳回反白句
+ 文件資料中未指定任何值時將使用的預設值

如需如何設定 Amazon CloudSearch 索引欄位的詳細資訊，請參閱 [設定索引欄位](configuring-index-fields.md)。

## Amazon CloudSearch 中的面向
<a name="concepts-facets"></a>

「面向」是一種索引欄位，代表您要用以縮小搜尋範圍和篩選搜尋結果的類別。當您向 Amazon CloudSearch 提交搜尋請求時，您可以請求面向資訊，以了解有多少命中項目在面向中共用相同的值。您可以顯示此資訊以及搜尋結果，並用它讓使用者以互動方式縮小搜尋範圍。(通常稱之為分面瀏覽或分面搜尋。)

面向可以是已在網域組態中啟用面向的任何日期、文字或數值欄位。對於每個面向，Amazon CloudSearch 會計算共用相同值的命中次數。您可以定義儲存貯體來計算面向值特定子集的面向計數。只有具有相符項目的儲存貯體才會包含在構面結果中。

如需如何設定面向的相關資訊，請參閱[設定索引欄位](configuring-index-fields.md)。如需如何利用面向資訊支援分面瀏覽的相關資訊，請參閱[在 Amazon CloudSearch 中取得和使用面向資訊](faceting.md)。

## Amazon CloudSearch 中的文字處理
<a name="concepts-text-processing"></a>

在編製索引期間，Amazon CloudSearch 會根據為 `text-array` 欄位設定的語言特定分析方案來處理 `text`和 欄位的內容。分析方案會控制文字的標準化、字符化和起源方式，並指定索引期間要考慮的任何停止詞或同義詞。Amazon CloudSearch 提供每種支援語言的預設分析方案。如需如何設定自訂分析方案的相關資訊，請參閱[設定分析方案](configuring-analysis-schemes.md)。如需 Amazon CloudSearch 如何標準化和字符化文字，以及在編製文字欄位索引和處理搜尋請求時套用設定的文字選項的詳細資訊，請參閱 [Amazon CloudSearch 中的文字處理](text-processing.md)。

## 在 Amazon CloudSearch 中排序結果
<a name="concepts-result-ranking"></a>

您可透過定義運算式就符合搜尋條件的每份文件計算自訂值，以自訂搜尋結果的排名方式。例如，您可以定義一個表達式，將文件`popularity`欄位中的值以及 Amazon CloudSearch 表達式計算的預設相關性分數納入考量，只是使用標準數值運算子和函數的數值表達式。運算式可參考 `int` 和 `double` 欄位、其他運算式、文件的相關性分數 (\$1score) 以及 epoch 時間 (\$1time)。在提交搜尋請求時，指定您要用於對搜尋結果進行排序的運算式。您的搜尋條件也可以參考運算式。

文件的相關性 `_score` 代表特定的搜尋命中項目與搜尋請求相關的程度。為了計算相關性分數，Amazon CloudSearch 會考慮搜尋詞彙在文件中相對於索引中其他文件出現的次數。

如需如何為您的網域設定運算式的相關資訊，請參閱[設定運算式](configuring-expressions.md)。

## 在 Amazon CloudSearch 中搜尋請求
<a name="concepts-searches"></a>

您將以 HTTP/HTTPS GET 請求的形式向您網域的搜尋端點提交搜尋請求。您可指定各種選項以限制您的搜尋、請求面向資訊、控制排名和指定要由結果傳回的資訊。取得的搜尋結果可為 JSON 或 XML。根據預設，Amazon CloudSearch 會以 JSON 傳回結果。

當您提交搜尋請求時，Amazon CloudSearch 會對搜尋字串執行文字處理。搜尋字串的處理方式如下：
+ 將所有字元轉換成小寫
+ 根據空白字元和標點符號界限將字串拆成單獨的字詞 
+ 將搜尋的欄位列於停用詞清單上的字詞移除
+ 根據為要搜尋之欄位設定的莖和同義詞選項來映射莖和同義詞。

在此預先處理完成後，Amazon CloudSearch 會查詢索引中的搜尋詞彙，並識別符合請求的所有文件。若要產生回應，Amazon CloudSearch 會處理此搜尋命中清單，以篩選和排序相符的文件和運算面向。然後，Amazon CloudSearch 會以 JSON 或 XML 傳回回應。

根據預設，Amazon CloudSearch 會傳回根據命中相關性 \$1scores 排名的搜尋結果。或者，您的請求亦可指定要用於對命中項目進行排序的索引欄位或運算式。例如，您可能希望命中項目按照包含價格的索引欄位或計算熱門程度的運算式排序。

如需如何搜尋、將結果排名及分頁的詳細資訊，請參閱[使用 Amazon CloudSearch 搜尋您的資料](searching.md)。