获取搜索结果

本页介绍了搜索的基本查询,包括文本查询搜索、浏览搜索、分页、优化和个性化结果。

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

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

Vertex AI Search 商务解决方案默认在搜索中优先考虑相关性。不过,搜索功能也经过调整,可将相关性略低的商品显示在搜索结果中更靠上的位置,以便为零售商提供更具针对性的搜索结果,从而提高用户事件的转化潜力。

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

  • 可按价格、高评分或畅销商品等条件对结果进行排序。非默认搜索经过自定义,可返回具有正确产品款式/规格的特定搜索结果。例如,按价格排序时显示最便宜或最贵的款式。

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

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

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

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

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

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

文本查询搜索

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

如果 servingConfigs.search 请求具有非空的 query 字段,则搜索会将该请求视为基于文本的搜索请求。

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

浏览搜索内容

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

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

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

  • 如果 search 用户事件具有空的 userEvent.searchQuery 字段和非空的 userEvent.pageCategories 字段,则 Vertex AI Search for Commerce 会将其归类为基于浏览的事件。因此,您需要确保在上传由 Vertex AI Search for Commerce 生成的浏览事件时,将其作为 search 用户事件发送。

  • 浏览过滤条件必须有效,并且必须针对每项浏览查询指明哪些商品属于用户正在浏览的商品类别。如需实现此设置,需要在 filterpage_category 字段中同时定义类别 ID。例如,如果您希望搜索结果定位到“家居与园艺”类别,首先,只有 1 个值为 "in-stock"filter 不足以优化搜索,无法提供最佳浏览结果。若要提供仅限“家居与园艺”的搜索结果,您不仅需要在网页类别中设置 "Home \& Garden",还需要在包含 categories: ANY("Home & Garden") 的过滤条件中设置 "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 商务服务发送基于文本的搜索查询并分析响应。


如需遵循有关此任务的分步指导,请直接在 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 搜索提供多个搜索效果层级,可逐步提升搜索结果质量。例如,对于文本查询搜索用例,结果可能仅基于相关性。随着您解锁更高级别的效果,搜索可以根据相关性、热门程度、收入优化和个性化返回结果。

当您上传的商品目录和用户事件数据满足每个层级的最低要求时,搜索会自动解锁更高的效果层级。

如需详细了解如何使用此页面查看数据质量和搜索效果层级,请参阅解锁搜索效果层级。在 Search for commerce 控制台的数据质量页面上,您可以查看自己满足了每个层级的哪些要求。

评估文字搜索和浏览结果

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

如需详细了解服务配置,请参阅服务配置简介

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

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

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

    前往“评估”页面

  2. 点击搜索标签页。

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

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

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

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

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

    例如,如果您为特价促销活动推广了某些商品,则可以查看这些商品在特价促销活动当天的展示效果。

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

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

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

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

    搜索结果会显示其可用的缩略图。

    如果您的搜索触发了重定向控制,系统会显示一条通知,其中包含重定向 URI。

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

  12. 可选:如果您选择了要与结果一起显示的属性,请从属性列表中选择一个或多个属性值,以按这些值过滤结果。选择后,结果会自动更新。

    如果您选择同一构面的多个值,系统会像使用 OR 运算符一样应用这些值;如果您选择不同构面的多个值,系统会像使用 AND 运算符一样应用这些值。例如,在选择构面颜色和值“蓝色”和“金色”,以及材质值“棉”和“涤纶”后。搜索结果必须具有“蓝色”或“金色”属性,还必须具有“棉”或“涤纶”属性。

浏览

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

    前往“评估”页面

  2. 点击浏览标签页。

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

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

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

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

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

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

    例如,如果您为某个促销活动宣传了特定商品,则可以查看这些商品在活动当天的展示效果。

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

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

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

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

    结果会显示并附带可用的缩略图。

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

  11. 可选:如果您选择了要与结果一起显示的属性,请从属性列表中选择一个或多个属性值,以按这些值过滤结果。选择后,结果会自动更新。

    如果您选择同一构面的多个值,系统会像使用 OR 运算符一样应用这些值;如果您选择不同构面的多个值,系统会像使用 AND 运算符一样应用这些值。例如,在选择构面颜色材质后,您可以通过选择颜色值“蓝色”和“金色”以及材质值“棉”和“涤纶”来过滤搜索结果。结果必须包含“蓝色”或“金色”属性,还必须包含“棉”或“涤纶”属性。

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