Melhorar os resultados

Esta página descreve o aprimoramento dos resultados da pesquisa.

Tutorial de otimização

Neste tutorial, mostramos 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 dadoss

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 ordenar resultados para saber a sintaxe da expressão de filtro.

Ensina

Com a otimização, é possível controlar a classificação de resultados aplicando um aumento para priorizar ou não priorizar os 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);
  }
}

Suponha que você queira priorizar os produtos mais baratos (mais de US$ 95) e diminuir a prioridade dos mais caros (mais de US$ 95). É possível aplicar uma especificação de otimização 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 últimos três. No entanto, nenhum pedido específico é garantido, o que é diferente da ordenação por preço, conforme discutido em Filtrar e ordenar resultados.