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
$textfalla porque la colección no tiene un índicetext.