在 Amazon 中獲取自動完成建議 CloudSearch - Amazon CloudSearch

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

在 Amazon 中獲取自動完成建議 CloudSearch

本節說明如何設定建議者以讓您能夠擷取建議。建議是不完整搜尋查詢的可能相符項目,這些建議可讓您在使用者完成輸入查詢之前顯示可能的相符項目。在 Amazon 中 CloudSearch,建議基於特定文本字段的內容。當您請求建議時,Amazon 會 CloudSearch 尋找建議欄位中其值以指定查詢字串開頭的所有文件 — 欄位的開頭必須與查詢字串相符,才能視為相符項目。傳回的資料包含每個相符項目的欄位值和文件 ID。您可以設定建議者尋找完全符合查詢字串的項目,或是執行近似字串比對 (模糊比對) 以更正輸入錯誤和拼字錯誤。

如需建議 API 的詳細資訊,請參閱Search API 中的建議

配置 Amazon 的建議者 CloudSearch

設定建議者時,您必須為可能相符項目指定您要搜尋的文字欄位名稱,以及建議者的唯一名稱。用於建議的欄位必須啟用傳回。欄位內的資料僅前 512 個位元組將用於產生建議。

建議者名稱必須以字母開頭,長度至少 3 個字元且不超過 64 個字元。允許的字元為:a-z (小寫字母)、0-9 和 _ (底線)。建議者名稱是您在擷取建議時於查詢字串中指定,所以最好使用簡短名稱。名稱 score 是保留項目,不得做為建議者名稱使用。

建議者還支援以下兩個選項:

  • FuzzyMatching當建議字串的相符項目為無、低或高時,您可以將允許的模糊層級設定。設為 none 時,指定的字串將視為確切字首。設為 low 時,建議項目與指定的字串相差不得超過一個字元。設為 high 時,建議項目可相差多達兩個字元。預設為 none。

  • SortExpression您可以配置此運算式來計算每個建議的分數,以控制它們的排序方式。分數會捨入到最接近的整數,下限為 0 且上限為 2^31-1。提供建議時對文件的相關性分數不做計算,所以排序運算式不得參考 _score 值。若要使用數值欄位或現有運算式對建議進行排序,可直接指定該欄位或運算式的名稱。如果沒有為建議者設定任何運算式,則會按字母順序對建議進行排序。請注意,在搜尋請求或其他運算式中不得參考建議者內所定義的運算式。若您另有其他用途要使用這類運算式,請將其加入到您的網域組態並由建議者參考其名稱。如需運算式的詳細資訊,請參閱設定運算式

若您想要透過多個文字欄位取得建議,請為每個欄位各定義一個建議者,並提交個別的建議請求以經由各建議者取得相符項目。最多可以設定 10 個建議者。建議者可能消耗大量的記憶體和磁碟空間,尤其是使用含有大量文字的來源欄位和模糊比對程度設為高的情況。

提示

與其設定由建議者使用取自「所有」文件的「所有」可能性,不妨考慮對最熱門的 1,000 組或 10,000 組搜尋查詢編製索引,再設定由建議者使用這些查詢。您可以將查詢存儲在單獨的 Amazon CloudSearch 索引中,或僅用於建議的字段中。

定義建議者的最簡單方法是通過 Amazon CloudSearch 控制台中的「建議者」頁面。您也可以使用 AWS 開發套件或 AWS CLI 定義建議者。

重要

為您的搜尋網域加入建議者之後,您必須編製索引,才能使用該建議者來擷取建議。隨著文件的添加和刪除,您必須定期重建索引以更新建議。除非您呼叫 IndexDocuments,建議內容一概不會反映已添加或刪除的文件。

透過 Amazon CloudSearch 主控台設定建議者

您可以透過 Amazon CloudSearch 主控台輕鬆新增、更新和刪除建議者。

加入建議者
  1. 在以下位置打開 Amazon CloudSearch 控制台 https://console.aws.amazon.com/cloudsearch/home

  2. 在左側導覽窗格中選擇 Domains (網域)。

  3. 選擇要開啟其組態的網域名稱。

  4. 轉到高級搜索選項標籤。

  5. 在 [建議者] 窗格中,選擇 [新增建議者 .s]

  6. 輸入新建議者的名稱。

  7. 對於 「來源」欄位,請指定用於建議的文字欄位。

  8. 若要包含更正次要拼字錯誤或拼字錯誤的建議,請將「模糊比對」設定為「低」或「高」。設為低時,建議將包括與使用者的查詢字串只相差一個字元的詞彙。設為高時,建議將包括相差多達兩個字元的詞彙。

  9. 若要控制建議的排序方式,請在「排序運算式」欄位中輸入數值表示式。此運算式可直接輸入您要用於對建議進行排序的數值欄位的名稱、現有運算式的名稱或任何有效的運算式。如需運算式的詳細資訊,請參閱設定運算式

  10. 按一下 Save changes (儲存變更)。

  11. 當您完成搜尋網域的建議人設定後,您必須重新建立網域索引,才能使用建議者。若要執行索引,請移至網域儀表板,然後選擇 [動作]、[執行索引]。

