获取搜索结果

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

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

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

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

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

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

文本查询搜索

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

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

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

浏览搜索内容

通常,使用网站导航浏览产品产生的结果 或者按畅销商品排序 Google 搜索会利用 AI 技术,综合考虑热门程度、购买便利性和个性化程度,优化浏览结果的排序方式。

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

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

为了获得正确的浏览搜索结果,搜索请求中的 pageCategoriesfilter 值必须与您上传的用户事件中的 pageCategoriesfilter 值完全匹配。如果不完全匹配,系统可能无法识别搜索请求中的数据,这可能会对结果质量产生负面影响。浏览搜索功能仅识别 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 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
}

搜索性能层级

搜索提供了多个搜索效果等级,这些等级越来越多, 来改善您的广告效果。例如,对于文本查询搜索用例,结果 可能只取决于相关性随着您解锁更高级的效果层级,搜索功能可根据相关性、热门程度、收入优化和个性化等因素返回结果。

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

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

评估文本搜索和浏览结果

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

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

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

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

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

    转到“评估”页面

  2. 点击搜索标签页。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    当您选择同一个构面的多个值时,系统会按 OR 运算符的运算方式应用这些值,而不同构面的值则会按 AND 运算符的运算方式应用。例如,在选择分面“color”后 值为“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 运算符的运算方式应用不同构面的值。例如,选择“颜色”和“材质”这两个构面后,您可以选择颜色值“蓝色”和“金色”,以及材质值“棉”和“聚酯”,从而过滤搜索结果。您的结果必须为“蓝色”或“gold”以 属性,并且还必须包含“cotton”属性或“涤纶”以 属性。

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