步驟 3:搜索您的 Amazon CloudSearch 域 - Amazon CloudSearch

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

步驟 3:搜索您的 Amazon CloudSearch 域

您可以使用 Amazon CloudSearch 主控台中的搜尋測試器來提交範例搜尋請求並檢視結果。您也可以透過 Web 瀏覽器或使用 cURL 提交範例搜尋請求。在您的應用程式中,您可以使用任何 HTTP 程式庫將搜尋流量傳送到您的 Amazon CloudSearch 網域。

使用搜尋測試器進行搜尋

Amazon CloudSearch 主控台中的搜尋測試器可讓您使用任何支援的查詢解析器提交範例搜尋請求:簡單、結構化、明確或 dismax。根據預設,要求會使用簡單的查詢剖析器來處理。您可以為選取的剖析器指定選項、篩選和排序結果,以及瀏覽設定的 Facet。搜尋結果中會自動反白顯示搜尋結果。若要取得有關如何執行此操作的資訊,請參閱在亞馬遜雲搜尋中反白呈現搜尋命中項目。您也可以選取建議者,在「搜尋」欄位中輸入字詞時取得建議。(您必須配置一個建議者,然後才能獲得建議。 如需詳細資訊,請參閱在 Amazon 中獲取自動完成建議 CloudSearch。)

根據預設,系統會根據自動產生的相關性分數 _score 來排序結果。如需自訂結果排名方式的資訊,請參閱在 Amazon CloudSearch 尋結果進行排序

搜尋您的網域
  1. 轉到 Amazon CloudSearch 控制台 https://console.aws.amazon.com/cloudsearch/home.

  2. 在左側導覽面板中,選擇您的電影網域以開啟其設定。

  3. 選擇 [執行測試搜尋]。

  4. 若要執行簡單文字搜尋,請輸入搜尋查詢,然後選擇「執行」。依預設,會搜尋所有texttext-array欄位。

要搜索特定字段,請展開「選項」,然后在「搜索字段」字段中輸入要搜索的字(以逗號分隔)列表。您可以使用插入符號 (^) 將權數附加至每個欄位,以控制搜尋結果中每個欄位的相對重要性。例如,在計算每個相符文件的title相關性分數時,在description欄位中指定title^5, description權重命中的次數是欄位中命中的五倍。

若要使用結構化查詢語法,請從「查詢剖析器」選單中選取「結構化」 選取結構化查詢剖析器之後,請在 [搜尋] 欄位中輸入您的結構化查詢,然後選擇 [執行]。例如,若要尋找在 2000 年或更早版本中發行的所有標題中含有號的電影,您可以輸入:(and title:'star' year:{,2000])。如需詳細資訊,請參閱 建構複合查詢。若要提交 Lucene 或查 DisMax 詢,請選取適當的查詢剖析器。

您可以為選取的查詢剖析器指定其他選項,以設定預設運算子,並控制查詢中可使用的運算子。如需詳細資訊,請參閱 搜尋請求參數

您可以複製並貼上要求 URL,以提交要求並從 Web 瀏覽器檢視回應。請求可以通過 HTTP 或 HTTPS 發送。

從 Web 瀏覽器提交搜尋請求

您可以從任何 Web 瀏覽器直接向您的搜尋端點提交搜尋請求。您可使用任何查詢剖析器 (simple、structured、lucene 或 dismax) 並指定各種選項以限制您的搜尋、請求面向資訊、自訂排名和控制要由結果傳回的資訊。

例如,若要搜尋您的電影網域並取得所有可用的《星際大戰》電影的標題,請將下列搜尋字串附加至搜尋端點 (2013-01-01 是 API 版本,必須指定)。

/2013-01-01/search?q=star+wars&return=title
注意

網域的搜尋端點會顯示於網域儀表板。您也可以從 AWS 管理主控台執行搜尋、檢視原始請求和回應、從搜尋請求欄位複製請求 URL。網域的搜尋端點和文件服務端點在網域生命週期當中會保持不變。

默認情況下,Amazon CloudSearch 返回 JSON 響應。您也可以指定 format 參數 format=xml,取得 XML 格式的搜尋結果 (請注意,錯誤可能以 JSON 或 XML 格式傳回,具體取決於錯誤源自何處)。

搜尋數值欄位

您可以使用結構式查詢語法 q.parser=structured,尋找具有特定數值屬性的文件。您可於任何數值欄位內 (doubledouble-arrayintint-array) 搜尋確切值或某範圍的值。若要搜尋某範圍,請指定上限和下限並以逗號分隔,然後用方括號或大括號將範圍括住。使用方括號 ([,]) 含括界限,使用大括號 ({,}) 排除界限。例如:

  • year:2000 比對 year 欄位包含 2000 這個值的文件。

  • year:[2000,} 比對 year 欄位包含的值大於或等於 2000 的文件。

  • year:{,2000] 比對 year 欄位包含的值小於或等於 2000 的文件。

  • year:[2000,2011] 比對 year 欄位包含的值介於 (含括) 2000 到 2011 之間的文件。

  • year:{2000,2011} 比對 year 欄位包含的值介於 (不含) 2000 到 2011 之間的文件。

您也可以搜尋日期欄位是否包含特定日期或日期範圍,但必須用單引號括住每個日期字串:release_date:['2000-01-01T00:00:00Z','2011-01-01T00:00:00Z']

例如,以下結構式查詢會在 title 欄位內搜尋 "star",尋找所有符合條件於 2000 年之前發行的電影,並傳回每部電影的片名、年份和相關性分數:

