Docs Menu
Docs Home
/

Sugerencias relevantes a medida que escribe

Añada sugerencias rápidas y relevantes mientras escribe en su aplicación, incorporando el contexto del usuario y los factores de clasificación específicos del dominio.

Casos de uso: Gestión de contenidos, Catálogo

Industrias: Comercio minorista

Productos: MongoDB Atlas, Búsquedavectorialde MongoDB Atlas

La función de búsqueda a medida que escribe, también conocida como autocompletar, autosugerencia o búsqueda predictiva, suele referirse a la búsqueda de caracteres de bajo nivel, en lugar de a una solución integral y específica. Esta función le ayuda a navegar rápidamente al contenido relevante que desea. Buscar la película "Matrix" escribiendo "matr" en la barra de búsqueda es un ejemplo de esta función.

La búsqueda vectorial y la búsqueda de texto completo son excelentes para encontrar coincidencias semánticas de contenido cuando existe una consulta completa o coincidencias de palabras muy cercanas. Sin embargo, una función integrada de escritura a medida que se escribe puede devolver resultados relevantes con incluso menos caracteres y mayor distancia entre el texto introducido y la palabra clave de destino. Esta solución basada en el léxico facilita la coincidencia parcial y proporciona resultados relevantes y contextuales.

La solución de sugerencias a medida que escribe tiene una arquitectura sencilla. A medida que escribe, las solicitudes se envían a Atlas Search, que devuelve resultados relevantes. La arquitectura se estructura en torno a un... entities recopilación y las consultas correspondientes.

Arquitectura de solución a medida que se escribe
haga clic para ampliar

Figura 1. Arquitectura de solución justo cuando escribes

Cada sugerencia presentada al usuario representa una entidad única de su dominio. Las entidades deben modelarse como documentos individuales en una colección especializada, optimizada para la sugestibilidad a medida que escribe.

La colección principal suele representar un tipo de entidad, como documentos, y otras entidades de dominio, como campos de metadatos o documentos incrustados. Por ejemplo, considere usar los datos de películas de muestra disponibles en Atlas. A medida que escribe, la búsqueda sugiere nombres de películas. Sin embargo, también puede buscar nombres de miembros del elenco. Por ejemplo, puede encontrar películas protagonizadas por Keanu Reeves escribiendo solo "kea".

El modelo de datos tiene el siguiente esquema:

  • _id:identificación única para esta colección en el formato <type>-<natural id>.

  • type:tipo de entidad/objeto, por ejemplo, película, marca, persona, producto y categoría.

  • name:el nombre o título de la entidad, que generalmente sería único por tipo.

Es importante que los documentos de entidad tengan identificadores únicos y estables, ya que las entidades se actualizan periódicamente desde la colección principal. Asignar un type a cada entidad permite filtrar (sugerir solo miembros del elenco en una búsqueda específica por actor), agrupar (organizar las sugerencias por tipo) o potenciar por tipo (dar mayor importancia a las películas que a los nombres de los miembros del elenco).

Modelar entidades directamente como documentos individuales permite que cada una lleve campos de metadatos opcionales para ayudar a clasificarlas, mostrarlas, filtrarlas o agruparlas.

El modelo de documento alimenta el campo name mediante una sofisticada configuración de índice, que divide los valores de múltiples maneras, lo que permite realizar consultas de diversas maneras. La eficacia de esta solución reside en la combinación de múltiples estrategias de indexación y consulta.

{
"_id":"title-The Matrix",
"name":"The Matrix",
"type":"title"
}

Primero, identifica las entidades sugestionables en tus datos. En el caso de las películas, estas incluirían títulos de películas, nombres de los actores y quizás también géneros y nombres de directores.

La base de este sistema de sugerencias a medida que escribe es la siguiente:

  1. Cree una colección entities y rellénela con el esquema modelado anteriormente. Actualice la colección entities con la frecuencia necesaria.

  2. Cree una búsqueda de Atlas entities_index utilizando una configuración de índice como se describe a continuación.

  3. Cree un conjunto sólido de cláusulas de consulta, junto con todos los factores de impulso pertinentes, dentro de una canalización de agregación que utilice $search.

