Cómo obtener resultados de búsqueda

En esta página, se describe la consulta básica con la Búsqueda, incluidas las búsquedas con consultas de texto, las búsquedas de exploración, la paginación, la optimización y los resultados personalizados.

Identificadores únicos de sesión del usuario

El campo de cadena visitor_id obligatorio se usa para identificar de forma única a un usuario en un solo dispositivo. Actúa como un identificador de sesión persistente que permite que Vertex AI Search for Commerce haga un seguimiento del comportamiento de un usuario específico a lo largo de su recorrido de compra.

Vertex AI Search for Commerce usa el historial asociado a un visitor_id específico para entrenar modelos y entregar resultados de búsqueda personalizados. El sistema genera resultados de forma dinámica según la visitor_id específica proporcionada en la solicitud. Por ejemplo, si un visitante suele ver vestidos verdes, el modelo usa visitor_id para reconocerlos más adelante y priorizar artículos similares en sus resultados de la búsqueda. Por este motivo, el ID de visitante debe tener el mismo formato en la transferencia de eventos del usuario (seguimiento) y en las solicitudes de búsqueda o recomendaciones (publicación).

La relevancia es diferente de la coincidencia. La correlación consiste en encontrar productos candidatos en el índice que correspondan a la búsqueda del usuario. Por otro lado, la relevancia es un grado de coincidencia. Implica clasificar esos productos de una manera que satisfaga mejor la intención y las necesidades del usuario. Vertex AI Search for Commerce utiliza técnicas para mejorar la correlación y la relevancia, y así brindar una mejor experiencia de búsqueda general a los usuarios que satisfaga las necesidades de los minoristas.

La búsqueda se establece de forma predeterminada en la relevancia. Sin embargo, algunos productos no relevantes pueden aparecer en la parte inferior de las búsquedas predeterminadas o en las solicitudes explícitas de descubrimiento de productos. Esto solo se nota cuando configuras orderBy, ya que reduce el tamaño de los resultados de la búsqueda en general. El tamaño de la recuperación disminuye porque los productos menos relevantes, que antes se mostraban en la parte inferior de la búsqueda predeterminada, se filtran en cierta medida. Lee la siguiente sección para descubrir cómo personalizar la búsqueda.

De forma predeterminada, Vertex AI Search for Commerce prioriza la relevancia en la búsqueda. Sin embargo, la Búsqueda también está configurada para mostrar elementos marginalmente relevantes más arriba en los resultados de la búsqueda y, así, proporcionar a los comercios minoristas resultados de la búsqueda más segmentados para aumentar el potencial de conversión de los eventos del usuario.

Estas funciones de búsqueda adicionales optimizan el algoritmo de relevancia predeterminado y proporcionan funciones no predeterminadas ajustadas al perfil de utilización de cada comercio, incluidas las siguientes:

  • Opciones para ordenar los resultados, como por precio, artículos mejor calificados o más vendidos La búsqueda no predeterminada se personaliza para devolver resultados de búsqueda específicos con las variantes de producto correctas. Por ejemplo, para mostrar la variante más económica o más costosa cuando se ordena por precio.

  • Se aplica automáticamente un filtro de relevancia más estricto para los eventos de usuario que no son predeterminados.

  • Habilitar controles de potenciación y ocultamiento con intensidad ajustable para ajustar los resultados de la búsqueda

La Búsqueda proporciona capacidades de búsqueda por consulta de texto y de exploración.

En el caso de uso de búsqueda con consultas de texto, un comprador puede ingresar una consulta basada en texto en tu sitio. La búsqueda devuelve una respuesta que contiene los productos que se ajustan a los parámetros de los controles que configuraste, ordenados por relevancia y maximización de ingresos.

En el caso de uso de exploración, un comprador puede ir al menú de tu sitio y navegar a una categoría de productos específica. La Búsqueda elige automáticamente el orden de clasificación que maximiza los ingresos, ya que aprende del comportamiento y las tendencias de los usuarios. Los resultados de la exploración se pueden refinar aún más con los controles que configuraste.

Las solicitudes de búsqueda de texto y de exploración de la búsqueda usan el método servingConfigs.search.

Búsquedas con consultas de texto

Cuando un usuario ingresa una búsqueda de texto en tu sitio, la búsqueda ordena los posibles resultados según la relevancia, la popularidad, la capacidad de compra y la personalización.

