El tokenizador de un analizador personalizado determina cómo MongoDB Search divide el texto en fragmentos discretos para su indexación. Las tokenizadoras requieren un campo de tipo, y algunas también requieren opciones adicionales.
"tokenizer": { "type": "<tokenizer-type>", "<additional-option>": "<value>" }
Las definiciones de índice de muestra y las queries de esta página utilizan la colección de muestra denominada minutes. Para probar estos ejemplos, carga la colección minutes en tu clúster y navega 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. A continuación, selecciona la colección minutes como tu fuente de datos y sigue el procedimiento de ejemplo para crear un índice desde la Interfaz de Usuario de Atlas o utilizando mongosh.
edgeGram
El tokenizador edgeGram tokeniza la entrada desde el lado izquierdo, o "borde", de una entrada de texto en n-gramas de tamaños determinados. No puedes usar un analizador personalizado con el tokenizador edgeGram en el campo analyzer para sinónimos o autocompletar definiciones de mapeo de campos.
Atributos
El tokenizador edgeGram tiene los siguientes atributos:
Nota
El tokenizador edgeGram genera múltiples tokens de salida por palabra y entre palabras en el texto de entrada, produciendo grafos de tokens.
Debido a que las definiciones de mapeo de tipos de campo de autocompletado y los analizadores con mapeo de sinónimos solo funcionan cuando se utilizan con tokenizadores que no producen grafos, no puedes usar un analizador personalizado con el tokenizador edgeGram en el campo analyzer para las definiciones de mapeo de tipos de campo de autocompletado o analizadores con mapeos de sinónimos.
Nombre | Tipo | ¿Requerido? | Descripción |
|---|---|---|---|
| string | Sí | Etiqueta legible por humanos que identifica este tipo de tokenizador. El valor debe ser |
| entero | Sí | Número de caracteres a incluir en el token más corto creado. |
| entero | Sí | Número de caracteres a incluir en el token más largo creado. |
Ejemplo
La siguiente definición de índice indexa el campo message en la colección minutes usando un analizador personalizado llamado edgegramExample. Se utiliza el tokenizador edgeGram para crear tokens (términos de búsqueda) de entre 2 y 7 caracteres de longitud a partir del primer carácter en el lado izquierdo de las palabras en el campo message.
La siguiente query busca en el campo message de la colección minutes para el texto que empieza con tr.
MongoDB Search devuelve documentos con _id: 1 y _id: 3 en los resultados porque MongoDB Search creó un token con el valor tr usando el tokenizador edgeGram para los documentos, que coincide con el término de búsqueda. Si indexa el campo message usando el tokenizador standard, MongoDB Search no devolvería ningún resultado para el término de búsqueda tr.
La siguiente tabla muestra los tokens que el tokenizador edgeGram y, en comparación, el tokenizador standard crean para los documentos en los resultados:
tokenizador | Token Outputs |
|---|---|
|
|
|
|
keyword
El tokenizador keyword tokeniza toda la entrada como un solo token. MongoDB Search no indexa los campos de string que superan los 32766 caracteres cuando se emplea el tokenizador keyword.
Atributos
El tokenizador keyword tiene los siguientes atributos:
Nombre | Tipo | ¿Requerido? | Descripción |
|---|---|---|---|
| string | Sí | Etiqueta legible por humanos que identifica este tipo de tokenizador. El valor debe ser |
Ejemplo
La siguiente definición de índice indexa el campo message en la colección minutes utilizando un analizador personalizado llamado keywordExample. Utiliza el tokenizador keyword para crear un token (términos buscables) en todo el campo como un único término.
La siguiente query busca la frase try to sign-in en el campo message de la colección minutes.
MongoDB Search devuelve el documento con _id: 3 en los resultados porque MongoDB Search creó un token con el valor try to sign-in usando el tokenizador keyword para los documentos, lo que coincide con el término de búsqueda. Si indexes el campo message utilizando el tokenizador standard, MongoDB Search devuelve documentos con _id: 1, _id: 2 y _id: 3 para el término de búsqueda try to sign-in porque cada documento contiene algunos de los tokens que crea el tokenizador standard.
La siguiente tabla muestra los tokens que el tokenizador keyword y, por comparación, el tokenizador standard crean para el documento con _id: 3:
tokenizador | Token Outputs |
|---|---|
|
|
|
|
nGram
El tokenizador nGram tokeniza en fragmentos de texto, o "n-gramas", de tamaños determinados. No puedes usar un analizador personalizado con el tokenizador nGram en el campo analyzer para definiciones de mapeo de campos de sinónimos o autocompletado.
Atributos
El tokenizador nGram tiene los siguientes atributos:
Nombre | Tipo | ¿Requerido? | Descripción |
|---|---|---|---|
| string | Sí | Etiqueta legible por humanos que identifica este tipo de tokenizador. El valor debe ser |
| entero | Sí | Número de caracteres a incluir en el token más corto creado. |
| entero | Sí | Número de caracteres a incluir en el token más largo creado. |
Ejemplo
La siguiente definición de índice indexa el campo title en la colección minutes utilizando un analizador personalizado llamado ngramExample. Utiliza el tokenizador nGram para crear tokens (términos buscables) de entre 4 y 6 caracteres de longitud en el campo title.
La siguiente query busca el campo title en la colección minutes para el término week.
MongoDB Search devuelve el documento con _id: 1 en los resultados porque MongoDB Search creó un token con el valor week utilizando el tokenizador nGram para los documentos, que coincide con el término de búsqueda. Si se indexa el campo title usando el tokenizador standard o edgeGram, MongoDB Search no devolverá ningún resultado para el término de búsqueda week.
La siguiente tabla muestra los tokens que el tokenizador nGram, y en comparación, los tokenizadores standard y edgeGram crean para el documento con _id: 1:
tokenizador | Token Outputs |
|---|---|
|
|
|
|
|
|
regexCaptureGroup
El tokenizador regexCaptureGroup coincide con un patrón de expresión regular de Java para extraer tokens.
Tip
Para obtener más información sobre la sintaxis de expresiones regulares de Java, consulte la clase patrón en la documentación de Java.
Atributos
El tokenizador regexCaptureGroup tiene los siguientes atributos:
Nombre | Tipo | ¿Requerido? | Descripción |
|---|---|---|---|
| string | Sí | Etiqueta legible por humanos que identifica este tipo de tokenizador. El valor debe ser |
| string | Sí | Expresión regular para coincidir. |
| entero | Sí | Índice del grupo de caracteres dentro de la expresión coincidente que se van a extraer en tokens. Utilice |
Ejemplo
La siguiente definición de índice indexa el campo page_updated_by.phone en la colección minutes utilizando un analizador personalizado llamado phoneNumberExtractor. Utiliza lo siguiente:
mappingsfiltro de caracteres para remover los paréntesis alrededor de los primeros tres dígitos y reemplazar todos los espacios y puntos por guionesregexCaptureGrouptokenizador para crear una sola ficha a partir del primer número de teléfono con formato estadounidense presente en el texto de entrada
La siguiente query busca el campo page_updated_by.phone en la colección minutes para el número de teléfono 123-456-9870.
MongoDB Search devuelve el documento con _id: 3 en los resultados porque MongoDB Search creó un token con el valor 123-456-7890 utilizando el tokenizador regexCaptureGroup para los documentos, que coincide con el término de búsqueda. Si indexas el campo page_updated_by.phone usando el tokenizador standard, MongoDB Search devuelve todos los documentos para el término de búsqueda 123-456-7890.
La siguiente tabla muestra los tokens que el tokenizador regexCaptureGroup y, por comparación, el tokenizador standard crean para el documento con _id: 3:
tokenizador | Token Outputs |
|---|---|
|
|
|
|
regexSplit
El tokenizador regexSplit divide los tokens usando un delimitador basado en expresiones regulares de Java.
Tip
Para obtener más información sobre la sintaxis de expresiones regulares de Java, consulte la clase patrón en la documentación de Java.
Atributos
El tokenizador regexSplit tiene los siguientes atributos:
Nombre | Tipo | ¿Requerido? | Descripción |
|---|---|---|---|
| string | Sí | Etiqueta legible por humanos que identifica este tipo de tokenizador. El valor debe ser |
| string | Sí | Expresión regular para coincidir. |
Ejemplo
La siguiente definición de índice indexa el campo page_updated_by.phone en la colección de minutes utilizando un analizador personalizado llamado dashDotSpaceSplitter. Utiliza el tokenizador regexSplit para crear tokens (términos que se pueden buscar) a partir de uno o varios guiones, puntos y espacios en el campo page_updated_by.phone.
La siguiente query busca en el campo page_updated_by.phone de la colección minutes los dígitos 9870.
MongoDB Search devuelve el documento con _id: 3 en los resultados porque MongoDB Search creó un token con el valor 9870 utilizando el tokenizador regexSplit para los documentos, que coincide con el término de búsqueda. Si indexas el campo page_updated_by.phone utilizando el tokenizador standard, MongoDB Search no devolverá ningún resultado para el término de búsqueda 9870.
La siguiente tabla muestra los tokens que el tokenizador regexCaptureGroup y, por comparación, el tokenizador standard crean para el documento con _id: 3:
tokenizador | Token Outputs |
|---|---|
|
|
|
|
Estándar
El tokenizador standard tokeniza en función de las reglas de salto de palabra del algoritmo de Segmentación de Texto Unicode.
Atributos
El tokenizador standard tiene los siguientes atributos:
Nombre | Tipo | ¿Requerido? | Descripción |
|---|---|---|---|
| string | Sí | Etiqueta legible por humanos que identifica este tipo de tokenizador. El valor debe ser |
| entero | no | Longitud máxima para un solo token. Los tokens mayores a esta longitud se dividen en Por defecto: |
Ejemplo
La siguiente definición de índice indexa el campo message en la colección minutes utilizando un analizador personalizado llamado standardExample. Utiliza el standard tokenizador y el filtro de token stopword.
La siguiente query busca el campo message en la colección minutes para el término signature.
MongoDB Search devuelve el documento con _id: 4 porque MongoDB Search creó un token con el valor signature utilizando el tokenizador standard para los documentos, que coincide con el término de búsqueda. Si indexas el campo message utilizando el tokenizador keyword, MongoDB Search no devolverá ningún resultado para el término de búsqueda signature.
La siguiente tabla muestra los tokens que el tokenizador standard y, en comparación, el analizador keyword, crean para el documento con _id: 4:
tokenizador | Token Outputs |
|---|---|
|
|
|
|
uaxUrlEmail
El tokenizador uaxUrlEmail tokeniza URLs y direcciones de correo electrónico. Aunque el tokenizador uaxUrlEmail tokeniza basándose en las reglas de separación de palabras del algoritmo de segmentación de texto Unicode, recomendamos usar el tokenizador uaxUrlEmail solo cuando el valor del campo índice incluya URLs y direcciones de correo electrónico. Para los campos que no incluyen URLni direcciones de correo electrónico, utiliza el tokenizador estándar para crear tokens basados en reglas de partición de palabras.
Atributos
El tokenizador uaxUrlEmail tiene los siguientes atributos:
Nombre | Tipo | ¿Requerido? | Descripción |
|---|---|---|---|
| string | Sí | Etiqueta legible por humanos que identifica este tipo de tokenizador. El valor debe ser |
| Int | no | Número máximo de caracteres en un token. Por defecto: |
Ejemplo
La siguiente definición de índice indexa el campo page_updated_by.email en la colección minutes utilizando un analizador personalizado llamado basicEmailAddressAnalyzer. Utiliza el tokenizador uaxUrlEmail para crear tokens (términos buscables) a partir de direcciones URLy direcciones de correo electrónico en el campo page_updated_by.email.
La siguiente query busca en el campo page_updated_by.email de la colección minutes el correo electrónico lewinsky@example.com.
MongoDB Search devuelve el documento con _id: 3 en los resultados porque MongoDB Search creó un token con el valor lewinsky@example.com utilizando el tokenizador uaxUrlEmail para los documentos, que coincide con el término de búsqueda. Si indexas el campo page_updated_by.email usando el tokenizador standard, MongoDB Search devuelve todos los documentos para el término de búsqueda lewinsky@example.com.
La siguiente tabla muestra los tokens que el tokenizador uaxUrlEmail y, por comparación, el tokenizador standard crean para el documento con _id: 3:
tokenizador | Token Outputs |
|---|---|
|
|
|
|
La siguiente definición de índice indexa el campo page_updated_by.email en la colección minutes utilizando un analizador personalizado llamado emailAddressAnalyzer. Utiliza lo siguiente:
El autocompletar de tipo con una
edgeGramestrategia de tokenizaciónEl tokenizador
uaxUrlEmailpara crear tokens (términos que se pueden buscar) a partir de URLs y direcciones de correo electrónico
La siguiente query busca el campo page_updated_by.email en la colección minutes para el término exam.
MongoDB Search devuelve el documento con _id: 3 en los resultados porque MongoDB Search creó un token con el valor lewinsky@example.com utilizando el tokenizador uaxUrlEmail para los documentos, que coincide con el término de búsqueda. Si indexas el campo page_updated_by.email usando el tokenizador standard, MongoDB Search devuelve todos los documentos para el término de búsqueda lewinsky@example.com.
La siguiente tabla muestra los tokens que el tokenizador uaxUrlEmail y, por comparación, el tokenizador standard crean para el documento con _id: 3:
tokenizador | Tipo de campo de búsqueda de MongoDB | Token Outputs |
|---|---|---|
|
|
|
|
|
|
whitespace
El tokenizador whitespace tokeniza en función de la aparición de espacios en blanco entre palabras.
Atributos
El tokenizador whitespace tiene los siguientes atributos:
Nombre | Tipo | ¿Requerido? | Descripción |
|---|---|---|---|
| string | Sí | Etiqueta legible por humanos que identifica este tipo de tokenizador. El valor debe ser |
| entero | no | Longitud máxima para un solo token. Los tokens mayores a esta longitud se dividen en Por defecto: |
Ejemplo
La siguiente definición de índice indexa el campo message en la colección minutes utilizando un analizador personalizado llamado whitespaceExample. Utiliza el tokenizador whitespace para crear tokens (términos buscables) a partir de cualquier espacio en blanco en el campo message.
La siguiente query busca el campo message en la colección minutes para el término SIGN-IN.
MongoDB Search devuelve el documento con _id: 3 en los resultados porque MongoDB Search creó un token con el valor sign-in utilizando el tokenizador whitespace para los documentos, que coincide con el término de búsqueda. Si indexas el campo message usando el tokenizador standard, MongoDB Search devuelve documentos con _id: 1, _id: 2 y _id: 3 para el término de búsqueda sign-in.
La siguiente tabla muestra los tokens que el tokenizador whitespace y, por comparación, el tokenizador standard crean para el documento con _id: 3:
tokenizador | Token Outputs |
|---|---|
|
|
|
|