範例
q=(and title:'star' year:{,2000])&q.parser=structured&return=title,year,_score

回應將顯示請求的狀態、符合的文件份數以及每個命中項目請求的欄位。

{ "status": { "rid": "hLPckLsoEQoELQo=", "time-ms": 2 }, "hits": { "found": 15, "start": 0, "hit": [ { "id": "tt0076759", "fields": { "title": "Star Wars", "year": "1977", "_score": "5.7601414" } }, . . . { "id": "tt0088170", "fields": { "title": "Star Trek III: The Search for Spock", "year": "1984", "_score": "4.2371693" } } ] } }

如需如何建構搜尋查詢的詳細資訊,請參閱使用 Amazon 搜索您的數據 CloudSearch

對搜尋結果進行排序

根據預設,Amazon 會根據自動產生的相關性來 CloudSearch 排序搜尋結果_score。您可在搜尋請求中使用 sort 參數指定想要用於排名的欄位或運算式,以改變結果的排名方式 (運算式是一個自訂數值運算式,可針對相符文件集中的每個文件進行評估。 若要取得有關定義自己表示式的資訊,請參閱設定運算式。)

若您使用 sort 參數指定文字欄位,結果將會依據該欄位按字母順序排序。例如,若要將您的電影網域傳回的結果依片名按字母順序排序,請於查詢字串中加入 &sort=title asc

2013-01-01/search?q=(and genres:'Sci-Fi' year:{,2000])&q.parser=structured&return=title,year&sort=title asc

請注意,您必須明確指定排序方向,即 asc (遞增) 或 desc (遞減)。當您按字母順序排序時,Amazon 會按 Unicode 代碼點進行 CloudSearch 排序。也就是說,數字會排在英文字母前面,而大寫字母會排在小寫字母前面。數字排序視同字串;例如,10 會排在 2 前面。

同樣地,您可以使用 sort 參數指定整數欄位,將結果按數字大小排序。

如果您是指定欄位或運算式以逗號分隔的清單,第一個欄位或運算式將做為主要排序條件,第二個則做為次要排序條件,依此類推。

如需結果排名方式的詳細資訊,請參閱在 Amazon CloudSearch 尋結果進行排序

取得面向資訊

「面向」是一種索引欄位,代表您要用以縮小搜尋範圍和篩選搜尋結果的類別。當您向 Amazon 提交搜尋請求時 CloudSearch,您可以請求 Facet 資訊,以瞭解一個方面有多少點擊共用相同的值。您可以將此資訊與搜尋結果一起顯示,並使用它來讓使用者以互動方式精簡其搜尋。(通常稱之為分面瀏覽或分面搜尋。)

Facet 可以是任何日期、常值或數字欄位,在您的網域設定中啟用了刻面功能。對於每個方面,Amazon CloudSearch 計算共享相同值的命中數量。您可以定義值區,以計算刻面值之特定子集的刻面計數。只有具有相符項目的值區才會包含在 Facet 結果中。

隨搜尋結果取得面向數量
  • 使用 facet.FIELD 選項指定您要計算其面向的欄位。IMDb 電影範例資料已啟用面向分類的欄位如下:genresrankratingrelease_daterunning_time_secsyear。面向選項是指定成 JSON 物件。如果 JSON 物件是空的 (facet.FIELD={}),則會對所有欄位值計算面向數量,依面向數量將面向排序,並隨結果傳回前 10 名的面向:

    q=star&return=title&facet.genres={}

結果會將面向列示於命中項目的下方。

facets": { "genres": { "buckets": [ {"value": "Comedy","count": 41}, . . . {"value": "Sport", "count": 7} ] } }

您可以指定各種選項來計算選定欄位值的面向、指定結果所要包含的面向值數目上限,以及控制面向的排序方式。

若要定義值區以計算選定欄位值的面向數量,請指定 buckets 選項。例如,以下請求會將 year 欄位的面向數量依十年的期間排序:

q=star&facet.year={buckets:["[1970,1979]","[1980,1989]","[1990,1999]"]}

本例將面向數量侷限於三個指定的範圍內:

"facets": { "year": { "buckets": [ {"value": "[1970,1979]", "count": 3}, {"value": "[1980,1989]","count": 7}, {"value": "[1990,1999]","count": 12} ] } }

如需如何指定面向選項的詳細資訊,請參閱在亞馬遜雲端搜尋中取得與使用面向資訊

取得搜尋反白句

搜尋反白句是文字欄位或文字陣列欄位的一段摘錄,顯示了搜尋詞彙出現在該欄位內的位置。

隨搜尋結果取得反白句資訊
  • 使用 highlight.FIELD 選項指定您要取得其反白句的文字欄位或文字陣列欄位。您必須透過網域的索引選項,對該欄位啟用反白。IMDb 電影範例資料已啟用反白的欄位如下:actorsdirectorsplottitle。反白選項是指定成 JSON 物件。如果 JSON 對象是空的highlight.FIELD={},Amazon 通過將它們包含在 HTML 重點標記中 CloudSearch 突出顯示搜索詞的所有出現<em>term</em>,並且摘錄返回為 HTML。

    q=title:'star'&q.parser=structured&return=_no_fields&highlight.title={}

反白句資訊隨附於各個命中項目。

hits": { "found": 29, "start": 0, "hit": [ { "id": "tt0796366", "highlights": { "title": "<em>Star</em> Trek" } }, . . . { "id": "tt2488496", "highlights": { "title": "<em>Star</em> Wars: Episode VII" } } ] }

如需如何指定反白選項的詳細資訊,請參閱在亞馬遜雲搜尋中反白呈現搜尋命中項目