La Búsqueda considera una solicitud de servingConfigs.search como una solicitud de búsqueda basada en texto si tiene un campo query no vacío.

Cuando subas un evento de usuario, envía los eventos de búsqueda de consultas de texto generados por la búsqueda como eventos de usuario search. Si el evento tiene un campo userEvent.searchQuery no vacío y un campo userEvent.pageCategories vacío, la búsqueda lo considera un evento de búsqueda basado en texto.

Cómo procesar parámetros y búsquedas de texto

Las búsquedas estándar se someten a un análisis lingüístico que elimina la puntuación estándar. Las cadenas de filtro distinguen mayúsculas de minúsculas. Comprender cómo procesar parámetros y búsquedas de texto es fundamental para construir correctamente las solicitudes a la API en Vertex AI Search for Commerce.

  • Tokenización y puntuación de la búsqueda: El texto en lenguaje natural que se pasa al campo query se somete a un análisis lingüístico y una corrección ortográfica automáticos. Durante este proceso, la puntuación estándar (como comas, puntos, + o -) suele quitarse o ignorarse para optimizar la comprensión del lenguaje natural.
  • Distinción estricta entre mayúsculas y minúsculas en los parámetros: Si bien las búsquedas de texto estándar no suelen distinguir entre mayúsculas y minúsculas, los parámetros programáticos sí lo hacen.
    • Filtros: Las expresiones de filtro y sus valores de cadena literal distinguen mayúsculas de minúsculas.
    • Ordenamiento: La expresión orderBy distingue mayúsculas de minúsculas. Si ordenas por un campo como products.title, el motor ordenará Apple antes de banana y antes de artichoke. Una solución alternativa es subir los títulos de los productos en mayúsculas a un atributo personalizado independiente (como attributes.title_upper) y ordenar los productos según ese atributo para lograr una ordenación que no distinga mayúsculas de minúsculas.
  • Caracteres especiales reservados:
    • El carácter > está estrictamente reservado como delimitador para las jerarquías de categorías (como Categories > Shoes). Si > aparece de forma natural en el nombre de tu categoría, debes reemplazarlo por otro carácter antes de la transferencia y la consulta.
    • El carácter / no se admite en los valores textuales dentro de las expresiones de filtro de recomendaciones.

Explorar búsquedas

La exploración utiliza la navegación del sitio para generar resultados de búsqueda de igual relevancia ordenados por los artículos más vendidos. La Búsqueda aprovecha la IA para optimizar el orden de los resultados de la exploración teniendo en cuenta la popularidad, la capacidad de compra y la personalización.

Para obtener los resultados de la búsqueda de exploración correctos, ten en cuenta lo siguiente:

  • Los valores de pageCategories y filter en tus solicitudes de búsqueda deben coincidir exactamente con los valores de pageCategories y filter en los eventos del usuario que subiste. Si los parámetros de las solicitudes no coinciden con los parámetros de los eventos, el modelo de nuevo ranking basado en clics que se entrenó a partir de los eventos no tendrá un buen rendimiento para esta búsqueda específica y afectará negativamente la calidad de los resultados.

  • Vertex AI Search for Commerce categoriza un evento de usuario search como un evento basado en la navegación si tiene un campo userEvent.searchQuery vacío y un campo userEvent.pageCategories no vacío. Por eso, debes asegurarte de enviar los eventos de exploración generados por Vertex AI Search for Commerce como eventos de usuario search cuando los subas.

  • Un filtro de exploración debe ser válido y debe indicar para cada búsqueda por exploración qué productos pertenecen a la categoría de productos que el usuario está explorando. Para lograr esta configuración, el ID de categoría debe definirse en los campos filter y page_category. Por ejemplo, si deseas que los resultados de la búsqueda se segmenten para Casa y jardín. En primer lugar, tener solo un valor de filter de "in-stock" no refina la búsqueda lo suficiente como para proporcionar resultados de navegación óptimos. Para proporcionar resultados de la búsqueda restringidos a Casa y jardín, no solo debes establecer "Home \& Garden" en la categoría de la página, sino también en el filtro con categories: ANY("Home & Garden"). Si no defines la categoría en la parte del filtro, es probable que los resultados de la exploración sean demasiado amplios y que incluyan muchos artículos que no sean de la categoría Home & Garden.