Si bien hay varias formas de completar la entities colección, una forma sencilla de hacerlo es ejecutar una secuencia de agregación en la colección principal para incorporar los títulos únicos de todas las películas:

[
{
$group: {
_id: "$title",
},
},
{
$project: {
_id: {$concat: [ "title", "-", "$_id" ]},
type: "title",
name: "$_id"
}
},
{ $merge: { into: "entities" } }
]

La etapa $project convierte cada título de película único en el esquema entities necesario. Dado que esta colección tipifica cada documento, el type se codifica como prefijo del _id generado y se añade al título de la película, creando un identificador reproducible para cada título único. Incluir type en los identificadores de entidad permite que diferentes tipos de entities con el mismo nombre sean independientes entre sí (podría haber una película llamada "Aventura" además del género "Aventura").

Finalmente, la etapa $merge agrega todos los títulos nuevos y deja intactos los existentes.

El documento resultante, con el título mecanografiado de “Matrix”, aparece simplemente así:

{
"_id":"title-The Matrix",
"name":"The Matrix",
"type":"title"
}

Cada tipo de entidad necesita potencialmente su propia técnica para fusionarse en la colección entities, como en el caso de las entidades "género" y "elenco", que necesitan desenrollarse de sus matrices anidadas usando $unwind.

Esta importación de entidades específicas del elenco incluye a “Keanu Reeves” como:

{
"_id":"cast-Keanu Reeves",
"name":"Keanu Reeves",
"type":"cast",
"weight": 6.637
}

El campo name se indexa de múltiples maneras, lo que facilitará la coincidencia parcial y la clasificación en el momento de la consulta.

Múltiples estrategias de indexación

Figura 2. Estrategias de indexación múltiples

La función de analizadores múltiples utiliza la configuración del índice Atlas Search para permitir que un solo campo de documento se indexe de múltiples maneras.

El campo type se indexa como un campo token, para filtrar equals o in, y como un campo stringFacet para proporcionar un medio para obtener recuentos de los resultados de cada tipo de entidad.

La definición del índice gestiona cualquier otro campo añadido además de _id, type y name, ya sea mediante mapeo dinámico o con las definiciones estáticas que proporciones. En este ejemplo, weight es personalizado y manejado dinámicamente como un tipo numérico.

El índice de búsqueda especializado resultante sienta las bases para las consultas sobre la marcha. El campo name se indexa de diversas maneras y se compara con la escritura de los usuarios mediante diversos operadores de consulta ajustables. La idea es comparar los operadores de consulta con las diferentes asignaciones analizadas y ver qué coincide. Cuantas más coincidencias se encuentren, mayor será la puntuación de la sugerencia. Cada cláusula de consulta se puede incrementar y sumar de forma independiente, lo que proporciona una puntuación de relevancia para la entidad coincidente. Estas puntuaciones podrían incrementarse aún más mediante otros factores, como un campo de entidad opcional weight.

Ejemplo de cálculo de consulta y puntuación de relevancia
haga clic para ampliar

Figura 3. Ejemplo de consulta y cálculo de puntuación de relevancia.

Generalmente, el usuario que selecciona una sugerencia realiza una búsqueda tradicional específica del artículo seleccionado. La búsqueda devuelve todos los artículos coincidentes.

Visita el repositorio de GitHub a esta solución.

  • Utilice una configuración de índice especializada para modelar entidades sugeribles como documentos: siga los pasos anteriores para crear una colección separada que contenga todas las entidades de cualquier fuente.

  • Cree un índice con estas configuraciones: Utilice estas configuraciones de índice cuando su colección principal modele todas las entidades sugeribles como documentos de nivel superior.

  • Utilice la estructura del índice para crear consultas inteligentes: use su índice para hacer coincidir entidades y clasificar sugerencias como desee.

  • Erik Hatcher, MongoDB

  • Venta minorista impulsada por IA: personalización y precisión

  • Automatizar las descripciones de productos mediante IA generativa

  • Sistema de gestión de inventario basado en eventos

Volver

Búsqueda de productos de IA

En esta página