Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Analizador de palabras clave.

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

Para coincidencia exacta, en lugar de utilizar el keyword analizador, puedes indexar el campo como el MongoDB Search Token tipo y utilice el operador equals para buscar en el campo.

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.

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.


  1. Se debe hacer clic en Refine Your Index para configurar el índice.

  2. En la sección Index Configurations, cambie Dynamic Mapping a off.

  3. En la sección Field Mappings, haz clic en Add Field para abrir la ventana Add Field Mapping.

  4. Haga clic en Customized Configuration.

  5. Selecciona title del menú desplegable Field Name.

  6. Haz clic en el menú desplegable Data Type y selecciona String si aún no está seleccionado.

  7. Expande String Properties y realiza los siguientes cambios:

    Analizador de índices

    Selecciona lucene.keyword del menú desplegable.

    Analizador de búsqueda

    Selecciona lucene.keyword del menú desplegable.

    Opciones del índice

    Usa el offsets por defecto.

    Store

    Usa el true por defecto.

    Ignorar lo anterior

    Mantén la configuración por defecto.

    Normas

    Usa el include por defecto.

  8. Haga clic en Add.

  9. Haga clic en Save Changes.

  10. Haga clic en Create Search Index.

  1. Reemplazar la definición predeterminada del índice con la siguiente definición del índice.

    {
    "mappings": {
    "fields": {
    "title": {
    "type": "string",
    "analyzer": "lucene.keyword"
    }
    }
    }
    }
  2. Haga clic en Next.

  3. Haga clic en Create Search Index.

1db.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.

  1. Haz clic en el botón Query para tu índice.

  2. Haz clic en Edit Query para editar la consulta.

  3. Haz clic en la barra de query y selecciona la base de datos y la colección.

  4. 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

Class Action

X

Tokens de analizador estándar

class, action

Tokens del Analizador Simple

class, action

Volver

Whitespace