Las solicitudes de publicación y los eventos con un campo de búsqueda vacío y campos page_categories completados se consideran solicitudes de exploración y eventos de usuario. El campo page_categories especifica la página de exploración en sí. Cuando el método servingConfigs.search envía una solicitud, la Búsqueda la considera una solicitud de búsqueda por exploración si el campo query está vacío. En ese caso, los resultados se basan en los campos filter y pageCategories y, si están disponibles, en más optimización y personalización.

Puedes establecer la categoría en ambos como en este ejemplo:

JSON

page_category: "Home & Garden"
filter: "(availability: ANY("IN_STOCK")) AND (categories: ANY("Home & Garden"))"

De lo contrario, dado que la navegación funciona con búsquedas de cadenas vacías, los productos de una categoría determinada no se mostrarán automáticamente en los resultados de una categoría de página determinada. En otras palabras, si el usuario final navega sin especificar nada con una búsqueda de texto, es posible que la búsqueda no genere resultados segmentados de manera eficaz, incluso si el usuario navega a una página de categoría.

Usa solicitudes de búsqueda

Usa solicitudes de búsqueda para obtener resultados de búsquedas de texto y de exploración. Para realizar una solicitud de búsqueda, usa el método servingConfigs.search.

Todas las solicitudes de búsqueda requieren placement, que identifica el nombre completo del recurso de la configuración de entrega que se usará. La configuración de entrega determina qué parámetros de configuración y controles asociados afectan los resultados de la búsqueda.

Las solicitudes de búsqueda de consultas de texto requieren un campo query no vacío.

Las solicitudes de búsqueda por exploración requieren un campo pageCategories no vacío.

Python

Si deseas obtener información para instalar y usar la biblioteca cliente de Vertex AI Search for Commerce, consulta las bibliotecas cliente de Vertex AI Search for Commerce. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Search para comercio electrónico Python.

Para autenticarte en Vertex AI Search for Commerce, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

import google.auth
from google.cloud.retail import SearchRequest, SearchServiceClient

project_id = google.auth.default()[1]


# get search service request:
def get_search_request(query: str):
    default_search_placement = (
        "projects/"
        + project_id
        + "/locations/global/catalogs/default_catalog/placements/default_search"
    )

    search_request = SearchRequest()
    search_request.placement = default_search_placement  # Placement is used to identify the Serving Config name.
    search_request.query = query
    search_request.visitor_id = "123456"  # A unique identifier to track visitors
    search_request.page_size = 10

    print("---search request:---")
    print(search_request)

    return search_request


# call the Retail Search:
def search():
    # TRY DIFFERENT QUERY PHRASES HERE:
    query_phrase = "Hoodie"

    search_request = get_search_request(query_phrase)
    search_response = SearchServiceClient().search(search_request)

    print("---search response---")
    if not search_response.results:
        print("The search operation returned no matching results.")
    else:
        print(search_response)
    return search_response


search()

Node.js

Si deseas obtener información para instalar y usar la biblioteca cliente de Vertex AI Search for Commerce, consulta las bibliotecas cliente de Vertex AI Search for Commerce.

Para autenticarte en Vertex AI Search for Commerce, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

'use strict';

async function main() {
  // Call Retail API to search for a products in a catalog using only search query.

  // Imports the Google Cloud client library.
  const {SearchServiceClient} = require('@google-cloud/retail');

  // Instantiates a client.
  const retailClient = new SearchServiceClient();

  const projectId = await retailClient.getProjectId();

  // Placement is used to identify the Serving Config name.
  const placement = `projects/${projectId}/locations/global/catalogs/default_catalog/placements/default_search`;

  // Raw search query.
  const query = 'Hoodie'; //TRY DIFFERENT QUERY PHRASES

  // A unique identifier for tracking visitors.
  const visitorId = '12345';

  // Maximum number of Products to return.
  const pageSize = 10;

  const IResponseParams = {
    ISearchResult: 0,
    ISearchRequest: 1,
    ISearchResponse: 2,
  };

  const callSearch = async () => {
    console.log('Search start');
    // Construct request
    const request = {
      placement,
      query,
      visitorId,
      pageSize,
    };
    console.log('Search request: ', request);

    // Run request
    const response = await retailClient.search(request, {
      autoPaginate: false,
    });
    const searchResponse = response[IResponseParams.ISearchResponse];
    if (searchResponse.totalSize === 0) {
      console.log('The search operation returned no matching results.');
    } else {
      console.log('Search result: ', JSON.stringify(searchResponse, null, 4));
    }
    console.log('Search end');
  };

  callSearch();
}

