获取搜索结果

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

不缓存最终用户的个性化结果,也不返回个性化结果 将结果发送给其他最终用户

关于文本搜索和浏览搜索

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

在文本查询搜索用例中,买家可以输入基于文本的查询, 。搜索会返回包含商品的搜索响应 且按相关性排序 和收入最大化。

在浏览用例中,买家可能会前往您的网站菜单 转到特定的商品类别自动搜索 通过学习用户行为,选择能带来最大收入的排序顺序 和趋势。您可以根据您设置的控件进一步优化浏览结果 。

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

文本查询搜索

当用户输入要在您的网站上进行搜索的文本时, 可按相关性、热门程度、可购买性以及 个性化。

Google 搜索将 servingConfigs.search 请求视为 文本搜索请求(如果它具有非空 query 字段)。

上传用户事件时,请发送由 以 search 用户事件的形式搜索。如果事件具有非空 userEvent.searchQuery 字段和一个空的 userEvent.pageCategories 字段, Google 搜索会将该事件视为基于文本的搜索事件。

浏览搜索内容

通常,使用网站导航浏览产品产生的结果 或者按畅销商品排序 Google 搜索利用 AI 优化浏览结果的方式 按照热门程度、易购性和个性化等因素进行排序

servingConfigs.search 方法发送请求时,搜索 如果 query 字段为空,则系统会将请求视为浏览搜索请求。 在这种情况下,结果将基于 filterpageCategories 字段,以及进一步优化和个性化(如果 可用。

上传用户事件时,请确保发送浏览搜索事件 作为 search 用户事件生成的。 Google 搜索将 search 用户事件视为基于浏览的事件 如果它有一个空的 userEvent.searchQuery 字段和一个非空 userEvent.pageCategories 字段。

为了获得正确的浏览搜索结果,pageCategoriesfilter 搜索请求中的值必须与 pageCategories 和 您上传的用户事件中有 filter 个值。如果它们不完全匹配 搜索请求中的数据可能无法识别,这可能会对 影响结果质量。浏览搜索只识别“pageCategories”中的第一个类别值。

使用搜索请求可同时获取文本搜索和浏览搜索的结果。 要发出搜索请求,请使用 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
}

搜索性能层级

搜索提供了多个搜索效果等级,这些等级在不断 来改善您的广告效果。例如,对于文本查询搜索用例,结果 可能只取决于相关性当您解锁更高级的效果时 搜索可以返回基于相关性的结果, 热门程度、收入优化和个性化。

在以下情况下,Search 会自动解锁更高的性能层级: 上传满足各项最低要求的目录和用户事件数据 层级。

数据质量页面: Search for Retail 控制台会评估 满足的所有要求详细了解如何使用 页面查看数据质量和搜索效果等级,请参阅解锁搜索 性能层级

评估文本搜索和浏览结果

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

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

您可以从评估页面预览服务配置结果,也可以通过以下方式预览服务配置结果: 转到控制台中服务配置的详细信息页面,然后点击其 评估标签页。以下步骤说明了如何从 评估页面。

要预览您的服务配置返回的结果,请执行以下操作:

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

    转到“评估”页面

  2. 点击搜索标签页。

  3. 选择要预览的服务配置。

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

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

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

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

    例如,如果您在黑色星期五促销了某些产品, 即可看到当天显示的结果。

  8. 可选:选择要在搜索结果旁边显示的分面,然后点击 确定即可应用这些设置。

    您选择的构面用于生成构面过滤器列表, 。这些 构面过滤器可以包含您在此步骤中选择的构面以外的其他构面, 例如动态分面

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

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

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

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

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

  12. 可选:如果您选择了要在结果旁边显示的分面,请选择 分面列表中的一个或多个分面值,以按这些分面过滤结果 值。结果会在您做出选择后自动更新。

    当您选择同一分面的多个值时,这些值将作为 OR 运算符,并将不同构面的值应用为 AND 运算符。例如,在选择分面“颜色”后 值为“blue”和“gold”,材质值为“cotton”和 "涤纶"。搜索结果必须为“蓝色”或“gold” 属性,而且必须具有“cotton”或“涤纶”以 属性。

浏览

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

    转到“评估”页面

  2. 点击浏览标签页。

  1. 选择要预览的服务配置。

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

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

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

  5. 如需预览添加特定过滤条件后的结果,请执行以下操作: 输入过滤条件字符串。使用 过滤器文档。

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

    例如,如果您在黑色星期五促销了某些产品, 即可看到当天显示的结果。

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

  8. 可选:选择要在结果旁边显示的分面,然后点击 确定即可应用这些设置。

    您选择的构面用于生成构面过滤器列表, 。这些 构面过滤器可以包含您在此步骤中选择的构面以外的其他构面, 例如动态分面

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

    显示的结果将连同可用的缩略图一起显示。

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

  11. 可选:如果您选择了要在结果旁边显示的分面,请选择 分面列表中的一个或多个分面值,以按这些分面过滤结果 值。结果会在您做出选择后自动更新。

    当您选择同一分面的多个值时,这些值将作为 OR 运算符,并将不同构面的值应用为 AND 运算符。例如,在选择分面“颜色”后 和“material”[材质] 属性,那么您可以选择 颜色值“蓝色”和“gold”,材质值为“cotton”和 "涤纶"。您的结果必须为“蓝色”或“gold”以 属性,还必须包含“棉花”或“涤纶”以 属性。

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