Cómo obtener resultados de búsqueda

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

Identificadores únicos de sesión de 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 durante su recorrido de compra.

Vertex AI Search for Commerce usa el historial asociado con un visitor_id específico para entrenar modelos y publicar resultados de búsqueda personalizados. El sistema genera resultados de forma dinámica en función del visitor_id específico que se proporciona en la solicitud. Por ejemplo, si un visitante ve vestidos verdes con frecuencia, el modelo usa visitor_id para reconocerlo más tarde y priorizar artículos similares en sus resultados de búsqueda. Por este motivo, el ID de visitante debe tener el mismo formato en la transferencia de eventos de usuario (seguimiento) y en las solicitudes de búsqueda o recomendaciones (publicación).

La pertinencia es diferente de la coincidencia. La coincidencia consiste en encontrar productos candidatos en el índice que correspondan a la búsqueda del usuario. Por otro lado, la pertinencia 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 usa técnicas para mejorar la coincidencia y la pertinencia para brindar a los usuarios una mejor experiencia de búsqueda general que satisfaga las necesidades de los minoristas.

La búsqueda se establece de forma predeterminada en la pertinencia. Sin embargo, algunos productos no pertinentes 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 estableces 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 pertinentes, que antes se mostraban en la parte inferior de la búsqueda predeterminada, se filtran hasta cierto punto. Lee la siguiente sección para descubrir cómo personalizar la búsqueda.

Vertex AI Search for Commerce se establece de forma predeterminada en la pertinencia de la búsqueda. Sin embargo, la búsqueda también está optimizada para mostrar elementos marginalmente pertinentes más arriba en los resultados de la búsqueda para proporcionar a los minoristas resultados de búsqueda más segmentados y aumentar el potencial de conversión de los eventos de usuario.

Estas funciones de búsqueda agregadas optimizan el algoritmo de pertinencia predeterminado y proporcionan funciones no predeterminadas optimizadas para el perfil de utilización de cada minorista, incluidas las siguientes:

La búsqueda proporciona capacidades de búsqueda de consultas de texto y de búsqueda de exploración.

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

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

Tanto las solicitudes de búsqueda de texto como las de búsqueda de exploración usan el servingConfigs.search método.

Búsquedas de consultas de texto

Cuando un usuario ingresa una consulta de texto para buscar en tu sitio, la búsqueda ordena los posibles resultados de la búsqueda en función de la pertinencia, la popularidad, la capacidad de compra y la personalización.

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

Cuando subas eventos 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 consultas y parámetros de texto

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

  • Tokenización y puntuación de consultas: El texto en lenguaje natural se pasa al campo query y se somete a un análisis lingüístico automático y a una corrección ortográfica. Durante este proceso, la puntuación estándar (como comas, puntos, + o -) suele eliminarse 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 consultas de texto estándar generalmente no distinguen entre mayúsculas y minúsculas, los parámetros programáticos sí lo hacen.
    • Filtros: Las expresiones de filtro y sus valores de cadena literales distinguen completamente entre mayúsculas y minúsculas.
    • Ordenamiento: La orderBy expresión distingue entre mayúsculas y minúsculas. Si ordenas por un campo como products.title, el motor ordenará Apple antes que banana y alcachofa. 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 por ese atributo para lograr un ordenamiento que no distinga entre mayúsculas y 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.
    • No se admite el carácter / en los valores textuales dentro de las expresiones de filtro de recomendaciones.

Búsquedas de exploración

La exploración usa la navegación del sitio para producir resultados de búsqueda de igual pertinencia ordenados por los artículos más vendidos. La búsqueda aprovecha la IA para optimizar la forma en que se ordenan los resultados de la exploración teniendo en cuenta la popularidad, la capacidad de compra y la personalización.

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

  • Los valores pageCategories y filter de tus solicitudes de búsqueda deben coincidir exactamente con los valores pageCategories y filter de tus eventos de usuario subidos. Si los parámetros de las solicitudes no coinciden con los parámetros de los eventos, el modelo de cambio de clasificación basado en clics que aprendió de los eventos no funcionará muy bien para esta consulta 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 exploración si tiene un campo userEvent.searchQuery vacío y un campo no vacío userEvent.pageCategories. 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 consulta de exploración qué productos pertenecen a la categoría de producto 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 quieres que los resultados de la búsqueda se segmenten para Casa y jardín. En primer lugar, tener solo un valor filter de "in-stock" no define la búsqueda lo suficiente como para proporcionar resultados de exploración óptimos. Para proporcionar resultados de búsqueda restringidos a Casa y jardín, no solo debes establecer "Home \& Garden" en la categoría de 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 elementos que no sean de Casa y jardín.