process.on('unhandledRejection', err => {
  console.error(err.message);
  process.exitCode = 1;
});

main();

Java

Si deseas obtener información para instalar y usar la biblioteca cliente de Vertex AI Search for Commerce, consulta las bibliotecas cliente de Vertex AI Search for Commerce. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Search para comercio electrónico Java.

Para autenticarte en Vertex AI Search for Commerce, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.


import com.google.cloud.ServiceOptions;
import com.google.cloud.retail.v2.SearchRequest;
import com.google.cloud.retail.v2.SearchResponse;
import com.google.cloud.retail.v2.SearchServiceClient;
import java.io.IOException;
import java.util.UUID;

public class SearchSimpleQuery {

  public static void main(String[] args) throws IOException {
    String projectId = ServiceOptions.getDefaultProjectId();
    String defaultCatalogName =
        String.format("projects/%s/locations/global/catalogs/default_catalog", projectId);
    String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search";

    searchResponse(defaultSearchPlacementName);
  }

  public static void searchResponse(String defaultSearchPlacementName) throws IOException {
    // TRY DIFFERENT QUERY PHRASES HERE:
    String queryPhrase = "Hoodie";
    String visitorId = UUID.randomUUID().toString();
    int pageSize = 10;

    SearchRequest searchRequest =
        SearchRequest.newBuilder()
            .setPlacement(defaultSearchPlacementName)
            .setQuery(queryPhrase)
            .setVisitorId(visitorId)
            .setPageSize(pageSize)
            .build();
    System.out.println("Search request: " + searchRequest);

    // Initialize client that will be used to send requests. This client only
    // needs to be created once, and can be reused for multiple requests. After
    // completing all of your requests, call the "close" method on the client to
    // safely clean up any remaining background resources.
    try (SearchServiceClient client = SearchServiceClient.create()) {
      SearchResponse searchResponse = client.search(searchRequest).getPage().getResponse();
      if (searchResponse.getTotalSize() == 0) {
        System.out.println("The search operation returned no matching results.");
      } else {
        System.out.println("Search response: " + searchResponse);
      }
    }
  }
}

De forma predeterminada, se devuelve una cantidad razonable de resultados ordenados por relevancia.

Para que se muestren los atributos de producto en la respuesta de búsqueda, asegúrate de proporcionar valores de atributos cuando importes los datos de tu catálogo. Product tiene atributos predefinidos del sistema, como marca, color y tamaño, para los que puedes proporcionar valores. También puedes incluir atributos personalizados que definas con Product.attributes.

Instructivo de búsqueda

En este instructivo, se muestra cómo enviar una búsqueda basada en texto al servicio de Vertex AI Search for commerce y analizar la respuesta.


Para seguir la guía paso a paso sobre esta tarea directamente en el editor de Cloud Shell, haz clic en Guiarme:

GUIARME


Cómo filtrar los resultados de la búsqueda con sugerencias de autocompletar

Si implementaste sugerencias de autocompletado enriquecidas en tu frontend (en el que los usuarios pueden seleccionar una búsqueda combinada con una marca o categoría específica), debes traducir esa selección en un objeto SearchRequest filtrado.

Para implementar esto, extrae la sugerencia de texto y colócala en el campo query, y extrae el atributo seleccionado (como una marca) y dale formato como una expresión en el campo filter.

Ejemplo de solicitud de búsqueda a partir de una sugerencia filtrada

Si el usuario hizo clic en la sugerencia zapatos en Nike, estructura tu SearchRequest de la siguiente manera:

{
  "placement": "projects/YOUR_PROJECT_ID/locations/global/catalogs/default_catalog/placements/default_search",
  "query": "shoe",
  "filter": "brands: ANY(\"Nike\")",
  "visitorId": "user_session_123"
}

Agrega recuentos de productos a las facetas de sugerencias

