Migliorare i risultati

Puoi specificare i record che devono essere elevati nelle ricerche.

Tutorial sul boosting

Questo tutorial mostra alcuni esempi di boosting dei prodotti.


Per seguire le indicazioni dettagliate per questa attività direttamente nell'editor di Cloud Shell, fai clic su Procedura guidata:

Procedura guidata


Set di dati di esempio

Questa pagina utilizza il seguente set di dati come esempio. Sono inclusi solo i campi necessari per la spiegazione.

Prerequisiti

Per la sintassi delle espressioni di filtro, consulta Filtrare e ordinare i risultati.

Boost

Con il boosting, puoi controllare il ranking dei risultati applicando un boost per dare priorità o meno ai risultati.

Ad esempio, se cerchi "altoparlante Google", visualizzerai "nest_mini_2nd_gen", "nest_audio", "nest_hub_max", "nest_hub", "google_home_max" e "google_home_mini" in nessun ordine specifico.

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

Supponiamo che tu voglia dare la priorità ai prodotti più economici (meno di 95 $) e rimuovere la priorità da quelli costosi (più di 95 $). Puoi applicare una specifica di boost come:

JSON

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

Nel risultato, "nest_mini_2nd_gen", "google_home_mini" e "nest_hub" potrebbero essere i tre primi, mentre "nest_audio", "nest_hub_max" e "google_home_max" potrebbero essere i tre ultimi. Tuttavia, non è garantito alcun ordine specifico, diversamente dall'ordinamento per prezzo, come descritto in Filtrare e ordinare i risultati.