Incorporación de analizadores personalizados a campos de cadena en un índice de Azure AI Search

Un analizador personalizado es una combinación definida por el usuario de un tokenizador, uno o más filtros de token y uno o más filtros de caracteres. Un analizador personalizado se especifica en un índice de búsqueda y, a continuación, se hace referencia a él por su nombre en las definiciones de campo que requieren un análisis personalizado. Se invoca un analizador personalizado por campo. Los atributos del campo determinarán si se usa para la indexación, las consultas o ambas.

En un analizador personalizado, los filtros de caracteres preparan el texto de entrada antes de que lo procese el tokenizador (por ejemplo, la eliminación del marcado). A continuación, el tokenizador divide el texto en tokens. Por último, los filtros de token modifican los tokens emitidos por el tokenizador. Para ver conceptos y ejemplos, consulte Analizadores en Azure AI Search.

¿Por qué se debe usar un analizador personalizado?

Un analizador personalizado le proporciona control sobre el proceso de conversión de texto en tokens que se pueden indexar y buscar, permitiéndole elegir los tipos de análisis o filtros que se van a invocar y el orden en el que se producen.

Cree y asigne un analizador personalizado si ninguno de los analizadores predeterminados (Lucene estándar), integrados o de idioma son suficientes para sus necesidades. También puede crear un analizador personalizado si desea usar un analizador integrado con opciones personalizadas. Por ejemplo, si quisiera cambiar maxTokenLength en Estándar, crearía un analizador personalizado, con un nombre definido por el usuario, para establecer esa opción.

Los siguientes son algunos de los escenarios en los que los analizadores personalizados pueden resultar útiles:

  • Uso de filtros de caracteres para quitar el marcado HTML antes de que se acorten las entradas de texto o reemplazar ciertos caracteres o símbolos.

  • Búsqueda fonética. Agregue un filtro fonético para habilitar la búsqueda basada en cómo suena una palabra en lugar de en cómo se escribe.

  • Deshabilitar el análisis léxico. Use el analizador de palabras clave para crear campos de búsqueda que no se analizan.

  • Búsqueda rápida de prefijo o sufijo. Agregue el filtro de token de n-gramas perimetrales a prefijos de índice de palabras para habilitar la coincidencia de prefijo rápida. Combínelo con el filtro de token de tipo Reverse para habilitar la coincidencia de sufijo.

  • Tokenización personalizada. Por ejemplo, use el tokenizador Whitespace para dividir las oraciones en tokens usando el espacio en blanco como delimitador.

  • Plegado ASCII. Agregue el filtro de plegado ASCII estándar para normalizar los signos diacríticos como ö o ê en los términos de búsqueda.

Nota:

Los analizadores personalizados no se exponen en Azure Portal. La única manera de agregar un analizador personalizado es mediante un código que define un índice.

Creación de un analizador personalizado

Para crear un analizador personalizado, especifíquelo en la sección analyzers de un índice en tiempo de diseño y, a continuación, haga referencia a él en los campos Edm.String en los que puedan realizarse búsquedas mediante la propiedad analyzer o el par indexAnalyzer y searchAnalyzer.

Una definición de analizador incluye un nombre, un tipo, uno o varios filtros de caracteres, un máximo de un tokenizador y uno o varios filtros de token para el procesamiento posterior a la tokenización. Los filtros de caracteres se aplican antes de la tokenización. Los filtros de token y los filtros de caracteres se aplican de izquierda a derecha.

  • Los nombres de un analizador personalizado deben ser únicos y no pueden ser iguales que ninguno de los analizadores integrados, tokenizadores, filtros de token o caracteres. Solo puede contener letras, dígitos, espacios, guiones o guiones bajos, debe empezar y acabar con caracteres alfanuméricos y no puede superar los 128 caracteres.

  • El tipo debe ser #Microsoft.Azure.Search.CustomAnalyzer.

  • charFilters puede ser uno o varios filtros de Filtros de caracteres, procesados antes de la tokenización, en el orden proporcionado. Algunos filtros de caracteres tienen opciones que se pueden definir en una sección charFilters. Los filtros de caracteres son opcionales.

  • tokenizer es exactamente un tokenizador. Se requiere un valor. Si necesita más de un tokenizer, puede crear varios analizadores personalizados y asignarlos campo por campo en el esquema de índice.

  • tokenFilters puede ser uno o varios filtros de Filtros de token, procesados después de la tokenización, en el orden proporcionado. Para los filtros de token que tienen opciones, agregue una sección tokenFilter para especificar la configuración. Los filtros de token son opcionales.

Los analizadores no deben generar tokens de más de 300 caracteres; de lo contrario, se producirá un error de indexación. Para recortar tokens largos u omitirlos, utilice TruncateTokenFilter y LengthTokenFilter respectivamente. Consulte Filtros de token como referencia.