Para mejorar aún más la experiencia de filtrado, puedes mostrar la cantidad de productos disponibles para cada filtro de sugerencia antes de que el usuario ejecute la búsqueda. Para usar facetas de sugerencias con recuentos de productos, debes comunicarte con el equipo de asistencia al cliente para habilitar la función. Cuando esté habilitada, incluye la clave de faceta textual específica en el facetSpecs de tu SearchRequest durante al menos 7 días para permitir que el sistema calcule los recuentos de productos según los datos de tu historial de búsqueda.

Paginación

Usa la paginación para disminuir el tiempo de búsqueda y el tamaño de las respuestas que se envían.

Instructivo de paginación

En este instructivo, se muestra cómo controlar la paginación en una solicitud de búsqueda basada en texto. Cuando un comprador busca productos en una tienda, puede mejorar su navegación por los resultados de la búsqueda. Por ejemplo, pueden limitar la cantidad de elementos en la respuesta de búsqueda con la función de tamaño de página o saltar a la página que prefieran con la función de desplazamiento.


Para seguir la guía paso a paso sobre esta tarea directamente en el editor de Cloud Shell, haz clic en Guiarme:

GUIARME


Paginación

Para pasar de una página a otra, usa page_token o offset, según tu caso de uso.

Python

Si deseas obtener información para instalar y usar la biblioteca cliente de Vertex AI Search for Commerce, consulta las bibliotecas cliente de Vertex AI Search for Commerce. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Search para comercio electrónico Python.

Para autenticarte en Vertex AI Search for Commerce, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.


import google.auth
from google.cloud.retail import SearchRequest, SearchServiceClient

project_id = google.auth.default()[1]


# get search service request:
def get_search_request(query: str, page_size: int, offset: int, next_page_token: str):
    default_search_placement = (
        "projects/"
        + project_id
        + "/locations/global/catalogs/default_catalog/placements/default_search"
    )

    search_request = SearchRequest()
    search_request.placement = default_search_placement
    search_request.visitor_id = "123456"  # A unique identifier to track visitors
    search_request.query = query
    search_request.page_size = page_size
    search_request.offset = offset
    search_request.page_token = next_page_token

    print("---search request:---")
    print(search_request)

    return search_request


# call the Retail Search:
def search():
    # TRY DIFFERENT PAGINATION PARAMETERS HERE:
    page_size = 6
    offset = 0
    page_token = ""

    search_request_first_page = get_search_request(
        "Hoodie", page_size, offset, page_token
    )
    search_response_first_page = SearchServiceClient().search(search_request_first_page)

    print("---search response---")
    if not search_response_first_page.results:
        print("The search operation returned no matching results.")
    else:
        print(search_response_first_page)

    # PASTE CALL WITH NEXT PAGE TOKEN HERE:

    # PASTE CALL WITH OFFSET HERE:

    return search_response_first_page


search()

Node.js

Si deseas obtener información para instalar y usar la biblioteca cliente de Vertex AI Search for Commerce, consulta las bibliotecas cliente de Vertex AI Search for Commerce.

Para autenticarte en Vertex AI Search for Commerce, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

async function main() {
  // Imports the Google Cloud client library.
  const {SearchServiceClient} = require('@google-cloud/retail');

  // Instantiates a client.
  const retailClient = new SearchServiceClient();

  const projectId = await retailClient.getProjectId();

  // Placement is used to identify the Serving Config name.
  const placement = `projects/${projectId}/locations/global/catalogs/default_catalog/placements/default_search`;

  // Raw search query.
  const query = 'Hoodie';

  // A unique identifier for tracking visitors.
  const visitorId = '12345';

  // Maximum number of Products to return.
  const pageSize = 6; // TRY DIFFERENT PAGE SIZES, INCLUDING THOSE OVER 100

  // A 0-indexed integer that specifies the current offset in search results.
  const offset = 0; // TRY DIFFERENT OFFSETS TO SEE DIFFERENT PRODUCTS

  //A page token received from a previous search call.
  let pageToken = '';

  const IResponseParams = {
    ISearchResult: 0,
    ISearchRequest: 1,
    ISearchResponse: 2,
  };

  const callSearch = async () => {
    console.log('Search start');
    // Construct request
    const request = {
      placement,
      query,
      visitorId,
      pageSize,
      offset,
      pageToken,
    };

    // Run request
    const response = await retailClient.search(request, {
      autoPaginate: false,
    });
    const searchResponse = response[IResponseParams.ISearchResponse];
    if (searchResponse.totalSize === 0) {
      console.log('The search operation returned no matching results.');
    } else {
      console.log('Search result: ', JSON.stringify(searchResponse, null, 4));
      pageToken = response[IResponseParams.ISearchResponse].nextPageToken;
      console.log(
        'Next page token:',
        response[IResponseParams.ISearchResponse].nextPageToken
      );
    }
    console.log('Search end');
  };

  // Call search
  await callSearch();

  //PASTE CALL WITH NEXT PAGE TOKEN HERE:
}

