取得搜尋結果

本頁面說明如何使用搜尋功能進行基本查詢,包括文字查詢搜尋、瀏覽搜尋、分頁、最佳化和個人化結果。

絕不要快取來自使用者的個人化結果,也不要將個人化結果傳回給其他使用者。

相關性與比對不同。比對是指在索引中找出與使用者搜尋查詢相符的候選產品。另一方面,關聯性則是指相符程度。這項功能會根據使用者的意圖和需求,將產品排序在最合適的位置。零售業適用的 Vertex AI Search 採用多種技術,可提升比對和相關性,為使用者提供更優質的整體搜尋體驗,滿足零售商需求。

Vertex AI Search for Commerce 預設會依據搜尋結果的關聯性排序。不過,搜尋功能也會調整,在搜尋結果中顯示關聯性稍低的項目,為零售商提供更精準的搜尋結果,提高使用者事件的轉換潛力。

這些新增的搜尋功能會最佳化預設相關性演算法,並根據各零售商的使用情況設定非預設功能,包括:

  • 依價格、最高評分或最暢銷商品等條件排序搜尋結果。非預設搜尋功能可自訂,傳回含有正確產品子類的特定搜尋結果。舉例來說,依價格排序時,顯示最便宜或最貴的款式。

  • 系統會對非預設使用者事件自動套用更嚴格的關聯性篩選器。

  • 啟用可調整的升級/埋藏強度控制項,微調搜尋結果。

搜尋功能提供文字查詢搜尋和瀏覽搜尋功能。

在文字查詢搜尋用途中,購物者可能會在你的網站上輸入文字查詢。搜尋功能會傳回搜尋回應,其中包含符合您設定控制項參數的產品,並依關聯性和收益最大化排序。

在瀏覽使用案例中,購物者可能會前往你的網站選單,然後瀏覽特定產品類別。搜尋功能會根據使用者行為和趨勢,自動選擇最能提高收益的排序方式。您可以透過設定的控制項,進一步縮小瀏覽結果範圍。

文字搜尋和瀏覽搜尋要求都會使用 servingConfigs.search 方法。

文字查詢搜尋

使用者在您網站上輸入文字查詢進行搜尋時,搜尋功能會根據相關性、熱門程度、可購買性及個人化設定,排序可能的搜尋結果。

如果 servingConfigs.search 要求含有非空白的 query 欄位,Google 搜尋會將其視為文字搜尋要求。

上傳使用者事件時,請將搜尋產生的文字查詢搜尋事件做為 search 使用者事件傳送。如果事件含有非空白的 userEvent.searchQuery 欄位和空白的 userEvent.pageCategories 欄位,搜尋會將其視為以文字為基礎的搜尋事件。

瀏覽搜尋記錄

瀏覽功能會使用網站導覽產生關聯性相同的搜尋結果,並依暢銷商品排序。Google 搜尋會運用 AI 考慮人氣、購買意願和個人化設定,以最佳方式排序瀏覽結果。

如要取得正確的瀏覽搜尋結果,請注意下列事項:

  • 搜尋要求中的 pageCategoriesfilter 值,必須與您上傳使用者事件中的 pageCategoriesfilter 值完全一致。如果要求中的參數與事件中的參數不符,從事件中學習的點擊次數重排序模型就無法針對這項特定查詢發揮良好效用,進而對結果品質造成負面影響。

  • 如果使用者事件的 userEvent.searchQuery 欄位空白,但 userEvent.pageCategories 欄位不為空白,Vertex AI Search for commerce 就會將該事件歸類為瀏覽事件。search因此,上傳時請務必將 Vertex AI Search for Commerce 產生的瀏覽事件,做為search使用者事件傳送。

  • 瀏覽篩選器必須有效,並指出每個瀏覽查詢中,哪些產品屬於使用者瀏覽的產品類別。如要完成這項設定,必須在 filterpage_category 欄位中定義類別 ID。舉例來說,假設您希望搜尋結果以「居家與園藝」為目標,首先,只有一個 filter "in-stock" 值無法充分縮小搜尋範圍,因此無法提供最佳瀏覽結果。如要提供僅限「居家與園藝」的搜尋結果,您不僅需要在網頁類別中設定 "Home \& Garden",也需要在篩選器中設定 categories: ANY("Home & Garden")。如果未在篩選條件部分定義類別,瀏覽結果可能會過於廣泛,包含許多非居家和庭園的項目。

如果查詢欄位空白,但 page_categories 欄位已填寫,則系統會將服務要求和事件視為瀏覽要求和使用者事件。「page_categories」欄位指定瀏覽頁面本身。如果 servingConfigs.search 方法傳送要求時,query 欄位為空白,搜尋會將要求視為瀏覽搜尋要求。在這種情況下,系統會根據 filterpageCategories 欄位,以及更多最佳化和個人化設定 (如有) 產生結果。

您可以在兩者中設定類別,如以下範例所示:

JSON

page_category: "Home & Garden"
filter: "(availability: ANY("IN_STOCK")) AND (categories: ANY("Home & Garden"))"

否則,由於瀏覽功能適用於空字串查詢,特定類別的產品不會自動顯示在特定網頁類別的結果中。換句話說,如果使用者瀏覽時未指定任何內容 (使用文字查詢),即使前往類別頁面,搜尋結果可能也不會有效鎖定目標。

使用搜尋要求

使用搜尋要求,取得文字搜尋和瀏覽搜尋的結果。 如要發出搜尋要求,請使用 servingConfigs.search 方法。

所有搜尋要求都需要 placement,用於識別要使用的供應設定完整資源名稱。供應設定會決定哪些設定和相關控制項會影響搜尋結果。

文字查詢搜尋要求必須包含非空白的 query 欄位。

瀏覽搜尋要求必須包含非空白的 pageCategories 欄位。

Java

import com.google.cloud.retail.v2.SearchRequest;
import com.google.cloud.retail.v2.SearchResponse;
import com.google.cloud.retail.v2.SearchServiceClient;

public static void searchProducts(String query) throws IOException, InterruptedException {
  SearchRequest searchRequest = SearchRequest.newBuilder()
      .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
      .setBranch(DEFAULT_BRANCH_NAME)
      .setVisitorId(VISITOR_ID)
      .setQuery(query)
      .build();

  try (SearchServiceClient searchClient = SearchServiceClient.create()) {
    SearchResponse response = searchClient.search(searchRequest).getPage().getResponse();
    System.out.println("Search response: " + searchResponse);
  }
}

根據預設,系統會傳回合理數量的結果,並依關聯性排序。

如要讓搜尋回應傳回產品屬性,請務必在匯入目錄資料時提供屬性值。Product 具有預先定義的系統屬性,例如品牌、顏色和尺寸,您可以提供這些屬性的值。您也可以納入使用 Product.attributes 定義的自訂屬性。

教學課程:查詢功能

本教學課程說明如何將文字搜尋查詢傳送至 Vertex AI Search for commerce 服務,並分析回應。


如要直接在 Cloud Shell 編輯器中按照逐步指南操作,請按一下「Guide me」(逐步引導)

逐步引導


分頁

使用分頁功能可縮短查詢時間,並減少傳送的回應大小。

教學課程:分頁功能

本教學課程會說明如何在以文字為基礎的搜尋要求中控制分頁。購物者在商店中尋找產品時,可以透過搜尋結果改善瀏覽體驗。舉例來說,他們可以使用頁面大小功能限制搜尋回應中的項目數量,或使用偏移功能跳到偏好的頁面。


如要直接在 Cloud Shell 編輯器中按照逐步指南操作,請按一下「Guide me」(逐步引導)

逐步引導


分頁

如要從一頁跳到另一頁,請視用途使用 page_tokenoffset

如要跳到下一頁,可以使用 page_token。舉例來說,假設您傳送以下 SearchRequest

JSON

{
  placement: 'projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/placements/default_search'
  visitor_id: 'VISITOR_ID'
  query: 'shoes'
  page_size: 5
}

SearchResponse 開始,你可以取得相關性最高的前 5 項產品,以及 next_page_token

JSON

{
  results: [
    products{...}, products{...}, products{...}, products{...}, products{...}
  ]
  next_page_token: "wY4ETNkBDOlVjZ0YWLzUmM40SMhVjMtADMwATL5UGN5MGZlVDJaIQ5LaYsQUw9fC6lIwgE1EgC"
  total_size: 100
  search_token: "NtQKDAiXt4_3BRDCg_jnARABGiQ1ZWRjOTRlOC0wMDAwLTI1YTEtODJlMy1mNGY1ZTgwZDUxOGM"
}

如要取得下 5 個相關性結果產品 (第 6 個到第 10 個),請使用與先前 SearchResponse 相同的 placementvisitor_idquery,設定 page_tokennext_page_token

Java

import com.google.cloud.retail.v2.SearchRequest;
import com.google.cloud.retail.v2.SearchResponse;
import com.google.cloud.retail.v2.SearchServiceClient;

public static void searchProducts_withNextPageToken(String query, int pageSize)
    throws IOException, InterruptedException {
  try (SearchServiceClient searchClient = SearchServiceClient.create()) {
    SearchRequest firstRequest = SearchRequest.newBuilder()
        .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
        .setBranch(DEFAULT_BRANCH_NAME)
        .setVisitorId(VISITOR_ID)
        .setQuery(query)
        .setPageSize(pageSize)
        .build();

    SearchResponse firstResponse = searchClient.search(firstRequest).getPage()
        .getResponse();
    System.out.println("First search response: " + firstResponse);

    SearchRequest secondRequest = SearchRequest.newBuilder()
        .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
        .setBranch(DEFAULT_BRANCH_NAME)
        .setVisitorId(VISITOR_ID)
        .setQuery(query)
        .setPageSize(pageSize)
        .setPageToken(firstResponse.getNextPageToken())
        .build();

    SearchResponse secondResponse = searchClient.search(secondRequest).getPage()
        .getResponse();
    System.out.println("Second search response: " + secondResponse);
  }
}

在本範例中,SearchRequest 看起來會像這樣:

JSON

{
  placement: 'projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/placements/default_search'
  visitor_id: 'VISITOR_ID'
  query: 'shoes'
  page_size: 5
  page_token: "wY4ETNkBDOlVjZ0YWLzUmM40SMhVjMtADMwATL5UGN5MGZlVDJaIQ5LaYsQUw9fC6lIwgE1EgC"
}

除了按照頁面順序查看結果或取得最相關的結果之外,在其他情況下,您也可以使用 offset 直接跳到特定位置。

Java

import com.google.cloud.retail.v2.SearchRequest;
import com.google.cloud.retail.v2.SearchResponse;
import com.google.cloud.retail.v2.SearchServiceClient;

public static void searchProducts_withOffset(String query, int pageSize,
    int offset) throws IOException, InterruptedException {
  SearchRequest searchRequest = SearchRequest.newBuilder()
      .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
      .setBranch(DEFAULT_BRANCH_NAME)
      .setVisitorId(VISITOR_ID)
      .setQuery(query)
      .setPageSize(pageSize)
      .setOffset(offset)
      .build();

  try (SearchServiceClient searchClient = SearchServiceClient.create()) {
    SearchResponse response = searchClient.search(searchRequest).getPage().getResponse();
    System.out.println("Search response: " + searchResponse);
  }
}

舉例來說,如果頁面大小為 5,而您希望取得第十頁的結果,則可將 offset 設為 45,計算方式為 (10 - 1) * 5。

JSON

{
  placement: 'projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/placements/default_search'
  visitor_id: 'VISITOR_ID'
  query: 'shoes'
  page_size: 5
  offset: 45
}

搜尋成效等級

Google 搜尋提供多種搜尋效能等級,可逐步提升搜尋結果。舉例來說,在文字查詢搜尋的使用情況中,結果可能只會根據關聯性顯示。隨著您解鎖更多進階成效層級,搜尋功能會根據關聯性、熱門程度、收益最佳化和個人化,傳回搜尋結果。

只要上傳符合各層級最低規定的目錄和使用者事件資料,搜尋就會自動解鎖更高成效層級。

如要進一步瞭解如何使用這個頁面查看資料品質和搜尋成效等級,請參閱「解鎖搜尋成效等級」。在 Search for commerce 控制台的「資料品質」頁面中,你可以查看各層級的達標情況。

評估文字搜尋和瀏覽結果

更新網站程式碼以要求文字搜尋或瀏覽搜尋結果前,您可以先預覽結果,確認放送設定是否正常運作。

如要進一步瞭解供應設定,請參閱「關於供應設定」。

您可以從「評估」頁面預覽放送設定結果,也可以前往控制台的放送設定「詳細資料」頁面,然後點選「評估」分頁。下列步驟說明如何從「評估」頁面預覽。

如要預覽供應設定傳回的結果,請按照下列步驟操作:

  1. 前往 Search for commerce 控制台的「評估」頁面。

    前往「評估」頁面

  2. 按一下「搜尋」分頁標籤。

  3. 選取要預覽的供應設定。

  4. 選取包含要預覽目錄的目錄分支。

  5. 選用:輸入訪客 ID,預覽該使用者的搜尋結果。

  6. 選用:輸入使用者 ID,預覽該使用者的搜尋結果。

  7. 選用:輸入搜尋時間,預覽指定時間的搜尋結果。

    舉例來說,如果您曾為特價促銷活動宣傳特定產品,就能查看當天的顯示結果。

  8. 選用:選取要在搜尋結果旁顯示的資料類型,然後按一下「確定」套用。

    系統會根據您選取的構面產生構面篩選器清單,並在您執行初始搜尋後顯示在「新增構面」下方。這些層面篩選條件可以包含您在此步驟中選取的層面以外的層面,例如動態層面。

  9. 輸入文字搜尋查詢,即可預覽該查詢的搜尋結果。

  10. 按一下「搜尋預覽」,或在任何輸入欄位中按下 Enter 鍵,即可查看結果。

    搜尋結果會顯示可用的縮圖。

    如果搜尋觸發重新導向控制項,系統會顯示通知,其中包含重新導向 URI。

  11. 選用:按一下「格狀」圖示或「清單」圖示,即可切換預覽畫面中搜尋結果的顯示方式。

  12. 選用:如果您選取要與結果一起顯示的 Facet,請從 Facet 清單中選取一或多個 Facet 值,依這些值篩選結果。選取完畢後,系統會自動更新結果。

    選取同一 Facet 的多個值時,系統會套用 OR 運算子;選取不同 Facet 的值時,系統會套用 AND 運算子。舉例來說,選取「顏色」Facet 和「藍色」與「金色」值,以及「材質」值「棉」和「聚酯纖維」後,搜尋結果必須包含「藍色」或「金色」屬性,以及「棉」或「聚酯纖維」屬性。

歡迎瀏覽

  1. 前往 Search for commerce 控制台的「評估」頁面。

    前往「評估」頁面

  2. 按一下「瀏覽」分頁標籤。

  1. 選取要預覽的供應設定。

  2. 選取包含要預覽目錄的目錄分支。

  3. 選用:輸入訪客 ID,預覽該使用者的結果。

  4. 選用:輸入使用者 ID,預覽該使用者的結果。

  5. 如要預覽新增特定篩選條件後的結果,請輸入篩選字串。使用「篩選條件」說明文件中指定的篩選運算式語法。

  6. 選用步驟:輸入瀏覽時間,即可預覽指定時間會顯示的結果。

    舉例來說,如果您曾為銷售旺季活動宣傳特定產品,就能查看當天的結果。

  7. 輸入要測試瀏覽結果的頁面類別。

  8. 選用:選取要與結果一起顯示的資料類型,然後按一下「確定」套用。

    系統會根據您選取的構面產生構面篩選器清單,並在您執行初始搜尋後顯示在「新增構面」下方。這些層面篩選條件可以包含您在此步驟中選取的層面以外的層面,例如動態層面。

  9. 點選「瀏覽預覽」或在任一輸入欄位中按下 Enter 鍵,即可查看結果。

    結果會連同可用的縮圖一併顯示。

  10. 選用:按一下「格狀」圖示或「清單」圖示,即可切換預覽結果的顯示方式。

  11. 選用:如果您選取要與結果一起顯示的 Facet,請從 Facet 清單中選取一或多個 Facet 值,依這些值篩選結果。選取完畢後,系統會自動更新結果。

    選取同一 Facet 的多個值時,系統會套用 OR 運算子;選取不同 Facet 的值時,系統會套用 AND 運算子。舉例來說,選取「顏色」和「材質」 Facet 後,您可以選取「藍色」和「金色」的顏色值,以及「棉」和「聚酯纖維」的材質值,篩選搜尋結果。結果必須包含「藍色」或「金色」屬性,以及「棉」或「聚酯纖維」屬性。

如要查看預覽供應設定的「詳細資料」頁面,請按一下「選取供應設定」欄位下方的「查看供應設定」