本頁說明如何使用Google Cloud 控制台預覽媒體應用程式的搜尋結果,以及如何使用 API 取得搜尋結果。
如要導入搜尋應用程式,您可以建立搜尋小工具並新增至網頁,也可以傳送 API 呼叫,並整合到網頁或應用程式。
關於搜尋模式
媒體應用程式支援多種搜尋查詢模式:
- 完整查詢:當使用者希望搜尋整個搜尋字詞或片語時,舉例來說,在音樂串流應用程式中,使用者可以輸入完整歌名並一次搜尋。如果輸入介面允許使用者一次搜尋,例如語音輸入或鍵盤輸入,這種方式就是搜尋首選。 - 在完整查詢中,如果輸入內容有拼字錯誤,使用者會希望系統修正錯誤。 - 這與搜尋非媒體 (自訂) 應用程式的行為相同。請參閱「從含結構化/非結構化資料的應用程式取得搜尋結果」。 
- 部分查詢 (或邊打邊搜尋):使用者每輸入一個字母,系統就會動態提供一組新的搜尋結果。舉例來說,在音樂串流應用程式中,使用者開始輸入要搜尋的歌曲名稱,每輸入一個字母,搜尋結果就會動態更新並縮小範圍。 
- 自動模式:自動模式會混合使用完整和部分模式。在自動模式下,媒體搜尋會決定要傳回部分或完整查詢結果。 - 為判斷使用者的可能意圖,媒體搜尋會分析並加權各種信號,例如輸入的字母數、輸入速度,以及輸入內容是否為可辨識的實體 (例如演員或電影的名稱)。 
要使用的模式
媒體搜尋查詢的預設模式為自動模式。不過,在某些情況下,您可能會選擇覆寫預設模式,並指定完整或部分查詢模式。以下是一些應用實例:
| 情境 | 模式 | 
|---|---|
| 您非常有把握使用者查詢的是完整查詢。舉例來說,您有一個搜尋框,其中包含 Enter 函式,可標示查詢完成,而使用者按下 Enter 鍵。 | 完整查詢 | 
| 您非常有把握使用者查詢的是部分查詢,也就是說,他們希望在輸入每個字母後,結果清單會隨之更新。 | 部分查詢 | 
| 以上兩種情況皆不適用。讓媒體搜尋決定是否要以部分或完整形式傳回查詢結果。 | 自動 | 
取得媒體應用程式的搜尋結果
您可以從 Google Cloud 控制台預覽搜尋結果,也可以使用 API 取得搜尋結果。如要取得媒體應用程式的搜尋結果,請按照下列步驟操作:
控制台
如要使用 Google Cloud 控制台預覽媒體搜尋並設定小工具,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「AI Applications」頁面。 
- 按一下媒體搜尋應用程式的名稱。 
- 按一下「Configurations」。 
- 按一下「UI」分頁標籤。 
- 在「UI」分頁中,設定「一般設定」和「資料顯示」選項。 
- 在「預覽」窗格中,開始輸入查詢。 
- 如要儲存設定並在「整合」分頁中套用,請按一下「儲存並發布」。 
REST
使用 engines.servingConfigs.search 方法取得媒體應用程式的搜尋結果:
- 找出應用程式 ID。如果已有應用程式 ID,請跳到下一個步驟。 - 前往 Google Cloud 控制台的「AI Applications」頁面。 
- 在「應用程式」頁面中,找出應用程式名稱,然後從「ID」欄取得應用程式的 ID。 
 
- 執行下列 curl 指令,取得邊打邊搜尋結果。 - 除了 - contentSearchSpec以外的所有欄位,都可以與- searchAsYouTypeSpec欄位搭配使用。為求清楚,curl 指令已省略選填欄位。如需選填欄位,請參閱「取得使用結構化或非結構化資料建立的應用程式搜尋結果」。- curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "searchAsYouTypeSpec": {"condition": "SPEC_CONDITION"} }'- 更改下列內容: - PROJECT_ID:您的 Google Cloud 專案 ID。
- PROJECT_ID:您的 Google Cloud 專案 ID。
- APP_ID:要查詢的 Vertex AI Search 應用程式 ID。
- QUERY:要搜尋的查詢文字。
- SPEC_CONDITION:輸入時搜尋規格可採用下列其中一個值:- ENABLED:適用於部分查詢
- DISABLED:完整查詢
- AUTO:視情況部分或全額退款。如果將- SPEC_CONDITION欄位留空或未指定,預設搜尋模式為- AUTO。
 
 - 指令和部分結果範例- curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:search" \ -d '{ "query": "Mission Impossible", "searchAsYouTypeSpec": {"condition": "DISABLED"} }' 
 { "results": [ { "id": "189333", "document": { "name": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/189333", "id": "189333", "structData": { "uri": "http://mytestdomain.movie/content/189333", "title": "Mission: Impossible - Fallout (2018)", "categories": [ "Action", "Adventure", "Thriller" ], "available_time": "2023-01-01T00:00:00Z", "media_type": "movie", "expire_time": "2033-01-01T00:00:00Z" } } }, { "id": "111781", "document": { "name": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/111781", "id": "111781", "structData": { "media_type": "movie", "available_time": "2023-01-01T00:00:00Z", "uri": "http://mytestdomain.movie/content/111781", "title": "Mission: Impossible - Rogue Nation (2015)", "categories": [ "Action", "Adventure", "Thriller" ], "expire_time": "2033-01-01T00:00:00Z" } } }, ... { "id": "116507", "document": { "name": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/116507", "id": "116507", "structData": { "uri": "http://mytestdomain.movie/content/116507", "categories": [ "Comedy" ], "media_type": "movie", "available_time": "2023-01-01T00:00:00Z", "title": "Mission London (2010)", "expire_time": "2033-01-01T00:00:00Z" } } } ], "totalSize": 5628, "attributionToken": "vgL0PQEKDAiZxMbCBhD2koiqAxIkNjg1MWM3OTUtMDAwMC0yOWVmLThhNzUtZDQzYTJjYzdiYmNmIgVNRURJQSpUtreMLa_WoTGs1qExwvCeFaOAlyKrtZwxxcvzF-7r6TGotZwxkPeyMI6RyTDPv-Iw1L_iMJvWty2Ovp0V1LKdFfHr6THs4K8tkvGsMJXxrDCY1rctMAFKEjB4OTYzYjdjNGE0ZGYwN2FhZlKUAXByb2plY3RzLzc1NjIwNjYwODQ3OS9sb2NhdGlvbnMvZ2xvYmFsL2NvbGxlY3Rpb25zL2RlZmF1bHRfY29sbGVjdGlvbi9lbmdpbmVzL3F1aWNrc3RhcnQtbWVkaWEtcmVjb21tZW5kXzE3NDUwMjUyMjYwNDMvc2VydmluZ0NvbmZpZ3MvZGVmYXVsdF9zZWFyY2g", "nextPageToken": "Y2YiJ2NjNmMhNDNk1SN3EGOtYWZ5ITLwADMw0CN5czYxUDO2QiGDI9kgzIEGIs1tmJCMIBM1IgC", "summary": {}, "queryExpansionInfo": {} }