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.
"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.
Tipos de filtro de caracteres
MongoDB Search admite los siguientes tipos de filtro de caracteres:
htmlStrip
El filtro de caracteres htmlStrip elimina los constructos HTML.
Atributos
El filtro de caracteres htmlStrip tiene los siguientes atributos:
Nombre | Tipo | ¿Requerido? | Descripción |
|---|---|---|---|
| string | Sí | Etiqueta legible por humanos que identifica este tipo de filtro de caracteres. El valor debe ser |
| Arreglo de cadenas | Sí | Lista que contiene las etiquetas HTML que se excluirán del filtro. |
Ejemplo
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
autilizando el filtro de caractereshtmlStrip.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 |
|---|---|
|
|
|
|
|
|
icuNormalize
El icuNormalize filtro de caracteres normaliza el texto con el normalizador de ICU. Está basado en el ICUNormalizer2CharFilterde Lucene.
Atributos
El filtro de carácter icuNormalize tiene el siguiente atributo:
Nombre | Tipo | ¿Requerido? | Descripción |
|---|---|---|---|
| string | Sí | Etiqueta legible por humanos que identifica este tipo de filtro de caracteres. El valor debe ser |
Ejemplo
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
messagecon el filtro de caracteresicuNormalize.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 |
|---|---|
|
|
mapeo
El filtro de caracteres mapping aplica mapeos de normalización especificados por el usuario a los caracteres. Se basa en el MappingCharFilter de Lucene.
Atributos
El filtro de caracteres mapping tiene los siguientes atributos:
Nombre | Tipo | ¿Requerido? | Descripción |
|---|---|---|---|
| string | Sí | Etiqueta legible por humanos que identifica este tipo de filtro de caracteres. El valor debe ser |
| Objeto | Sí | 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 |
Ejemplo
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 caracteresmapping.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 |
|---|---|
|
|
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 |
|---|---|
|
|
|
|
|
|
persa
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
Atributos
El filtro de carácter persian tiene el siguiente atributo:
Nombre | Tipo | ¿Requerido? | Descripción |
|---|---|---|---|
| string | Sí | Etiqueta legible por humanos que identifica este tipo de filtro de caracteres. El valor debe ser |
Ejemplo
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
persianpara 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 |
|---|---|
|
|
Obtén más información
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:
shingle Filtro de tokens
tokenizador regexCaptureGroup