Las solicitudes y los eventos de publicación con un campo de consulta 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 de 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 una mayor 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, debido a que la exploración funciona con consultas de cadena 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 explora sin especificar nada con una consulta de texto, es posible que la búsqueda no arroje 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 búsquedas de exploración. Para realizar una solicitud de búsqueda, usa el servingConfigs.search método.

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 de exploración requieren un campo pageCategories no vacío.

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(String query) throws IOException, InterruptedException {
  SearchRequest searchRequest = SearchRequest.newBuilder()
      .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
      .setBranch(DEFAULT_BRANCH_NAME)
      .setVisitorId(VISITOR_ID)
      .setQuery(query)
      .build();

  try (SearchServiceClient searchClient = SearchServiceClient.create()) {
    SearchResponse response = searchClient.search(searchRequest).getPage().getResponse();
    System.out.println("Search response: " + searchResponse);
  }
}

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

Para que se devuelvan los atributos del producto con 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 consulta de 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


Filtra los resultados de la búsqueda con sugerencias de autocompletar

Si implementaste sugerencias de autocompletar enriquecidas en tu frontend (donde los usuarios pueden seleccionar una consulta combinada con una marca o categoría específica), debes traducir esa selección a una SearchRequest filtrada.

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 shoe 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 en función de 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 a través de los resultados de la búsqueda. Por ejemplo, puede limitar la cantidad de elementos en la respuesta de búsqueda con la función de tamaño de página o ir a la página que prefiera 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


Paginar

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

Para ir a la página siguiente, puedes usar page_token. Por ejemplo, supongamos que envías la 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 configurar page_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"
}

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

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_withOffset(String query, int pageSize,
    int offset) throws IOException, InterruptedException {
  SearchRequest searchRequest = SearchRequest.newBuilder()
      .setPlacement(DEFAULT_SEARCH_PLACEMENT_NAME)
      .setBranch(DEFAULT_BRANCH_NAME)
      .setVisitorId(VISITOR_ID)
      .setQuery(query)
      .setPageSize(pageSize)
      .setOffset(offset)
      .build();

  try (SearchServiceClient searchClient = SearchServiceClient.create()) {
    SearchResponse response = searchClient.search(searchRequest).getPage().getResponse();
    System.out.println("Search response: " + searchResponse);
  }
}

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, para los casos de uso de búsqueda de consultas de texto, los resultados pueden basarse únicamente en la pertinencia. A medida que desbloqueas niveles de rendimiento más avanzados, la búsqueda puede mostrar resultados basados en la pertinencia, 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 de catálogo y eventos de usuario que cumplen con los requisitos mínimos de cada nivel.

Para obtener más información sobre el uso de esta página para ver la calidad de los datos y los niveles de rendimiento de búsqueda, consulta Desbloquea los niveles de rendimiento de 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 de texto y de la exploración

Antes de actualizar el código de tu sitio web para solicitar resultados de búsqueda de texto o de exploració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 las configuraciones de entrega, consulta Acerca de las configuraciones de entrega.

Puedes obtener una vista previa de los resultados de la configuración de entrega desde la página Evaluar o ir a la página Detalles de una configuración de entrega en la consola y hacer clic en su pestaña Evaluar. 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 Búsqueda.

  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 el momento especificado.

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

  8. Opcional: Selecciona las facetas que se mostrarán junto con 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 realizar la búsqueda inicial. Estos filtros de facetas pueden incluir facetas distintas de las que selecciones 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 de 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 sus 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 con tus 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 del filtro.

  6. Opcional: Ingresa una hora 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 venta máxima, 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 se mostrarán 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 realizar la búsqueda inicial. Estos filtros de facetas pueden incluir facetas distintas de las que selecciones en este paso, como las facetas dinámicas.

  9. Haz clic en Vista previa de la exploración o presiona Intro en cualquier campo de entrada para ver los resultados.

    Los resultados se muestran con sus 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 con tus 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 de la que obtienes una vista previa, haz clic en Ver configuración de entrega en el campo Seleccionar configuración de entrega.