Java

Si deseas obtener información para instalar y usar la biblioteca cliente de Vertex AI Search for Commerce, consulta las bibliotecas cliente de Vertex AI Search for Commerce. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Search para comercio electrónico Java.

Para autenticarte en Vertex AI Search for Commerce, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.


import com.google.cloud.ServiceOptions;
import com.google.cloud.retail.v2.SearchRequest;
import com.google.cloud.retail.v2.SearchResponse;
import com.google.cloud.retail.v2.SearchServiceClient;
import java.io.IOException;
import java.util.UUID;

public class SearchWithPagination {

  public static void main(String[] args) throws IOException {
    String projectId = ServiceOptions.getDefaultProjectId();
    String defaultCatalogName =
        String.format("projects/%s/locations/global/catalogs/default_catalog", projectId);
    String defaultSearchPlacementName = defaultCatalogName + "/placements/default_search";

    searchResponse(defaultSearchPlacementName);
  }

  public static void searchResponse(String defaultSearchPlacementName) throws IOException {
    // TRY DIFFERENT PAGINATION PARAMETERS HERE:
    int pageSize = 6;
    String queryPhrase = "Hoodie";
    int offset = 0;
    String pageToken = "";
    String visitorId = UUID.randomUUID().toString();

    SearchRequest searchRequest =
        SearchRequest.newBuilder()
            .setPlacement(defaultSearchPlacementName)
            .setVisitorId(visitorId)
            .setQuery(queryPhrase)
            .setPageSize(pageSize)
            .setOffset(offset)
            .setPageToken(pageToken)
            .build();
    System.out.println("Search request: " + searchRequest);

    // Initialize client that will be used to send requests. This client only
    // needs to be created once, and can be reused for multiple requests. After
    // completing all of your requests, call the "close" method on the client to
    // safely clean up any remaining background resources.
    try (SearchServiceClient client = SearchServiceClient.create()) {
      SearchResponse searchResponseFirstPage = client.search(searchRequest).getPage().getResponse();
      if (searchResponseFirstPage.getTotalSize() == 0) {
        System.out.println("The search operation returned no matching results.");
      } else {
        System.out.println("Search response: " + searchResponseFirstPage);
      }

      // PASTE CALL WITH NEXT PAGE TOKEN HERE:

      // PASTE CALL WITH OFFSET HERE:
    }
  }
}

Token de página

Para ir a la página siguiente, puedes usar page_token. Por ejemplo, supongamos que envías el siguiente SearchRequest.

JSON

{
  placement: 'projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/placements/default_search'
  visitor_id: 'VISITOR_ID'
  query: 'shoes'
  page_size: 5
}

Desde SearchResponse, puedes obtener los productos resultantes con las 5 relevancias principales, junto con un next_page_token.

JSON

{
  results: [
    products{...}, products{...}, products{...}, products{...}, products{...}
  ]
  next_page_token: "wY4ETNkBDOlVjZ0YWLzUmM40SMhVjMtADMwATL5UGN5MGZlVDJaIQ5LaYsQUw9fC6lIwgE1EgC"
  total_size: 100
  search_token: "NtQKDAiXt4_3BRDCg_jnARABGiQ1ZWRjOTRlOC0wMDAwLTI1YTEtODJlMy1mNGY1ZTgwZDUxOGM"
}

Para obtener los productos del resultado con las 5 relevancias siguientes (de la 6 a la 10), debes configurarpage_token usando los mismos placement, visitor_id y query como next_page_token de SearchResponse anterior.

Java

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

public static void searchProducts_withNextPageToken(String query, int pageSize)
    throws IOException, InterruptedException {
  try (SearchServiceClient searchClient = SearchServiceClient.create()) {
    SearchRequest firstRequest = SearchRequest.newBuilder()
        .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
        .setBranch(DEFAULT_BRANCH_NAME)
        .setVisitorId(VISITOR_ID)
        .setQuery(query)
        .setPageSize(pageSize)
        .build();

    SearchResponse firstResponse = searchClient.search(firstRequest).getPage()
        .getResponse();
    System.out.println("First search response: " + firstResponse);

    SearchRequest secondRequest = SearchRequest.newBuilder()
        .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
        .setBranch(DEFAULT_BRANCH_NAME)
        .setVisitorId(VISITOR_ID)
        .setQuery(query)
        .setPageSize(pageSize)
        .setPageToken(firstResponse.getNextPageToken())
        .build();

    SearchResponse secondResponse = searchClient.search(secondRequest).getPage()
        .getResponse();
    System.out.println("Second search response: " + secondResponse);
  }
}

En este ejemplo, SearchRequest se ve de la siguiente manera:

JSON

{
  placement: 'projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/placements/default_search'
  visitor_id: 'VISITOR_ID'
  query: 'shoes'
  page_size: 5
  page_token: "wY4ETNkBDOlVjZ0YWLzUmM40SMhVjMtADMwATL5UGN5MGZlVDJaIQ5LaYsQUw9fC6lIwgE1EgC"
}

Desplazamiento

En otros casos, en lugar de navegar de una página a otra o de obtener los resultados más relevantes, puedes ir directamente a una posición determinada con offset.

Por ejemplo, si quieres la décima página de los resultados, cuando el tamaño de la página es 5, entonces puedes establecer que offset sea 45, que se calcula mediante (10 - 1) * 5.

JSON

{
  placement: 'projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/placements/default_search'
  visitor_id: 'VISITOR_ID'
  query: 'shoes'
  page_size: 5
  offset: 45
}

Niveles de rendimiento de búsqueda

La Búsqueda ofrece varios niveles de rendimiento de búsqueda que mejoran cada vez más tus resultados. Por ejemplo, en el caso de uso de búsqueda de consultas de texto, los resultados pueden basarse únicamente en la relevancia. A medida que desbloqueas niveles de rendimiento más avanzados, la Búsqueda puede devolver resultados basados en la relevancia, la popularidad, la optimización de ingresos y la personalización.

La Búsqueda desbloquea automáticamente niveles de rendimiento más altos cuando subes datos del catálogo y de eventos del usuario que cumplen con los requisitos mínimos de cada nivel.

Para obtener más información sobre cómo usar esta página para ver los niveles de calidad de los datos y rendimiento de la búsqueda, consulta Cómo desbloquear los niveles de rendimiento de la búsqueda. La página Calidad de los datos de la consola de Search for Commerce proporciona una evaluación de los requisitos que cumpliste para cada nivel.

Evalúa los resultados de la búsqueda y la exploración de texto

Antes de actualizar el código de tu sitio web para solicitar resultados de búsqueda de texto o de navegación, puedes obtener una vista previa de los resultados para confirmar que tu configuración de entrega funcione como esperas.

Para obtener más información sobre la configuración de entrega, consulta Acerca de la configuración de entrega.

Puedes obtener una vista previa de los resultados de la configuración de entrega desde la página Evaluación o yendo a la página Detalles de una configuración de entrega en la consola y haciendo clic en su pestaña Evaluación. En los siguientes pasos, se muestra cómo obtener una vista previa desde la página Evaluar.

