Docs Menu
Docs Home
/ /
Búsqueda de texto
/ / /

Índices de texto en implementaciones autogestionadas

Nota

Esta página describe las funciones de consulta de texto para implementaciones autogestionadas (no Atlas). Para los datos alojados en MongoDB Atlas, MongoDB ofrece una solución mejorada de consulta de texto completo, Atlas Search, y una solución de búsqueda vectorial, Atlas Vector Search.

Para ejecutar consultas de búsqueda de texto en implementaciones autogestionadas, debe tener un índice de texto en su colección. MongoDB proporciona índices de texto para admitir consultas de búsqueda de texto en contenido de cadena. Los índices de texto pueden incluir cualquier campo cuyo valor sea una cadena o un array de elementos de cadena. Una colección solo puede tener un índice de búsqueda de texto, pero este puede abarcar varios campos.

Puede utilizar índices de texto para implementaciones alojadas en MongoDB Atlas.

Para obtener más información sobre cómo administrar índices para implementaciones alojadas en MongoDB Atlas, consulte Crear, ver, eliminar y ocultar índices.

El índice de texto está disponible en tres versiones. De forma predeterminada, MongoDB usa la versión 3 con nuevos índices de texto.

Para anular el valor predeterminado y utilizar una versión anterior, utilice el textIndexVersion opción al crear el índice.

Importante

Una colección puede tener como máximo un text índice.

Atlas Search (disponible en MongoDB Atlas) admite múltiples índices de búsqueda de texto completo en una sola colección. Para obtener más información, consulte la documentación de Atlas Search.

Para crear un índice text, utilice el db.collection.createIndex() Método. Para indexar un campo que contiene una cadena o una matriz de elementos de cadena, incluya el campo y especifique el literal de cadena "text" en el documento de índice, como en el siguiente ejemplo:

db.reviews.createIndex( { comments: "text" } )

Puedes indexar varios campos para el índice text. El siguiente ejemplo crea un índice text en los campos subject y comments:

db.reviews.createIndex(
{
subject: "text",
comments: "text"
}
)

Un índice compuesto puede incluir text claves de índice en combinación con claves de índice ascendentes/descendentes. Para obtener más información, consulta Índice compuesto.

Para eliminar un text índice, utilice el nombre del índice. Consulte "Usar el nombre del índice para eliminar un índice " para obtener más text información.

Para un text índice, el peso de un campo indexado denota la importancia del campo en relación con los otros campos indexados en términos de la puntuación de búsqueda de texto.

Para cada campo indexado del documento, MongoDB multiplica el número de coincidencias por el peso y suma los resultados. Con esta suma, MongoDB calcula la puntuación del documento. Consulte el $meta operador para obtener más información sobre la obtención y ordenación de puntuaciones de texto.

El peso predeterminado es 1 para los campos indexados. Para ajustar el peso de los campos indexados, incluya la weights opción en el db.collection.createIndex() método.

Para obtener más información sobre el uso de pesos para controlar los resultados de una búsqueda de texto, consulte Asignar pesos a los resultados de búsqueda de texto en implementaciones autoadministradas.

Nota

Los índices de texto comodín son distintos de los índices comodín. Estos últimos no admiten consultas con el $text operador.

Si bien los índices de texto comodín y los índices comodín comparten el $** patrón de campo comodín, son tipos de índice distintos. Solo los índices de texto comodín admiten el $text operador.

Al crear un índice text en varios campos, también puede usar el especificador comodín ($**). Con un índice de texto comodín, MongoDB indexa todos los campos que contienen datos de cadena para cada documento de la colección. El siguiente ejemplo crea un índice de texto usando el especificador comodín:

db.collection.createIndex( { "$**": "text" } )

Este índice permite la búsqueda de texto en todos los campos con contenido de cadena. Este índice puede ser útil con datos muy desestructurados si no está claro qué campos incluir en el índice de texto o para consultas ad hoc.

Los índices de texto comodín son text índices en varios campos. Por lo tanto, puede asignar ponderaciones a campos específicos durante la creación del índice para controlar la clasificación de los resultados. Para obtener más información sobre el uso de ponderaciones para controlar los resultados de una búsqueda de texto, consulte Asignar ponderaciones a los resultados de búsqueda de texto en implementaciones autogestionadas.

Los índices de texto comodín, como todos los índices de texto, pueden formar parte de índices compuestos. Por ejemplo, el siguiente ejemplo crea un índice compuesto en el campo a, así como en el especificador comodín:

db.collection.createIndex( { a: 1, "$**": "text" } )

Como ocurre con todos los índices de texto compuestos, dado que a precede a la clave del índice de texto, para realizar una búsqueda con este índice, el predicado de consulta debe incluir una condición de coincidencia $text de a igualdad. Para obtener información sobre los índices de texto compuestos, consulte Índices de texto compuestos.

El índice de la versión 3 text admite los casos C comunes, simples S y, para los idiomas turcos, los T casos especiales, tal como se especifica en la base de datos de caracteres Unicode.8.0 .

La corrección de mayúsculas y minúsculas amplía la insensibilidad a mayúsculas y minúsculas del índice text para incluir caracteres con diacríticos, como é y É, y caracteres de alfabetos no latinos, como "И" y "и" en el alfabeto cirílico.

La versión 3 del text índice tampoco distingue entre diacríticos. Por lo tanto, el índice tampoco distingue é Éentre,, e Ey.

Las versiones anteriores del índice text solo distinguen entre mayúsculas y minúsculas para [A-z]; es decir, solo distinguen entre mayúsculas y minúsculas para caracteres latinos no diacríticos. Para todos los demás caracteres, las versiones anteriores del índice de texto los tratan como distintos.

