Docs Menu
Docs Home
/ /

Analizador de palabras clave

El keyword El analizador acepta una cadena o un array de cadenas como parámetro y las indexa como un único término (token). Solo se devuelven las coincidencias exactas en el campo. Mantiene todo el texto en su forma original.

Tip

Para una coincidencia exacta, en lugar de utilizar el analizador keyword, puede indexar el campo como la búsqueda de MongoDB escriba token y use el operador igual para buscar en el campo.

Si seleccionas Refine Your IndexLa 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. Al expandir esta sección, la interfaz de usuario de Atlas muestra los tokens de índice y búsqueda que el analizador keyword genera para cada cadena de muestra. Puede ver los tokens que el analizador keyword crea para un documento de muestra integrado y una cadena de consulta al crear o editar un índice en la interfaz de usuario de Atlas Visual Editor.

Importante

MongoDB Search no indexará campos de cadena cuyos tokens del analizador superen 32766 bytes. Si se usa la palabra clave "analizer", los campos de cadena que superen 32766 bytes no se indexarán.

La siguiente definición de índice de ejemplo especifica un índice title en el campo de la colección sample_mflix.movies mediante el keyword analizador. Para seguir este ejemplo, cargue los datos de muestra en su clúster y utilice mongosh o navegue a la Create a Search Index página en la interfaz de usuario de Atlas siguiendo los pasos del tutorial Crear un índice de búsqueda de MongoDB.

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, alterna 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. Haga clic en el menú desplegable Data Type y seleccione 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

    Mantener la configuración predeterminada.

    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. Haga clic en el botón Query para su índice.

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

  3. Haga clic en la barra de consulta y seleccione la base de datos y la colección.

  4. Reemplace la consulta predeterminada por la siguiente y haga 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 token único Class Action que crea para el texto en el campo mediante el analizador lucene.keyword. Por el contrario, MongoDB Search no devuelve ningún resultado para la siguiente consulta:

db.cases.aggregate([
{
"$search": {
"text": {
"query": "action",
"path": "title"
}
}
}
])

Muchos documentos de la colección contienen la action cadena, pero el keyword analizador solo encuentra documentos cuyo término de búsqueda coincida exactamente con todo el contenido del campo. Para la consulta anterior, el keyword analizador no devolvió ningún resultado. Sin embargo, si indexó el campo con el Analizador Estándar o el Analizador Simple, MongoDB Search devolvería varios documentos en los resultados, incluido el documento con el valor de campo de Class Action título, ya que crearía tokens similares a los siguientes, que luego compararía con el término de consulta:

Analizador
Tokens de salida
Cerillas action
Cerillas Class Action

Tokens del analizador de palabras clave

Class Action

X

Tokens de analizador estándar

class, action

Tokens de analizador simple

class, action

Volver

Whitespace