使用 AWS CLI 設定建議者

您可以使用 aws cloudsearch define-suggester 命令,加入或更新建議者。若要移除建議者,請使用 aws cloudsearch delete-suggester

加入或更新建議者
  • 執行 aws cloudsearch define-suggester 命令。您要使用 --suggester 選項以 JSON 格式指定建議者的組態。建議者組態必須用引號括住,而且組態內的所有引號必須用反斜線逸出。如需建立者組態的格式,請參閱《命令參考》中的定義建立者。AWS CLI例如,以下命令設定一個名為 mysuggester 的建議者以根據 title 欄位傳回建議。

    aws cloudsearch define-suggester --domain-name movies --suggester "{\"SuggesterName\": \"mysuggester\", \"DocumentSuggesterOptions\": {\"SourceField\":\"title\"}}" { "Suggester": { "Status": { "PendingDeletion": false, "State": "RequiresIndexDocuments", "CreationDate": "2014-06-26T17:26:43Z", "UpdateVersion": 27, "UpdateDate": "2014-06-26T17:26:43Z" }, "Options": { "DocumentSuggesterOptions": { "SourceField": "title" }, "SuggesterName": "mysuggester" } } }

    您可以使用 --fuzzy-matching 選項,以包括對輕微拼字錯誤或錯別字進行更正的建議。模糊比對的有效值為 nonelowhigh (預設為 none.) 設為 low 時,建議將包括與使用者的查詢字串只相差一個字元的詞彙。設為 high 時,建議將包括相差多達兩個字元的詞彙。例如,以下命令設定 mysuggester 以包括與使用者的查詢字串只相差一個字元的建議:

    aws cloudsearch --name mysuggester --source title --fuzzy-matching low

    您可以使用 --sort-expression 選項來控制所傳回建議的排序方式。任何有效的運算式皆可用於排序 (此選項通常是直接輸入數值欄位的名稱或預先定義的運算式的名稱)。例如,若要根據 year 欄位內的值對 mysuggester 傳回的建議進行排序,請指定:

    aws cloudsearch define-suggester --name mysuggester --source title --fuzzy-matching low --sort-expression year
刪除建議者
  • 執行 aws cloudsearch delete-suggester 命令並指定 --name 選項。例如,若要刪除 mysuggester

    aws cloudsearch delete-suggester --name mysuggester --delete

使用 AWS 開發套件設定建議者

AWS 開發套件 (Android 和 iOS 開發套件除外) 支援 Amazon CloudSearch 設定 API 中定義的所有 Amazon CloudSearch 動作,包括。DefineSuggester如需安裝與使用 AWS 開發套件的詳細資訊,請參閱 AWS 軟體開發套件

在 Amazon 中檢索建議 CloudSearch

您可透過 HTTP GET 傳送請求至網域搜尋端點上的 suggest 資源以擷取建議。例如:

http://search-movies-rr2f34ofg56xneuemujamut52i.us-east-1.cloudsearch. amazonaws.com/2013-01-01/suggest?q=oce&suggester=mysuggester

請求中必須指定 API 版本,且查詢字串必須採用 URL 編碼。建議請求的大小上限為 8190 位元組,包括 HTTP 方法、URI 及通訊協定版本在內。

suggest 資源支援四個參數:

  • q - 您要取得其建議的字串。

  • suggester - 您要使用的建議者的名稱。

  • size要擷取的建議數目。預設會傳回前十名的建議 (建議根據建議器中定義的排序表達式進行排序。 如果在建議器中未定義排序表達式,則建議按字母順序排序。)

  • format回應的內容類型,jsonxml。預設會以 JSON 格式傳回建議。

務必指定 qsuggester 參數。若您請求就空字串提供建議,則不會傳回任何建議。sizeformat 是選用參數。

以下範例將根據 title 欄位的內容,取得對字串 oce 的建議。

http://search-imdb2-m2brrr7ex7z6sqhgwsjdmcuvd4.us-east-1.cloudsearch.amazonaws.com/2013-01-01/suggest?q=oce&suggester=title { "status": { "rid": "646f5s0oDAr8pVk=", "time-ms": 2 }, "suggest": { "query": "oce", "found": 3, "suggestions": [{ "suggestion": "Ocean's Eleven", "score": 0, "id": "tt0054135" }, { "suggestion": "Ocean's Thirteen", "score": 0, "id": "tt0496806" }, { "suggestion": "Ocean's Twelve", "score": 0, "id": "tt0349903" } ] } }