La keyword El analizador acepta una string o un arreglo de strings como parámetro y las indexa como un único término (token). Solo se devuelven coincidencias exactas en el campo. Deja todo el texto en su tipo de letra original.
Tip
Si selecciona Refine Your Index, la interfaz de usuario de Atlas muestra una sección titulada View text analysis of your selected index configuration dentro de la sección Index Configurations. Si amplías esta sección, la Interfaz de Usuario de Atlas muestra los tokens de índice y búsqueda que el analizador keyword genera para cada string de muestra. Puedes ver los tokens que el analizador keyword crea para un documento de muestra incorporado y un string del query cuando creas o editas un índice en la Interfaz de Usuario de Atlas Visual Editor.
Importante
MongoDB Search no indexará los campos de string en los que los tokens del analizador superen los 32766 bytes de tamaño. Si se utiliza el analizador de keywords, los campos de string que superen los 32766 bytes no se indexarán.
Ejemplo
El siguiente ejemplo de definición de índice especifica un índice en el campo title de la colección sample_mflix.movies utilizando el analizador keyword. Para seguir este ejemplo, cargue los datos de muestra en su clúster y utilice mongosh o navegue a la página Create a Search
Index en la Interfaz de Usuario de Atlas siguiendo los pasos del tutorial Crear un índice de MongoDB Search.
Luego, utilizando la movies colección como fuente de datos, siga el procedimiento de ejemplo para crear un índice desde mongosh o la interfaz de usuario de Atlas Visual Editor o.JSON editor
➤ Utilice el menú desplegable Seleccione su lenguaje para establecer el idioma del ejemplo en esta página.
Se debe hacer clic en Refine Your Index para configurar el índice.
En la sección Index Configurations, cambie Dynamic Mapping a off.
En la sección Field Mappings, haz clic en Add Field para abrir la ventana Add Field Mapping.
Haga clic en Customized Configuration.
Selecciona
titledel menú desplegable Field Name.Haz clic en el menú desplegable Data Type y selecciona String si aún no está seleccionado.
Expande String Properties y realiza los siguientes cambios:
Analizador de índices
Selecciona
lucene.keyworddel menú desplegable.Analizador de búsqueda
Selecciona
lucene.keyworddel menú desplegable.Opciones del índice
Usa el
offsetspor defecto.Store
Usa el
truepor defecto.Ignorar lo anterior
Mantén la configuración por defecto.
Normas
Usa el
includepor defecto.Haga clic en Add.
Haga clic en Save Changes.
Haga clic en Create Search Index.
Reemplazar la definición predeterminada del índice con la siguiente definición del índice.
{ "mappings": { "fields": { "title": { "type": "string", "analyzer": "lucene.keyword" } } } } Haga clic en Next.
Haga clic en Create Search Index.
1 db.movies.createSearchIndex( 2 "default", 3 { 4 "mappings": { 5 "fields": { 6 "title": { 7 "type": "string", 8 "analyzer": "lucene.keyword" 9 } 10 } 11 } 12 } 13 )
La siguiente consulta busca la frase Class Action en el campo title.
Haz clic en el botón Query para tu índice.
Haz clic en Edit Query para editar la consulta.
Haz clic en la barra de query y selecciona la base de datos y la colección.
Reemplaza la consulta por defecto por la siguiente y haz clic en Find:
[ { "$search": { "text": { "query": "Class Action", "path": "title" } } } ] SCORE: 4.346973419189453 _id: "573a1399f29313caabcec6b7" awards: Object cast: Array (4) countries: Array (1) directors: Array (1) fullplot: "Jeb Ward is an attorney who specializes in whistle blower, David vs. G…" genres: Array (2) imdb: Object languages: Array (1) lastupdated: "2015-09-06 00:42:51.167000000" metacritic: 58 num_mflix_comments: 2 plot: "Jeb Ward is an attorney who specializes in whistle blower, David vs. G…" poster: "https://m.media-amazon.com/images/M/MV5BNWY5Mjk4ZmItMTAzYS00NWE3LWEzYz…" rated: "R" released: 1991-03-15T00:00:00.000+00:00 runtime: 110 title: "Class Action" tomatoes: Object type: "movie" writers: Array (3) year: 1991
db.movies.aggregate([ { "$search": { "text": { "query": "Class Action", "path": "title" } } }, { "$project": { "_id": 0, "title": 1 } } ])
[ { title: 'Class Action' } ]
MongoDB Search devolvió el documento porque coincidió el término de consulta Class
Action con el único token Class Action que crea para el texto en el campo utilizando el analizador lucene.keyword. Por otro lado, MongoDB Search no devuelve ningún resultado para la siguiente query:
db.cases.aggregate([ { "$search": { "text": { "query": "action", "path": "title" } } } ])
Muchos documentos en la colección contienen la string action, pero el analizador keyword sólo coincide con documentos en los que el término de búsqueda coincide exactamente con todo el contenido del campo. Para la query anterior, el analizador keyword no devolvería ningún resultado. Sin embargo, si indexaste el campo usando el Analizador Estándar o el Analizador Simple, MongoDB Search devolvería múltiples documentos en los resultados, incluyendo el documento con el valor del campo título Class
Action, ya que crearías tokens similares a los siguientes, que luego coincidirían con el término de la query:
Analizador | Tokens de salida | Coincidencias action | Coincidencias Class Action |
|---|---|---|---|
Tokens del Analizador de Palabras clave |
| X | √ |
Tokens de analizador estándar |
| √ | √ |
Tokens del Analizador Simple |
| √ | √ |