Améliorer les résultats

Vous pouvez spécifier les enregistrements qui doivent être mis en avant dans les recherches.

Utiliser le boosting

Ce tutoriel vous présente quelques exemples de "boosting" de produits.


Pour obtenir des instructions détaillées sur cette tâche directement dans l'éditeur Cloud Shell, cliquez sur Visite guidée :

Visite guidée


Exemple d'ensemble de données

Cette page utilise l'ensemble de données suivant comme exemple. Seuls les champs nécessaires aux explications sont inclus.

Prérequis

Consultez la section Filtrer et trier les résultats pour connaître la syntaxe d'expression de filtre.

Adaptation vocale améliorée (boost)

Avec l'optimisation, vous pouvez contrôler le classement des résultats en appliquant une fonctionnalité pour augmenter ou réduire le niveau de priorité des résultats.

Par exemple, si vous recherchez "enceinte Google", vous obtenez "nest_mini_2nd_gen", "nest_audio", "nest_hub_max", "nest_hub", "google_home_max" et "google_home_mini" sans ordre spécifique.

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

Supposons que vous souhaitiez privilégier les produits moins chers (moins de 95 dollars) et réduire le niveau de priorité donné aux produits onéreux (plus de 95 dollars). Vous pouvez appliquer une spécification de boost comme suit:

JSON

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

Dans ce résultat, "nest_mini_2nd_gen", "google_home_mini" et "nest_hub" pourraient être les trois premiers, tandis que "nest_audio", "nest_hub_max" et "google_home_max" pourraient être les trois derniers. Cependant, aucun ordre spécifique n'est garanti (contrairement au tri par prix) comme indiqué dans la section Filtrer et trier les résultats.