Búsqueda

$text y MongoDB Search con índices que ven cada escritura confirmada.

TeselaDB implementa $text y MongoDB Search (antes Atlas Search): $search, $searchMeta, los comandos de índices de búsqueda. De MongoDB Search tiene también los operadores y los analizadores, igual que los sinónimos y los tipos de campo. Los índices de búsqueda viven en los mismos nodos que los datos, así que no necesitas un proceso aparte.

Requisitos

  • Un usuario que pueda crear índices de búsqueda en la colección.

Crear un índice y buscar

JavaScript
db.articulos.createSearchIndex({
  name: "default",
  definition: { mappings: { dynamic: true } },
});

db.articulos.aggregate([
  { $search: { text: { query: "replicación automática", path: ["titulo", "cuerpo"] } } },
  { $limit: 10 },
  { $project: { titulo: 1, score: { $meta: "searchScore" } } },
]);

Lo que cambia respecto a MongoDB

  • Una búsqueda ve las escrituras confirmadas antes que ella, porque los índices de búsqueda son consistentes. En MongoDB pueden tardar en aparecer.
  • Las puntuaciones salen de las estadísticas de toda la colección, en todos sus rangos. Son iguales en todas las réplicas y coinciden con las de un replica set de MongoDB con los mismos documentos.

Texto clásico

$text con un índice text es igual que en MongoDB, con su puntuación ($meta: "textScore"). Para búsqueda semántica con vectores, mira Búsqueda vectorial.

Comprobar

La agregación del ejemplo devuelve los documentos con su score, de mayor a menor.

Problemas frecuentes

  • Una consulta $text falla porque la colección no tiene un índice text.

Ver también