提升效果

本页简要介绍了如何提升搜索结果。

教程:升位

本教程将向您展示一些商品升位示例。


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

操作演示


示例数据集

本页以下面的数据集为例。仅包含说明所需的字段。

前提条件

如需了解过滤器表达式语法,请参阅对结果进行过滤和排序

提升

借助升位功能,您可以通过将升位功能应用于 对结果进行优先级排序还是降低其优先级。

例如,如果您搜索“Google speaker”,那么您会收到无序的“nest_mini_2nd_gen”、“nest_audio”、“nest_hub_max”、“nest_hub”、“google_home_max”和“google_home_mini”。

Java

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

public static void searchProductsWithBoostSpec(String query, int pageSize,
    String condition, float boostStrength) throws IOException, InterruptedException {
  BoostSpec boostSpec = BoostSpec.newBuilder()
      .addConditionBoostSpecs(ConditionBoostSpec.newBuilder()
          .setCondition(condition)
          .setBoost(boostStrength)
          .build())
      .build();

  SearchRequest searchRequest = SearchRequest.newBuilder()
      .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
      .setBranch(DEFAULT_BRANCH_NAME)
      .setVisitorId(VISITOR_ID)
      .setQuery(query)
      .setPageSize(pageSize)
      .setBoostSpec(boostSpec)
      .build();

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

假设您希望优先展示更便宜的产品(低于 95 ,并将较贵的商品(高于 95 美元)降低优先级。您可以 应用以下升位规范:

JSON

{
  condition_boost_specs {
    condition: "price: IN(*, 95.0e)"
    boost: 0.5
  }
  condition_boost_specs {
    condition: "price: IN(95.0e, *)"
    boost: -0.5
  }
}

结果中,“nest_mini_2nd_gen”“google_home_mini”和“nest_hub”可能是 前三个,而“nest_audio”“nest_hub_max”和“google_home_max”可能是 最后三个。但这并不保证一定顺序 按价格排序,如过滤结果并对其进行排序中所述。