Con la 3 versión, text el índice no distingue entre caracteres diacríticos y sus equivalentes sin marca,é êcomo,e y. Más específicamente, el text índice elimina los caracteres categorizados como diacríticos en Unicode.8 0 Lista de propiedades de la base de datos de caracteres.

La versión 3 del text índice tampoco distingue entre mayúsculas y minúsculas en caracteres con diacríticos. Por lo tanto, el índice tampoco distingue é Éentre,, e Ey.

Las versiones anteriores del índice text tratan los caracteres con diacríticos como distintos.

Para la tokenización, la versión 3 text del índice utiliza los delimitadores categorizados bajo Dash, Hyphen, Pattern_Syntax, Quotation_Mark, Terminal_Punctuation, y White_Space en la Lista de atributos de la base de datos de caracteres Unicode 8.0 .

Por ejemplo, si se proporciona una cadena "Il a dit qu'il «était le meilleur joueur du monde»", el índice text trata a «, » y los espacios como delimitadores.

Las versiones anteriores del índice tratan « como parte del término "«était" y » como parte del término "monde»".

text El índice tokeniza y lematiza los términos en los campos indexados de las entradas de índice. text almacena una entrada de índice por cada término lematizado único en cada campo indexado de cada documento de la colección. El índice utiliza una lematización de sufijos simple,específica del idioma.

MongoDB admite la búsqueda de texto en varios idiomas. Lostext índices eliminan las palabras vacías específicas del idioma (p. ej., enthe inglés,,,,, an aandetc.) y utilizan una lematización de sufijos específica del idioma. Para obtener una lista de los idiomas compatibles, consulte Idiomas de búsqueda de texto en implementaciones autogestionadas.

Si especificas un valor default_language de none, el índice de texto analiza cada palabra en el campo, incluidas las palabras irrelevantes, e ignora la lematización de sufijos.

Para especificar un idioma para el text índice, consulte Especificar el idioma predeterminado para un índice de texto en implementaciones autoadministradas.

text los índices siempre son dispersos e ignoran la opción dispersa. Si a un documento le falta un campo de índice text (o el campo es null o es un arreglo vacío), MongoDB no agrega una entrada para el documento en el índice text. Para las inserciones, MongoDB inserta el documento pero no lo agrega al índice text.

En un índice compuesto que incluye una clave de índice text junto con claves de otros tipos, solo el campo de índice text determina si el índice hace referencia a un documento. Las demás claves no determinan si el índice hace referencia a los documentos.

Una colección puede tener como máximo un text índice.

Atlas Search (disponible en MongoDB Atlas) admite múltiples índices de búsqueda de texto completo en una sola colección. Para obtener más información, consulte la documentación de Atlas Search.

Si un query incluye una expresión $text, no se puede usar hint() para especificar qué índice usar para el query.

Si la string $search de una operación $text incluye una string de varias palabras y términos individuales, $text solo coincide con los documentos que incluyan la string de varias palabras.

Las operaciones de ordenamiento no pueden obtener el orden de ordenamiento de text un índice, ni siquiera de un índice de texto compuesto; es decir, las operaciones de ordenamiento no pueden utilizar el ordenamiento del índice de texto.

Un índice compuesto puede incluir una text clave de índice en combinación con claves de índice ascendentes/descendentes. Sin embargo, estos índices compuestos tienen las siguientes restricciones:

  • Un text índice compuesto no puede incluir ningún otro tipo de índice especial, como campos de índice multiclave o geoespaciales.

  • Si el índice de texto compuesto incluye claves que preceden a la clave del índice de texto, para utilizar, el predicado $text de consulta debe incluir condiciones de coincidencia de igualdad en las claves anteriores.

  • Al crear un índice compuesto text, todas las claves de índice text deben enumerarse de forma adyacente en el documento de especificación del índice.

Consulta también Índice de texto y orden para conocer limitaciones adicionales.

Para ver un ejemplo de un índice de texto compuesto, consulte Limitar el número de entradas de índice de texto escaneadas en implementaciones autoadministradas.

Para descartar un text índice, pasa el nombre del índice al método db.collection.dropIndex(). Para obtener el nombre del índice, ejecuta el método db.collection.getIndexes().

Para obtener información sobre el esquema de nombres predeterminado para los text índices, así como sobre cómo anular el nombre predeterminado, consulte Especificar el nombre para text el índice.

text los índices solo permiten la comparación binaria simple y no admiten intercalación.

Para crear un índice text en una colección que tiene una intercalación no simple, debe especificar explícitamente {collation: {locale: "simple"} } al crear el índice.

text Los índices tienen los siguientes requisitos de almacenamiento y costos de rendimiento:

  • text los índices pueden ser grandes. Contienen una entrada de índice para cada palabra única post-índice en cada campo indexado para cada documento insertado.

  • Construir un índice text es muy similar a construir un índice grande de múltiples claves y llevará más tiempo que construir un índice ordenado simple (escalar) sobre los mismos datos.

  • Al crear un text índice grande en una colección existente, asegúrese de tener un límite suficientemente alto de descriptores de archivos abiertos. Consulte la configuración recomendada.

  • text Los índices afectarán el rendimiento de inserción porque MongoDB debe agregar una entrada de índice para cada palabra post-raíz única en cada campo indexado de cada nuevo documento fuente.

  • Además, los índices text no almacenan frases ni información sobre la proximidad de las palabras en los documentos. Por lo tanto, las consultas de frases se ejecutarán con mucha mayor eficacia cuando toda la colección quepa en la RAM.

El índice text admite operaciones de consulta$text. Para ver ejemplos de búsqueda de texto, consulte$text reference page. Para ver ejemplos de operaciones$texten canales de agregación, consulte $text en el canal de agregación de implementaciones autogestionadas.

Volver

Idiomas

En esta página