Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Filtros de Caracteres

Los filtros de caracteres examinan el texto carácter por carácter y realizan operaciones de filtrado. Los filtros de caracteres requieren un campo de tipo, y algunos también aceptan opciones adicionales.

Sintaxis
"charFilters": [
{
"type": "<filter-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.


➤ Utilice el menú desplegable Seleccionar su interfaz para establecer el método para ejecutar los ejemplos en esta página.


MongoDB Search admite los siguientes tipos de filtro de caracteres:

El filtro de caracteres htmlStrip elimina los constructos HTML.

El filtro de caracteres htmlStrip tiene los siguientes atributos:

Nombre
Tipo
¿Requerido?
Descripción

type

string

Etiqueta legible por humanos que identifica este tipo de filtro de caracteres. El valor debe ser htmlStrip.

ignoredTags

Arreglo de cadenas

Lista que contiene las etiquetas HTML que se excluirán del filtro.

El siguiente ejemplo de definición de índice indexa el campo text.en_US en la colección de minutos usando un analizador personalizado llamado htmlStrippingAnalyzer. El analizador personalizado especifica lo siguiente:

  • Elimina todas las etiquetas HTML del texto excepto la etiqueta a utilizando el filtro de caracteres htmlStrip.

  • Generate tokens based on word break rules from the Unicode Text Segmentation algorithm using the standard tokenizer.

La siguiente consulta busca ocurrencias de la cadena head en el campo text.en_US de la colección minutes.

MongoDB Search no devuelve el documento con _id: 1 porque la cadena head es parte de la etiqueta HTML <head>. El documento con _id: 3 contiene etiquetas HTML, pero la cadena head está en otro lugar, por lo que el documento es una coincidencia. La siguiente tabla muestra los tokens que MongoDB Search genera para los valores del campo text.en_US en los documentos _id: 1, _id: 2 y _id: 3 en la colección minutos utilizando el htmlStrippingAnalyzer.

ID de documento
Tokens de salida

_id: 1

This, page, deals, with, department, meetings

_id: 2

The, head, of, the, sales, department, spoke, first

_id: 3

We'll, head, out, to, the, conference, room, by, noon

El icuNormalize filtro de caracteres normaliza el texto con el normalizador de ICU. Está basado en el ICUNormalizer2CharFilterde Lucene.

El filtro de carácter icuNormalize tiene el siguiente atributo:

Nombre
Tipo
¿Requerido?
Descripción

type

string

Etiqueta legible por humanos que identifica este tipo de filtro de caracteres. El valor debe ser icuNormalize.

El siguiente ejemplo de definición de índice indexa el campo message en la colección de minutos usando un analizador personalizado llamado normalizingAnalyzer. El analizador personalizado especifica lo siguiente:

  • Normalizar el texto del valor del campo message con el filtro de caracteres icuNormalize.

  • Tokeniza las palabras en el campo basándose en la aparición de espacios en blanco entre palabras usando el tokenizador de espacios en blanco.

La siguiente query busca ocurrencias de la string no (para número) en el campo message de la colección minutes.

MongoDB Search hizo coincidir el documento con _id: 4 con el término de la query no porque normalizaba el símbolo de número en el campo utilizando el filtro de caracteres icuNormalize y creaba el token no para esa abreviatura tipográfica de la palabra "número". MongoDB Search genera los siguientes tokens para el valor del campo message del documento _id: 4 utilizando normalizingAnalyzer:

ID de documento
Tokens de salida

_id: 4

write, down, your, signature, or, phone, no

El filtro de caracteres mapping aplica mapeos de normalización especificados por el usuario a los caracteres. Se basa en el MappingCharFilter de Lucene.

El filtro de caracteres mapping tiene los siguientes atributos:

Nombre
Tipo
¿Requerido?
Descripción

type

string

Etiqueta legible por humanos que identifica este tipo de filtro de caracteres.

El valor debe ser mapping.

mappings

Objeto

Objeto que contiene una lista separada por comas de mapeos. Un mapeo indica que se debe sustituir un carácter o grupo de caracteres por otro, en el formato <original> : <replacement>.

El siguiente ejemplo de definición de índice indexa el campo page_updated_by.phone en la colección de minutos usando un analizador personalizado llamado mappingAnalyzer. El analizador personalizado especifica lo siguiente:

  • Elimina las instancias de guion (-), punto (.), paréntesis abierto ((), paréntesis cerrado ( )) y caracteres de espacio en el campo de teléfono utilizando el filtro de caracteres mapping.

  • Tokeniza toda la entrada como un solo token utilizando el tokenizador de palabras clave.

La siguiente consulta busca en el campo page_updated_by.phone la string 1234567890.

Los resultados de búsqueda de MongoDB contienen un documento donde los números en la cadena phone coinciden con la string del query. MongoDB Search emparejó el documento con el string del query aunque el query no incluya los paréntesis alrededor del código de área telefónico y el guion entre los números porque MongoDB Search eliminó estos caracteres usando el filtro de caracteres mapping y creó un solo token para el valor del campo. Específicamente, MongoDB Search generó el siguiente token para el campo phone en el documento con _id: 1:

ID de documento
Tokens de salida

_id: 1

1234567890

MongoDB Search también coincidiría con el documento con _id: 1 para búsquedas de (123)-456-7890, 123-456-7890, 123.456.7890, etc., porque para los campos Cómo indexar campos de String, MongoDB Search también analiza los términos de la consulta de búsqueda mediante el analizador de índices (o si se especifica, usando el searchAnalyzer). La siguiente tabla muestra los tokens que MongoDB Search crea al eliminar las instancias del guion (-), punto (.), paréntesis abierto ((), paréntesis cerrado ( )) y los caracteres de espacio en el término de query:

query término
Tokens de salida

(123)-456-7890

1234567890

123-456-7890

1234567890

123.456.7890

1234567890

El filtro de caracteres persian reemplaza las instancias de no-unidor de ancho cero con el carácter de espacio. Este filtro de caracteres se basa en el PersianCharFilter.de Lucene

El filtro de carácter persian tiene el siguiente atributo:

Nombre
Tipo
¿Requerido?
Descripción

type

string

Etiqueta legible por humanos que identifica este tipo de filtro de caracteres. El valor debe ser persian.

El siguiente ejemplo de definición de índice indexa el campo text.fa_IR en la colección de minutos usando un analizador personalizado llamado persianCharacterIndex. El analizador personalizado especifica lo siguiente:

  • Aplica el filtro de caracteres persian para sustituir los caracteres no imprimibles en el valor del campo por el carácter de espacio.

  • Utiliza el tokenizador de espacio en blanco para crear tokens basados en las apariciones de espacios en blanco entre palabras.

La siguiente consulta busca en el campo text.fa_IR el término صحبت.

MongoDB Search devuelve el _id: 2 documento que contiene el término de consulta. MongoDB Search coincide el término de query con el documento al reemplazar primero las instancias de separadores de no-conectores de ancho cero por el carácter de espacio y luego crear un token individual por cada palabra en el valor del campo basándose en la aparición de espacios en blanco entre las palabras. Específicamente, MongoDB Search genera los siguientes tokens para el documento con _id: 2:

ID de documento
Tokens de salida

_id: 2

ابتدا, رئیس, بخش, فروش, صحبت, کرد

Para ver definiciones de índice adicionales y consultas que utilizan el filtro de caracteres mapping, consulte los siguientes ejemplos de la página de referencia: