获取搜索结果

本页介绍了使用搜索功能进行基本查询,包括文本查询搜索、浏览搜索、分页、优化和个性化结果。

切勿缓存最终用户的个性化结果,也不要向其他最终用户返回个性化结果。

相关性不同于匹配。匹配是指在索引中查找与用户的搜索查询对应的候选商品。另一方面,相关性是匹配程度。这涉及以最能满足用户意图和需求的方式对这些商品进行排名。Vertex AI Search for Retail 会运用各种技术来提升匹配度和相关性,从而为用户提供更出色的整体搜索体验,满足零售商的需求。

Vertex AI Search 零售解决方案在搜索时默认采用相关性排序。不过,搜索功能还会调整,在搜索结果中更靠前的位置显示相关性不高的商品,以便为零售商提供更具针对性的搜索结果,从而提高用户事件的转化潜力。

这些新增的搜索功能会优化默认的相关性算法,提供根据每个零售商的使用情况调整的非默认功能,包括:

  • 用于对结果进行排序的选项,例如按价格、评分或销量对商品进行排序。自定义非默认搜索可返回包含正确产品款式/规格的特定搜索结果。例如,按价格排序时显示最便宜或最昂贵的变体。

  • 自动为非默认用户事件应用更严格的相关性过滤条件。

  • 启用可调节强度的提升/掩埋控件,以微调搜索结果。

搜索功能同时提供文本查询搜索和浏览搜索功能。

在文本查询搜索用例中,买家可能会在您的网站上输入基于文本的查询。搜索会返回一个搜索响应,其中包含符合您设置的控制参数的商品,并按相关性和收入最大化排序。

在浏览用例中,买家可能会前往您的网站菜单,然后进入特定的商品类别。Google 搜索会从用户行为和趋势中学习,自动选择可最大限度提高收入的排序方式。您可以通过设置的控件进一步缩小浏览结果的范围。

文本搜索请求和浏览搜索请求均使用 servingConfigs.search 方法。

文本查询搜索

当用户输入文字查询在您的网站上进行搜索时,搜索功能会根据相关性、热门程度、购买力和个性化程度对潜在搜索结果进行排序。

如果 servingConfigs.search 请求包含不为空的 query 字段,搜索会将其视为基于文本的搜索请求。

上传用户事件时,请将搜索生成的文本查询搜索事件作为 search 用户事件发送。如果事件包含非空 userEvent.searchQuery 字段和空 userEvent.pageCategories 字段,搜索会将其视为基于文本的搜索事件。

浏览搜索记录

“浏览”功能会使用网站导航功能生成相关性相同的搜索结果,并按畅销商品对其进行排序。Google 搜索会利用 AI 技术,综合考虑热门程度、购买便利性和个性化程度来优化浏览结果的排序方式。

如果服务请求和事件的查询字段为空,而 page_categories 字段不为空,则会被视为浏览请求和用户事件。page_categories 字段用于指定浏览页面本身。当 servingConfigs.search 方法发送请求时,如果 query 字段为空,搜索会将其视为浏览搜索请求。在这种情况下,结果会根据 filterpageCategories 字段以及进一步的优化和个性化(如果可用)来生成。

为了获得正确的浏览搜索结果,请考虑以下事项:

  • 搜索请求中的 pageCategoriesfilter 值必须与您上传的用户事件中的 pageCategoriesfilter 值完全一致。上传的用户事件中的 filter 值。如果请求中的参数与事件中的参数不匹配,则从事件中学习的基于点击的重新排名模型对此特定查询的效果不佳,并会对结果质量产生负面影响。

  • 如果 search 用户事件的 userEvent.searchQuery 字段为空,而 userEvent.pageCategories 字段不为空,Vertex AI Search 零售解决方案会将其归类为基于浏览的事件。因此,您需要确保在上传 Vertex AI Search for Retail 生成的浏览事件时,将其作为 search 用户事件发送。

  • 浏览过滤条件必须有效,并且对于每个浏览查询,都应指明哪些商品属于用户正在浏览的商品类别。如需实现此设置,您需要在 filterpage_category 字段中定义类别 ID。例如,如果您希望搜索结果定位到“家居与园艺”类别,首先,仅使用一个 filter"in-stock" 无法过滤出足够的信息,无法提供最佳的浏览结果。若要提供仅限“家居与园艺”的搜索结果,您不仅需要在网页类别中设置 "Home \& Garden",还需要在过滤条件中使用 categories: ANY("Home & Garden") 设置 "Home \& Garden"。如果您未在过滤部分定义类别,浏览结果可能会过于宽泛,包含许多非“家居与园艺”类商品。

您可以在两个位置设置类别,如以下示例所示:

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 Retail 服务发送基于文本的搜索查询并分析响应。


如需遵循有关此任务的分步指导,请直接在 Cloud Shell Editor 中点击操作演示

操作演示


分页

使用分页来减少查找时间以及发送的响应的大小。

教程:分页

本教程介绍了如何在基于文本的搜索请求中控制分页。买家在商店中查找商品时,可以通过搜索结果改进导航体验。例如,他们可以使用页面大小功能限制搜索响应中的项数,或使用偏移功能跳转到首选页面。


如需遵循有关此任务的分步指导,请直接在 Cloud Shell Editor 中点击操作演示