"analyzers":(optional)[
   {
      "name":"name of analyzer",
      "@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer",
      "charFilters":[
         "char_filter_name_1",
         "char_filter_name_2"
      ],
      "tokenizer":"tokenizer_name",
      "tokenFilters":[
         "token_filter_name_1",
         "token_filter_name_2"
      ]
   },
   {
      "name":"name of analyzer",
      "@odata.type":"#analyzer_type",
      "option1":value1,
      "option2":value2,
      ...
   }
],
"charFilters":(optional)[
   {
      "name":"char_filter_name",
      "@odata.type":"#char_filter_type",
      "option1":value1,
      "option2":value2,
      ...
   }
],
"tokenizers":(optional)[
   {
      "name":"tokenizer_name",
      "@odata.type":"#tokenizer_type",
      "option1":value1,
      "option2":value2,
      ...
   }
],
"tokenFilters":(optional)[
   {
      "name":"token_filter_name",
      "@odata.type":"#token_filter_type",
      "option1":value1,
      "option2":value2,
      ...
   }
]

Dentro de una definición de índice, puede colocar esta sección en cualquier lugar del cuerpo de una solicitud de creación de índice, pero normalmente va al final:

{
  "name": "name_of_index",
  "fields": [ ],
  "suggesters": [ ],
  "scoringProfiles": [ ],
  "defaultScoringProfile": (optional) "...",
  "corsOptions": (optional) { },
  "analyzers":(optional)[ ],
  "charFilters":(optional)[ ],
  "tokenizers":(optional)[ ],
  "tokenFilters":(optional)[ ]
}

La definición del analizador es una parte del índice más grande. Las definiciones para los filtros de caracteres, tokenizadores y filtros de token se agregan al índice solo si está configurando las opciones personalizadas. Para utilizar un filtro existente o tokenizador como está, especifíquelo por nombre en la definición del analizador. Para más información, consulte Creación de un índice (REST). Para ver más ejemplos, consulte Adición de analizadores en Azure AI Search.

Prueba de analizadores personalizados

Puede usar el analizador de pruebas (REST) para ver cómo un analizador descompone el texto dado en tokens.

Solicitar

  POST https://[search service name].search.windows.net/indexes/[index name]/analyze?api-version=[api-version]
    Content-Type: application/json
    api-key: [admin key]

  {
     "analyzer":"my_analyzer",
     "text": "Vis-à-vis means Opposite"
  }

Respuesta

  {
    "tokens": [
      {
        "token": "vis_a_vis",
        "startOffset": 0,
        "endOffset": 9,
        "position": 0
      },
      {
        "token": "vis_à_vis",
        "startOffset": 0,
        "endOffset": 9,
        "position": 0
      },
      {
        "token": "means",
        "startOffset": 10,
        "endOffset": 15,
        "position": 1
      },
      {
        "token": "opposite",
        "startOffset": 16,
        "endOffset": 24,
        "position": 2
      }
    ]
  }

Actualización de analizadores personalizados

Una vez definido un analizador, un tokenizador, un filtro de token o un filtro de caracteres, no se puede modificar. Se pueden agregar unos nuevos a un índice existente solo si la marca de allowIndexDowntime está establecida en true en la solicitud de actualización del índice:

PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=[api-version]&allowIndexDowntime=true

Esta operación toma el índice sin conexión durante al menos unos segundos, provocando un error en la indexación y las solicitudes de consulta. El rendimiento y la disponibilidad de escritura del índice pueden ser desiguales durante varios minutos después de que se actualice el índice, o durante más tiempo en el caso de índices muy grandes, pero estos efectos son temporales y, al final, se resuelven por sí solos.

Analizadores integrados

Si desea usar un analizador integrado con opciones personalizadas, la creación de un analizador personalizado es el mecanismo para especificar esas opciones. Por el contrario, para usar un analizador integrado tal cual, solo tiene que hacer referencia a él por su nombre en la definición del campo.

analyzer_name analyzer_type1 Descripción y opciones
keyword (el tipo solo se aplica cuando las opciones están disponibles) Trata todo el contenido de un campo como un solo token. Esto es útil para los datos como códigos postales, identificadores y algunos nombres de producto.
pattern PatternAnalyzer Separa el texto de manera flexible en términos a través de un patrón de expresión regular.

Opciones

lowercase (tipo: booleano): determina si los términos se ponen en minúsculas. El valor predeterminado es true.

pattern (tipo: cadena): un patrón de expresión regular para que coincida con los separadores de token. El valor predeterminado es \W+, que coincide con los caracteres que no son una palabra.

flags (tipo: cadena): marcas de expresión regular. El valor predeterminado es una cadena vacía. Valores permitidos: CANON_EQ, CASE_INSENSITIVE, COMMENTS, DOTALL, LITERAL, MULTILINE, UNICODE_CASE, UNIX_LINES

stopwords (tipo: matriz de cadenas): una lista de palabras irrelevantes. El valor predeterminado es una lista vacía.
simple (el tipo solo se aplica cuando las opciones están disponibles) Divide el texto por donde no hay letras y lo convierte en minúsculas.
Estándar
(También se denomina standard.lucene)
StandardAnalyzer Analizador de Lucene estándar, formado por el tokenizador estándar, filtro de minúsculas y filtro de palabras irrelevantes.

Opciones

maxTokenLength (tipo: entero): la longitud máxima del token. El valor predeterminado es 255. Los tokens que sobrepasen la longitud máxima se dividen. La longitud máxima del token que se puede usar es 300 caracteres.

stopwords (tipo: matriz de cadenas): una lista de palabras irrelevantes. El valor predeterminado es una lista vacía.
standardasciifolding.lucene (el tipo solo se aplica cuando las opciones están disponibles) Analizador estándar con el filtro de plegado ASCII.
stop StopAnalyzer Divide el texto por donde no hay letras y aplica los filtros de token de minúsculas y palabra irrelevante.

Opciones

stopwords (tipo: matriz de cadenas): una lista de palabras irrelevantes. El valor predeterminado es una lista predefinida para inglés.
whitespace (el tipo solo se aplica cuando las opciones están disponibles) Un analizador que usa el tokenizador whitespace. Los tokens cuya longitud no es superior a 255 caracteres se dividen.

1 Los tipos de analizador siempre van precedidos en el código por #Microsoft.Azure.Search de modo que PatternAnalyzer se especificaría realmente como #Microsoft.Azure.Search.PatternAnalyzer. Hemos quitado el prefijo por brevedad, pero es obligatorio en el código.

analyzer_type solo se proporciona para analizadores que se pueden personalizar. Si no hay opciones, como sucede con el analizador de palabras clave, no hay ningún tipo #Microsoft.Azure.Search asociado.

Filtros de caracteres

Los filtros de caracteres agregan procesamiento antes de que una cadena llegue al tokenizador.

Azure AI Search admite los filtros de caracteres de la lista siguiente. Puede encontrar más información sobre cada uno de ellos en la referencia de la API de Lucene.

char_filter_name char_filter_type1 Descripción y opciones
html_strip (el tipo solo se aplica cuando las opciones están disponibles) Filtro de caracteres que intenta eliminar construcciones HTML.
mapping MappingCharFilter Un filtro de caracteres que aplica asignaciones definidas con la opción de asignaciones. La coincidencia es ambiciosa (la mayor coincidencia de patrones en un momento dado gana). Se permite que la sustitución sea una cadena vacía.

Opciones

mappings (tipo: matriz de cadenas): una lista de asignaciones con el siguiente formato: a=>b (todas las repeticiones del carácter a se reemplazan por el carácter b). Necesario.
pattern_replace PatternReplaceCharFilter Un filtro de caracteres que reemplaza los caracteres en la cadena de entrada. Usa una expresión regular para identificar las secuencias de caracteres que se desean conservar y un patrón de reemplazo para identificar los caracteres que se desean reemplazar. Por ejemplo, texto de entrada = aa bb aa bb, patrón = (aa)\\\s+(bb) reemplazo = $1#$2, resultado = aa#bb aa#bb.

Opciones

pattern (tipo: cadena): necesario.

replacement (tipo: cadena): necesario.

1 Los tipos de filtro de caracteres siempre van precedidos en el código por #Microsoft.Azure.Search de modo que MappingCharFilter se especificaría realmente como #Microsoft.Azure.Search.MappingCharFilter. Hemos quitado el prefijo para reducir el ancho de la tabla, pero recuerde que debe incluirlo en el código. Tenga en cuenta que char_filter_type solo se proporciona para filtros que se pueden personalizar. Si no hay opciones, como sucede con html_strip, no hay ningún tipo #Microsoft.Azure.Search asociado.

Tokenizer

Un tokenizador divide un texto continuo en una secuencia de tokens, como una frase se divide en palabras o una palabra en formas de raíz.

Azure AI Search admite los tokenizadores de la lista siguiente. Puede encontrar más información sobre cada uno de ellos en la referencia de la API de Lucene.

tokenizer_name tokenizer_type1 Descripción y opciones
clásico ClassicTokenizer Tokenizador basado en la gramática que es adecuado para procesar la mayoría de los documentos de idiomas Europaos.

Opciones

maxTokenLength (tipo: entero): la longitud máxima del token. Valor predeterminado: 255, máximo: 300. Los tokens que sobrepasen la longitud máxima se dividen.
edgeNGram EdgeNGramTokenizer Tokeniza la entrada de un perímetro en n-gramas de tamaños dados.

Opciones

minGram (tipo: entero): Valor predeterminado: 1, máximo: 300.

maxGram (tipo: entero) - Valor predeterminado: 2, valor máximo: 300. El valor debe ser mayor que minGram.

tokenChars (tipo: matriz de cadenas): clases de caracteres para mantener en los tokens. Valores permitidos:
letter, digit, whitespace, punctuation, symbol. Los valores predeterminados son una matriz vacía: mantiene todos los caracteres.
keyword_v2 KeywordTokenizerV2 Emite la entrada completa como un solo token.

Opciones

maxTokenLength (tipo: entero): la longitud máxima del token. Valor predeterminado: 256, máximo: 300. Los tokens que sobrepasen la longitud máxima se dividen.
letter (el tipo solo se aplica cuando las opciones están disponibles) Divide el texto por donde no hay letras. Los tokens cuya longitud no es superior a 255 caracteres se dividen.
lowercase (el tipo solo se aplica cuando las opciones están disponibles) Divide el texto por donde no hay letras y lo convierte en minúsculas. Los tokens cuya longitud no es superior a 255 caracteres se dividen.
microsoft_language_tokenizer MicrosoftLanguageTokenizer Divide el texto mediante reglas específicas del idioma.

Opciones

maxTokenLength (tipo: entero): Longitud máxima del token, valor predeterminado: 255, máximo: 300. Los tokens que sobrepasen la longitud máxima se dividen. Los tokens de más de 300 caracteres primero se dividen en tokens de 300 de longitud y, luego, cada uno de esos tokens se divide según el valor de maxTokenLength establecido.

isSearchTokenizer (tipo: booleano): se establece en true si se usa como el tokenizador de búsqueda; se establece en false si se usa como el tokenizador de indexación.

language (tipo: cadena): idioma que se va a usar, valor predeterminado english. Los valores permitidos son:
bangla, bulgarian, catalan, chineseSimplified, chineseTraditional, croatian, czech, danish, dutch, english, french, german, greek, gujarati, hindi, icelandic, indonesian, italian, japanese, kannada, korean, malay, malayalam, marathi, norwegianBokmaal, polish, portuguese, portugueseBrazilian, punjabi, romanian, russian, serbianCyrillic, serbianLatin, slovenian, spanish, swedish, tamil, telugu, thai, ukrainian, urdu, vietnamese
microsoft_language_stemming_tokenizer MicrosoftLanguageStemmingTokenizer Divide el texto mediante reglas específicas del idioma y reduce las palabras a sus formas base. Este tokenizador realiza la lematización.

Opciones

maxTokenLength (tipo: entero): Longitud máxima del token, valor predeterminado: 255, máximo: 300. Los tokens que sobrepasen la longitud máxima se dividen. Los tokens de más de 300 caracteres primero se dividen en tokens de 300 de longitud y, luego, cada uno de esos tokens se divide según el valor de maxTokenLength establecido.

isSearchTokenizer (tipo: booleano): se establece en true si se usa como el tokenizador de búsqueda; se establece en false si se usa como el tokenizador de indexación.

language (tipo: cadena): idioma que se va a usar, valor predeterminado english. Los valores permitidos son:
arabic, bangla, bulgarian, catalan, croatian, czech, danish, dutch, english, estonian, finnish, french, german, greek, gujarati, hebrew, hindi, hungarian, icelandic, indonesian, italian, kannada, latvian, lithuanian, malay, malayalam, marathi, norwegianBokmaal, polish, portuguese, portugueseBrazilian, punjabi, romanian, russian, serbianCyrillic, serbianLatin, slovak, slovenian, spanish, swedish, tamil, telugu, turkish, ukrainian, urdu
nGram NGramTokenizer Tokeniza la entrada en n-gramas de tamaños dados.

Opciones

minGram (tipo: entero): Valor predeterminado: 1, máximo: 300.

maxGram (tipo: entero) - Valor predeterminado: 2, valor máximo: 300. El valor debe ser mayor que minGram.

tokenChars (tipo: matriz de cadenas): clases de caracteres para mantener en los tokens. Valores permitidos: letter, digit, whitespace, punctuation, symbol. Los valores predeterminados son una matriz vacía: mantiene todos los caracteres.
path_hierarchy_v2 PathHierarchyTokenizerV2 Tokenizador para las jerarquías parecidas a rutas de acceso. Opciones

delimiter (tipo: cadena) - Default: '/.

replacement (tipo: cadena): si está establecido, reemplaza el carácter delimitador. El valor predeterminado es el mismo que el valor del delimitador.

maxTokenLength (tipo: entero): la longitud máxima del token. Valor predeterminado: 300, máximo: 300. Las rutas de acceso más largas de maxTokenLength se omiten.

reverse (tipo: booleano): si es true, genera el token en orden inverso. Valor predeterminado: false.

skip (tipo: booleano): tokens iniciales que se omitirán. El valor predeterminado es 0.
pattern PatternTokenizer Este tokenizador usa la coincidencia de patrones de expresión regular para construir tokens distintos.

Opciones

pattern (tipo: cadena): patrón de expresión regular que coincidirá con los separadores de token. El valor predeterminado es \W+, que coincide con los caracteres que no son una palabra.

flags (tipo: cadena): marcas de expresión regular. El valor predeterminado es una cadena vacía. Valores permitidos: CANON_EQ, CASE_INSENSITIVE, COMMENTS, DOTALL, LITERAL, MULTILINE, UNICODE_CASE, UNIX_LINES

group (tipo: entero): el grupo para extraer en tokens. El valor predeterminado es 1 (dividir).
standard_v2 StandardTokenizerV2 Divide el texto siguiendo las reglas de segmentación de texto Unicode.

Opciones

maxTokenLength (tipo: entero): la longitud máxima del token. Valor predeterminado: 255, máximo: 300. Los tokens que sobrepasen la longitud máxima se dividen.
uax_url_email UaxUrlEmailTokenizer Tokeniza las direcciones URL y los correos electrónicos como un token.

Opciones

maxTokenLength (tipo: entero): la longitud máxima del token. Valor predeterminado: 255, máximo: 300. Los tokens que sobrepasen la longitud máxima se dividen.
whitespace (el tipo solo se aplica cuando las opciones están disponibles) Divide el texto por los espacios en blanco. Los tokens cuya longitud no es superior a 255 caracteres se dividen.

1 Los tipos de tokenizador siempre van precedidos en el código por #Microsoft.Azure.Search de modo que ClassicTokenizer se especificaría realmente como #Microsoft.Azure.Search.ClassicTokenizer. Hemos quitado el prefijo para reducir el ancho de la tabla, pero recuerde que debe incluirlo en el código. Tenga en cuenta que tokenizer_type solo se proporciona para tokenizadores que se puedan personalizar. Si no hay opciones, como sucede con el tokenizador de letras, no hay ningún tipo #Microsoft.Azure.Search asociado.

Filtros de token

Un filtro de token se utiliza para filtrar o modificar los tokens generados por un tokenizer. Por ejemplo, puede especificar un filtro en minúsculas que convierte todos los caracteres a minúsculas. Puede tener varios filtros de token en un analizador personalizado. Los filtros de token se ejecutan en el orden en que aparecen.

En la tabla siguiente, los filtros de token que se implementan mediante Apache Lucene se vinculan a la documentación de la API Lucene.

token_filter_name token_filter_type1 Descripción y opciones
arabic_normalization (el tipo solo se aplica cuando las opciones están disponibles) Un filtro de token que aplica el normalizador de árabe para normalizar la ortografía.
apostrophe (el tipo solo se aplica cuando las opciones están disponibles) Elimina todos los caracteres después de un apóstrofo (incluido el propio apóstrofo).
asciifolding AsciiFoldingTokenFilter Convierte los caracteres Unicode alfabéticos, numéricos y simbólicos que no están en los primeros 127 caracteres ASCII (el bloque Unicode Basic Latin) en sus valores equivalentes ASCII, si existe uno.

Opciones

preserveOriginal (tipo: booleano): si es true, se mantiene el token original. El valor predeterminado es false.
cjk_bigram CjkBigramTokenFilter Forma bigramas de términos CJK que se generan a partir de StandardTokenizer.

Opciones

ignoreScripts (tipo: matriz de cadenas): scripts que se desea pasar por alto. Los valores permitidos son han, hiragana, katakana y hangul. El valor predeterminado es una lista vacía.

outputUnigrams (tipo: bool): establézcalo en true si siempre desea unigramas y bigramas a la salida. El valor predeterminado es false.
cjk_width (el tipo solo se aplica cuando las opciones están disponibles) Normaliza las diferencias de ancho de CJK. Pliega la variantes de ASCII de ancho completo en el latín básico equivalente y las variantes de Katakana de ancho medio en el kana equivalente.
clásico (el tipo solo se aplica cuando las opciones están disponibles) Quita los posesivos de inglés y los puntos de los acrónimos.
common_grams CommonGramTokenFilter Construye bigramas para términos que se repiten con frecuencia durante la indexación. Los términos individuales también se indexan, con los bigramas superpuestos.

Opciones

commonWords (tipo: matriz de cadenas): el conjunto de palabras comunes. El valor predeterminado es una lista vacía. Necesario.

ignoreCase (tipo: booleano): si es true, la coincidencia distingue entre mayúsculas y minúsculas. El valor predeterminado es false.

queryMode (tipo: booleano): genera bigramas y luego quita las palabras comunes y los términos individuales seguidos de una palabra común. El valor predeterminado es false.
dictionary_decompounder DictionaryDecompounderTokenFilter Descompone las palabras compuestas que se encuentran en muchas lenguas germánicas.

Opciones

wordList (tipo: matriz de cadenas): la lista de palabras que se van a comparar. El valor predeterminado es una lista vacía. Necesario.

minWordSize (tipo: entero): solo se procesarán las palabras más largas que este valor. El valor predeterminado es 5.

minSubwordSize (tipo: entero): solo se obtendrán las subpalabras más largas que este valor. El valor predeterminado es 2.

maxSubwordSize (tipo: entero): solo se obtendrán las subpalabras más cortas que este valor. El valor predeterminado es 15.

onlyLongestMatch (tipo: booleano): agregue solamente la subpalabra coincidente más larga a la salida. El valor predeterminado es false.
edgeNGram_v2 EdgeNGramTokenFilterV2 Genera n-gramas de los tamaños dados a partir de la parte delantera o trasera de un token de entrada.

Opciones

minGram (tipo: entero): Valor predeterminado: 1, máximo: 300.

maxGram (tipo: entero): Valor predeterminado: 2, máximo: 300. El valor debe ser mayor que minGram.

side (tipo: cadena): especifica de qué lado de la entrada se debe generar el n-grama. Valores permitidos: front, back
elision ElisionTokenFilter Quita las elisiones. Por ejemplo, l'avion (el avión) se convierte en avion (avión).

Opciones

articles (tipo: matriz de cadenas): un conjunto de artículos para quitar. El valor predeterminado es una lista vacía. Si no hay ninguna lista de artículos establecida, se quitan todos los artículos en francés de forma predeterminada.
german_normalization (el tipo solo se aplica cuando las opciones están disponibles) Normaliza los caracteres de alemán según la heurística del algoritmo de bola de nieve German2 .
hindi_normalization (el tipo solo se aplica cuando las opciones están disponibles) Normaliza el texto en hindi para quitar algunas diferencias en las variaciones ortográficas.
indic_normalization IndicNormalizationTokenFilter Normaliza la representación Unicode de texto en las lenguas hindúes.
keep KeepTokenFilter Filtro de token que solo mantiene los tokens con el texto contenido en la lista especificada de palabras.

Opciones

keepWords (tipo: matriz de cadenas): una lista de palabras para mantener. El valor predeterminado es una lista vacía. Necesario.

keepWordsCase (tipo: bool): si es true, primero se ponen en minúsculas todas las palabras. El valor predeterminado es false.
keyword_marker KeywordMarkerTokenFilter Marca los términos como palabras clave.

Opciones

keywords (tipo: matriz de cadenas): una lista de palabras para marcar como palabras clave. El valor predeterminado es una lista vacía. Necesario.

ignoreCase (tipo: booleano): si es true, primero se ponen en minúsculas todas las palabras. El valor predeterminado es false.
keyword_repeat (el tipo solo se aplica cuando las opciones están disponibles) Emite cada token de entrada dos veces, una vez como palabra clave y otra como no palabra clave.
kstem (el tipo solo se aplica cuando las opciones están disponibles) Un filtro kstem de alto rendimiento para inglés.
length LengthTokenFilter Quita las palabras que son demasiado largas o demasiado cortas.

Opciones

min (tipo: entero): el número mínimo. Valor predeterminado: 0, máximo: 300.

max (tipo: entero): el número máximo. Valor predeterminado: 300, máximo: 300.
limit Microsoft.Azure.Search.LimitTokenFilter Limita el número de tokens durante la indexación.

Opciones

maxTokenCount (tipo: int): número máximo de tokens para producir. El valor predeterminado es 1.

consumeAllTokens (tipo: booleano): indica si se deben consumir todos los tokens de la entrada incluso si se alcanza maxTokenCount. El valor predeterminado es false.
lowercase (el tipo solo se aplica cuando las opciones están disponibles) Normaliza el texto de token a minúsculas.
nGram_v2 NGramTokenFilterV2 Genera n-gramas de los tamaños dados.

Opciones

minGram (tipo: entero): Valor predeterminado: 1, máximo: 300.

maxGram (tipo: entero): Valor predeterminado: 2, máximo: 300. El valor debe ser mayor que minGram.
pattern_capture PatternCaptureTokenFilter Usa expresiones regulares de Java para emitir varios tokens, uno para cada grupo de capturas en uno o varios patrones.

Opciones

patterns (tipo: matriz de cadenas): una lista de patrones para comparar con cada token. Necesario.

preserveOriginal (tipo: booleano): establézcalo en true para devolver el token original incluso si uno de los patrones coincide; valor predeterminado: true.
pattern_replace PatternReplaceTokenFilter Un filtro de token que aplica un patrón a cada token de la secuencia, reemplazando las repeticiones de la coincidencia por la cadena de reemplazo especificada.

Opciones

pattern (tipo: cadena): necesario.

replacement (tipo: cadena): necesario.
persian_normalization (el tipo solo se aplica cuando las opciones están disponibles) Aplica la normalización para persa.
phonetic PhoneticTokenFilter Crea tokens para coincidencias fonéticas.

Opciones

encoder (tipo: cadena): codificador fonético que se va a usar. Los valores permitidos son metaphone, doubleMetaphone, soundex, refinedSoundex, caverphone1, caverphone2, cologne, nysiis, koelnerPhonetik, haasePhonetik y beiderMorse. Predeterminado: metaphone. El valor predeterminado es metaphone.

Vea el codificador para más información.

replace (tipo: bool): true si los tokens codificados deben reemplazar a los tokens originales; false si se deben agregar como sinónimos. El valor predeterminado es true.
porter_stem (el tipo solo se aplica cuando las opciones están disponibles) Transforma la secuencia de tokens según el algoritmo de lematización de Porter.
reverse (el tipo solo se aplica cuando las opciones están disponibles) Invierte la cadena de token.
scandinavian_normalization (el tipo solo se aplica cuando las opciones están disponibles) Normaliza el uso de los caracteres de escandinavo intercambiables.
scandinavian_folding (el tipo solo se aplica cuando las opciones están disponibles) Dobla los caracteres escandinavos åÅäæÄÆ en a y öÖøØ en o. También discrimina el uso de las vocales dobles aa, ae, ao, oe y oo, dejando solo la primera de ellas.
shingle ShingleTokenFilter Crea combinaciones de tokens como un solo token.

Opciones

maxShingleSize (tipo: entero): el valor predeterminado es 2.

minShingleSize (tipo: entero): el valor predeterminado es 2.

outputUnigrams (tipo: booleano): si es true, la secuencia de salida contiene los tokens de entrada (unigramas), así como n-gramas de palabras. El valor predeterminado es true.

outputUnigramsIfNoShingles (tipo: booleano): si es true, se invalida el comportamiento de outputUnigrams==false para aquellas ocasiones en las que no hay n-gramas de palabras. El valor predeterminado es false.

tokenSeparator (tipo: cadena): la cadena que se usará al unir los tokens adyacentes para formar un n-grama de palabras. El valor predeterminado es un solo espacio vacío .

filterToken (tipo: cadena): la cadena que se va a insertar para cada posición en la que no hay ningún token. El valor predeterminado es _.
snowball SnowballTokenFilter Filtro de token de bola de nieve.

Opciones

language (tipo: cadena): entre los valores permitidos se incluyen: armenian, basque, catalan, danish, dutch, english, finnish, french, german, german2, hungarian, italian, kp, lovins, norwegian, porter, portuguese, romanian, russian, spanish, swedish y turkish
sorani_normalization SoraniNormalizationTokenFilter Normaliza la representación de Unicode de texto en Sorani.

Opciones

Ninguno.
stemmer StemmerTokenFilter Filtro de lematización específico del idioma.

Opciones

language (tipo: cadena): los valores permitidos son:
- arabic
- armenian
- basque
- brazilian
- bulgarian
- catalan
- czech
- danish
- dutch
- dutchKp
- english
- lightEnglish
- minimalEnglish
- possessiveEnglish
- porter2
- lovins
- finnish
- lightFinnish
- french
- lightFrench
- minimalFrench
- galician
- minimalGalician
- german
- german2
- lightGerman
- minimalGerman
- greek
- hindi
- hungarian
- lightHungarian
- indonesian
- irish
- italian
- lightItalian
- sorani
- latvian
- norwegian
- lightNorwegian
- minimalNorwegian
- lightNynorsk
- minimalNynorsk
- portuguese
- lightPortuguese
- minimalPortuguese
- portugueseRslp
- romanian
- russian
- lightRussian
- spanish
- lightSpanish
- swedish
- lightSwedish
- turkish
stemmer_override StemmerOverrideTokenFilter Los términos lematizados según el diccionario se marcan como palabras clave, lo que evita la lematización de la cadena. Se debe colocar antes de los filtros de lematización.

Opciones

rules (tipo: matriz de cadenas): reglas de lematización con el formato word => stem, por ejemplo, ran => run. El valor predeterminado es una lista vacía. Necesario.
stopwords StopwordsTokenFilter Quita las palabras irrelevantes de una secuencia de tokens. De forma predeterminada, el filtro utiliza una lista de palabras irrelevantes predefinidas para inglés.

Opciones

stopwords (tipo: matriz de cadenas): una lista de palabras irrelevantes. No se puede especificar si se especifica "stopwordsList".

stopwordsList (tipo: cadena): una lista predefinida de palabras irrelevantes. No se puede especificar si se especifica stopwords. Entre los valores permitidos se incluyen:arabic, armenian, basque, brazilian, bulgarian, catalan, czech, danish, dutch, english, finnish, french, galician, german, greek, hindi, hungarian, indonesian, irish, italian, latvian, norwegian, persian, portuguese, romanian, russian, sorani, spanish, swedish, thai, turkish, valor predeterminado: english. No se puede especificar si se especifica stopwords.

ignoreCase (tipo: booleano): si es true, primero se ponen en minúsculas todas las palabras. El valor predeterminado es false.

removeTrailing (tipo: booleano): si es true, se omite el último término de búsqueda si es una palabra irrelevante. El valor predeterminado es true.
synonym SynonymTokenFilter Hace coincidir sinónimos de una o varias palabras en una secuencia de tokens.

Opciones

synonyms (tipo: matriz de cadenas): requerido. Lista de sinónimos en uno de los dos formatos siguientes:

-increíble, asombroso, fabuloso => impresionante: todos los términos que se encuentran en el lado izquierdo del símbolo => se reemplazan por todos los términos que se encentran en su lado derecho.

-increíble, asombroso, fabuloso, impresionante: una lista de palabras equivalentes separadas por comas. Establezca la opción de expansión para cambiar cómo se interpreta esta lista.

ignoreCase (tipo: booleano): entradas de pliegues de mayúsculas y minúsculas para coincidencia. El valor predeterminado es false.

expand (tipo: bool): si es true, todas las palabras de la lista de sinónimos (si no se usa la notación =>) se asignan entre sí.
La lista "increíble, asombroso, fabuloso, impresionante" equivale a "increíble, asombroso, fabuloso, impresionante => increíble, asombroso, fabuloso, impresionante".

- Si es false, la lista "increíble, asombroso, fabuloso, impresionante" equivale a "increíble, asombroso, fabuloso, impresionante => increíble".
trim (el tipo solo se aplica cuando las opciones están disponibles) Recorta el espacio en blanco inicial y final de los tokens.
truncate TruncateTokenFilter Trunca los términos en una longitud específica.

Opciones

length (tipo: entero): Valor predeterminado: 300, valor máximo: 300. Necesario.
unique UniqueTokenFilter Filtra los tokens con el mismo texto que el token anterior.

Opciones

onlyOnSamePosition (tipo: booleano): si se establece, quita duplicados solo en la misma posición. El valor predeterminado es true.
uppercase (el tipo solo se aplica cuando las opciones están disponibles) Normaliza el texto de token a mayúsculas.
word_delimiter WordDelimiterTokenFilter Divide palabras en subpalabras y realiza transformaciones opcionales en los grupos de subpalabras.

Opciones

generateWordParts (tipo: booleano): hace que se generen partes de palabras, por ejemplo, AzureSearch se convierte en AzureSearch. El valor predeterminado es true.

generateNumberParts (tipo: bool): crea el número de subpalabras que se van a generar. El valor predeterminado es true.

catenateWords (tipo: booleano): hace que se concatenen las ejecuciones máximas de partes de palabras, por ejemplo, Azure-Search se convierte en AzureSearch. El valor predeterminado es false.

catenateNumbers (tipo: booleano): hace que se concatenen las ejecuciones máximas de partes numéricas, por ejemplo, 1-2 se convierte en 12. El valor predeterminado es false.

catenateAll (tipo: booleano): hace que se concatenen todas las partes de subpalabras, por ejemplo, Azure-Search-1 se convierte en AzureSearch1. El valor predeterminado es false.

splitOnCaseChange (tipo: booleano): si es true, divide las palabras según caseChange, por ejemplo, AzureSearch se convierte en AzureSearch. El valor predeterminado es true.

preserveOriginal: crea palabras originales que se van a conservar y a agregar a la lista de subpalabras. El valor predeterminado es false.

splitOnNumerics (tipo: booleano): si es true, divide según los números, por ejemplo, Azure1Search se convierte en Azure1Search. El valor predeterminado es true.

stemEnglishPossessive (tipo: booleano): hace que las 's finales se quiten de cada subpalabra. El valor predeterminado es true.

protectedWords (tipo: matriz de cadenas): tokens para impedir la delimitación. El valor predeterminado es una lista vacía.

1 Los tipos de filtro de token siempre van precedidos en el código por #Microsoft.Azure.Search de modo que ArabicNormalizationTokenFilter se especificaría realmente como #Microsoft.Azure.Search.ArabicNormalizationTokenFilter. Hemos quitado el prefijo para reducir el ancho de la tabla, pero recuerde que debe incluirlo en el código.

Consulte también