Compara text indexes del servidor con Atlas Search para búsqueda por términos, relevancia, análisis lingüístico, autocomplete y consultas especializadas.
MongoDB ofrece varias capacidades de búsqueda textual, pero no resuelven el mismo problema. Un del servidor permite consultas básicas en Atlas y despliegues self-managed. —antes conocido como Atlas Search— usa índices de búsqueda separados y un motor basado en Lucene para relevancia, autocomplete, fuzzy matching, synonyms, highlights y faceting.
text index
$text
MongoDB Search
Texto
igualdad o prefijo estructurado
→ índice B-tree normal
búsqueda textual básica
→ text index + $text
experiencia de buscador
→ MongoDB Search
Elegir bien evita intentar convertir regex, índices normales o consultas $text en un motor de búsqueda completo.
Highlights muestran fragmentos coincidentes. Son contenido generado por el motor, no HTML confiable del usuario. Escapa la salida antes de renderizar y conserva límites de longitud.
Un buscador de productos suele combinar texto con:
categoría;
rango de precio;
sucursal;
disponibilidad;
marca;
estado;
tenant.
Search puede devolver facets y conteos, pero counts exactos y muchas dimensiones pueden ser costosos. Evita solicitar metadata que la interfaz no utiliza.
Los índices de búsqueda separados pueden actualizarse de forma asíncrona respecto a la escritura operacional. Define si la interfaz tolera que un producto recién creado tarde brevemente en aparecer.
Para flujos read-your-own-write puede:
mostrar el resultado localmente;
consultar por _id directamente;
esperar confirmación del índice cuando la plataforma lo permita;
comunicar estado de indexación.
No uses búsqueda eventual para verificar una escritura crítica.
Los índices normales, text indexes y MongoDB Search atienden necesidades distintas. La búsqueda se diseña desde queries reales, idioma, ranking, filtros y frescura. Para una experiencia tipo buscador, Search es más expresivo; para necesidades básicas, $text puede bastar. Regex solo debe usarse cuando el patrón y el volumen están controlados.
Comprueba lo aprendido
¿Qué diferencia existe entre un text index y MongoDB Search?
¿Por qué regex case-insensitive no equivale a búsqueda lingüística?