操作演示


分页

如需从一个页面跳转到另一页面,请根据您的用例使用 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 中的 next_page_token 相同的 placementvisitor_idquery 来设置 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);
  }
}

例如,如果您想要结果的第 10 页,那么当页面大小为 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 搜索提供多种搜索效果层级,可不断提升搜索结果的质量。例如,对于文本查询搜索用例,结果可能仅基于相关性。随着您解锁更高级的效果层级,搜索功能可根据相关性、热门程度、收入优化和个性化等因素返回结果。

当您上传符合各个层级最低要求的商品目录和用户事件数据时,搜索广告会自动为您解锁更高级别的效果层级。

Retail Search 控制台的数据质量页面会评估您已满足每个层级的哪些要求。如需详细了解如何使用此页面查看数据质量和搜索效果层级,请参阅解锁搜索效果层级

评估文本搜索和浏览结果

在更新网站代码以请求文本搜索或浏览搜索结果之前,您可以预览结果,以确认您的投放配置是否按预期运行。

如需详细了解投放配置,请参阅投放配置简介

您可以通过评估页面预览投放配置结果,也可以前往控制台中投放配置的详细信息页面,然后点击其评估标签页。以下步骤展示了如何在评估页面中预览。

如需预览投放配置返回的结果,请执行以下操作:

  1. 前往 Search for Retail 控制台中的评估页面。

    前往“评估”页面

  2. 点击搜索标签页。

  3. 选择要预览的投放配置。

  4. 选择包含要预览的目录的目录分支。

  5. 可选:输入访问者 ID 以预览该用户的搜索结果。

  6. 可选:输入用户 ID 以预览该用户的搜索结果。

  7. 可选:输入搜索时间,以预览指定时间显示的搜索结果。

    例如,如果您在黑色星期五促销了特定商品,则可以查看该商品在当天显示的结果。

  8. 可选:选择要在搜索结果旁边显示的属性,然后点击确定以应用这些属性。

    您选择的这些维度将用于生成一个维度过滤条件列表,该列表会在您执行初始搜索后显示在添加维度下方。这些面向细分的过滤条件可以包含您在此步骤中选择的面向细分以外的面向细分,例如动态面向细分。

  9. 输入文本搜索查询,以预览该查询的搜索结果。

  10. 点击搜索结果预览,或在任意输入字段中按 Enter 键查看结果。

    搜索结果会随附可用的缩略图一起显示。

    如果您的搜索触发了重定向控件,系统会显示一个显示重定向 URI 的通知。

  11. 可选:点击网格图标或列表图标,切换预览中搜索结果的显示方式。

  12. 可选:如果您选择了要与结果一起显示的多个构面,请从“构面”列表中选择一个或多个构面值,以按这些值过滤结果。您每次选择过滤条件后,结果都会自动更新。

    如果您选择同一个构面的多个值,系统会按 OR 运算符的运算方式应用这些值;如果您选择不同构面的值,系统会按 AND 运算符的运算方式应用这些值。例如,选择颜色构面和值“蓝色”和“金色”,以及材质值“棉”和“聚酯”后,您的搜索结果必须包含“蓝色”或“金色”属性,并且还必须包含“棉”或“聚酯”属性。

浏览

  1. 前往 Search for Retail 控制台中的评估页面。

    前往“评估”页面

  2. 点击浏览标签页。

  1. 选择要预览的投放配置。

  2. 选择包含要预览的目录的目录分支。

  3. 可选:输入访问者 ID 以预览该用户的结果。

  4. 可选:输入用户 ID 以预览该用户的结果。

  5. 如需预览添加特定过滤条件后的结果,请输入过滤条件字符串。使用过滤条件文档中指定的过滤条件表达式语法。

  6. 可选:输入浏览时间,以预览指定时间显示的结果。

    例如,如果您在某个促销高峰活动中宣传了特定商品,则可以查看该商品在当天显示的结果。

  7. 输入您要测试浏览结果的网页类别。

  8. 可选:选择要与结果一起显示的细分属性,然后点击确定以应用这些属性。

    您选择的这些维度将用于生成一个维度过滤条件列表,该列表会在您执行初始搜索后显示在添加维度下方。这些面向细分的过滤条件可以包含您在此步骤中选择的面向细分以外的面向细分,例如动态面向细分。

  9. 点击浏览预览,或在任意输入字段中按 Enter 键查看结果。

    系统会显示结果及其可用的缩略图。

  10. 可选:点击网格图标或列表图标,切换预览中结果的显示方式。

  11. 可选:如果您选择了要与结果一起显示的多个构面,请从“构面”列表中选择一个或多个构面值,以按这些值过滤结果。您每次选择过滤条件后,结果都会自动更新。

    如果您选择同一个构面的多个值,系统会按 OR 运算符的运算方式应用这些值;如果您选择不同构面的值,系统会按 AND 运算符的运算方式应用这些值。例如,选择颜色材质构面后,您可以选择颜色值“蓝色”和“金色”,以及材质值“棉”和“聚酯”,以过滤搜索结果。您的结果必须包含“蓝色”或“金色”属性,并且还必须包含“棉”或“聚酯”属性。

如需查看您正在预览的投放配置的详细信息页面,请点击选择投放配置字段下的查看投放配置