Para obtener una vista previa de los resultados que muestra la configuración de entrega, sigue estos pasos:

  1. Ve a la página Evaluar en la consola de Search for Commerce.

    Ir a la página Evaluación

  2. Haz clic en la pestaña Buscar.

  3. Selecciona la configuración de entrega de la que deseas obtener una vista previa.

  4. Selecciona la rama del catálogo que contiene el catálogo del que deseas obtener una vista previa.

  5. Opcional: Ingresa un ID de visitante para obtener una vista previa de los resultados de la búsqueda de ese usuario.

  6. Opcional: Ingresa un ID de usuario para obtener una vista previa de los resultados de la búsqueda de ese usuario.

  7. Opcional: Ingresa una hora de búsqueda para obtener una vista previa de los resultados de la búsqueda que aparecerían en la hora especificada.

    Por ejemplo, si promocionaste ciertos productos para una oferta especial, puedes ver los resultados tal como aparecerían ese día.

  8. Opcional: Selecciona las facetas que se mostrarán junto a los resultados de la búsqueda y haz clic en Aceptar para aplicarlas.

    Las facetas que selecciones se usarán para generar una lista de filtros de facetas que aparecerán en Agregar facetas después de que realices la búsqueda inicial. Estos filtros de facetas pueden incluir facetas que no sean las que seleccionas en este paso, como las facetas dinámicas.

  9. Ingresa una consulta de búsqueda basada en texto para obtener una vista previa de los resultados de la búsqueda para esa consulta.

  10. Haz clic en Vista previa de la búsqueda o presiona Intro en cualquier campo de entrada para ver los resultados.

    Los resultados de la búsqueda se muestran con las imágenes en miniatura disponibles.

    Si tu búsqueda activa un control de redireccionamiento, aparecerá un aviso que mostrará el URI de redireccionamiento.

  11. Opcional: Haz clic en el ícono de cuadrícula o en el ícono de lista para cambiar la forma en que se muestran los resultados de la búsqueda en la vista previa.

  12. Opcional: Si seleccionaste facetas para que aparezcan junto a los resultados, selecciona uno o más valores de facetas de la lista de facetas para filtrar los resultados por esos valores. Los resultados se actualizan automáticamente cuando se realiza la selección.

    Cuando seleccionas varios valores de la misma faceta, se aplican como lo haría un operador OR, y los valores de diferentes facetas se aplican como lo haría un operador AND. Por ejemplo, después de seleccionar las facetas color y los valores "azul" y "dorado", y los valores de material "algodón" y "poliéster". Tus resultados de la búsqueda deben tener "azul" o "dorado" como atributo, y también deben tener "algodón" o "poliéster" como atributo.

Explorar

  1. Ve a la página Evaluar en la consola de Search for Commerce.

    Ir a la página Evaluación

  2. Haz clic en la pestaña Explorar.

  1. Selecciona la configuración de entrega de la que deseas obtener una vista previa.

  2. Selecciona la rama del catálogo que contiene el catálogo del que deseas obtener una vista previa.

  3. Opcional: Ingresa un ID de visitante para obtener una vista previa de los resultados de ese usuario.

  4. Opcional: Ingresa un ID de usuario para obtener una vista previa de los resultados de ese usuario.

  5. Para obtener una vista previa de cómo se verían los resultados con un filtro específico agregado, ingresa una cadena de filtro. Usa la sintaxis de expresión de filtro especificada en la documentación de Filter.

  6. Opcional: Ingresa un tiempo de exploración para obtener una vista previa de los resultados que aparecerían en el momento especificado.

    Por ejemplo, si promocionaste ciertos productos para un evento de ventas pico, puedes ver los resultados tal como aparecerían ese día.

  7. Ingresa la categoría de página para la que estás probando los resultados de la exploración.

  8. Opcional: Selecciona las facetas que deseas mostrar junto con los resultados y haz clic en Aceptar para aplicarlas.

    Las facetas que selecciones se usarán para generar una lista de filtros de facetas que aparecerán en Agregar facetas después de que realices la búsqueda inicial. Estos filtros de facetas pueden incluir facetas que no sean las que seleccionas en este paso, como las facetas dinámicas.

  9. Haz clic en Browse preview o presiona Intro en cualquier campo de entrada para ver los resultados.

    Los resultados se muestran con las imágenes en miniatura disponibles.

  10. Opcional: Haz clic en el ícono de cuadrícula o en el ícono de lista para cambiar la forma en que se muestran los resultados en la vista previa.

  11. Opcional: Si seleccionaste facetas para que aparezcan junto a los resultados, selecciona uno o más valores de facetas de la lista de facetas para filtrar los resultados por esos valores. Los resultados se actualizan automáticamente cuando se realiza la selección.

    Cuando seleccionas varios valores de la misma faceta, se aplican como lo haría un operador OR, y los valores de diferentes facetas se aplican como lo haría un operador AND. Por ejemplo, después de seleccionar las facetas color y material, puedes filtrar los resultados de la búsqueda seleccionando los valores de color “azul” y “dorado”, y los valores de material “algodón” y “poliéster”. Tus resultados deben tener "azul" o "dorado" como atributo, y también deben tener "algodón" o "poliéster" como atributo.

Para ver la página Detalles de la configuración de entrega que estás viendo en la vista previa, haz clic en Ver configuración de entrega en el campo Seleccionar configuración de entrega.