Melhorar os resultados

É possível especificar registros que precisam ser elevados nas pesquisas.

Tutorial de otimização

Este tutorial mostra alguns exemplos de otimização de produtos.


Para seguir as instruções da tarefa diretamente no editor do Cloud Shell, clique em Orientação:

Orientações


Exemplo de conjunto de dados

Nesta página, usamos o conjunto de dados a seguir como exemplo. Somente os campos necessários para explicação são incluídos.

Pré-requisitos

Consulte Filtrar e organizar resultados para ver a sintaxe da expressão de filtro.

Ensina

Com o reforço, é possível controlar a classificação dos resultados aplicando um reforço para priorizar ou remover a prioridade dos resultados.

Por exemplo, se você pesquisar "alto-falante do Google", verá "nest_mini_2nd_gen", "nest_audio", "nest_hub_max", "nest_hub", "google_home_max" e "google_home_mini" em uma ordem específica.

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);
  }
}

Imagine que você queira priorizar os produtos mais baratos (menos de 95 dólares) e remover a prioridade dos mais caros (mais de 95 dólares). É possível aplicar uma especificação de aumento como:

JSON

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

No resultado, "nest_mini_2nd_gen", "google_home_mini" e "nest_hub" podem ser os três primeiros, enquanto "nest_audio", "nest_hub_max" e "google_home_max" podem ser os três últimos. No entanto, nenhum pedido específico é garantido, o que é diferente do pedido por preço, conforme discutido em Filtrar e ordenar resultados.