Adicionar analisadores personalizados a campos de cadeia de caracteres em um índice da IA do Azure Search

Um analisador personalizado é uma combinação definida pelo usuário de um indexador, um ou mais filtros de token e um ou mais filtros de caracteres. Um analisador personalizado é especificado em um índice de pesquisa e, em seguida, referenciado por nome nas definições de campo que exigem análise personalizada. Um analisador personalizado é invocado por campo. Os atributos no campo determinarão se ele é usado para indexação, consultas ou ambos.

Em um analisador personalizado, os filtros de caracteres preparam o texto de entrada antes de ser processado pelo gerador de token (por exemplo, removendo a marcação). Em seguida, o gerador de token divide o texto em tokens. Por fim, os filtros de token modificam os tokens emitidos pelo gerador de token. Para obter conceitos e exemplos, consulte Analisadores na IA do Azure Search.

Por que usar um analisador personalizado?

Um analisador personalizado oferece controle sobre o processo de conversão de texto em tokens indexáveis e pesquisáveis, permitindo que você escolha quais tipos de análise ou filtragem devem ser invocados e a ordem na qual ocorrem.

Crie e atribua um analisador personalizado se nenhum dos analisadores padrão (padrão Lucence), internos ou de linguagem forem suficientes para suas necessidades. Você também pode criar um analisador personalizado se quiser usar um analisador interno com opções personalizadas. Por exemplo, se desejasse alterar o maxTokenLength no padrão, você criaria um analisador personalizado, com um nome definido pelo usuário, para definir essa opção.

Os cenários em que os analisadores personalizados podem ser úteis incluem:

  • Usar filtros de caracteres para remover a marcação HTML antes que as entradas de texto sejam tokenizadas ou substituir determinados caracteres ou símbolos.

  • Pesquisa fonética. Adicione um filtro fonético para permitir a pesquisa com base no som de uma palavra, e não na ortografia.

  • Desabilitar análise léxica. Use o analisador de palavra-chave para criar campos de pesquisa que não são analisados.

  • Pesquisa rápida de prefixo/sufixo. Adicione o filtro de token Edge N-gram para indexar prefixos de palavras a fim de habilitar a correspondência rápida de prefixo. Combine-a com o filtro de token Inverso para realizar a correspondência de sufixo.

  • Criação de tokens personalizada. Por exemplo, use o criador de token Whitespace para dividir as frases em tokens usando o espaço em branco como um delimitador

  • Folding ASCII. Adicione o filtro Folding ASCII padrão para normalizar diacríticos como ö ou ê em termos de pesquisa.

Observação

Os analisadores personalizados não são expostos no portal do Azure. A única maneira de adicionar um analisador personalizado é por meio de um código que define um índice.

Criar um analisador personalizado

Para criar um analisador personalizado, especifique-o na seção analyzers de um índice no tempo de design e, em seguida, referencie-o em campos Edm.String pesquisáveis usando a propriedade analyzer ou o par indexAnalyzer e searchAnalyzer.

Uma definição de analisador inclui um nome, um tipo, um ou mais filtros de caracteres, um máximo de um criador de token e um ou mais filtros de token para processamento de pós-criação de token. Os filtros de caracteres são aplicados antes da criação de token. Filtros de token e filtros de caracteres são aplicados da esquerda para a direita.

  • Os nomes em um analisador personalizado devem ser exclusivos e não podem ser iguais a nenhum dos analisadores, criadores de token, filtros de token ou filtros de caracteres internos. Deve conter apenas letras, números, espaços, traços ou sublinhados, pode começar e terminar apenas com caracteres alfanuméricos e está limitado a 128 caracteres.

  • O tipo deve ser #Microsoft.Azure.Search.CustomAnalyzer.

  • charFilters pode ser um ou mais filtros de Filtros de caracteres, processados antes de geração de tokens, na ordem fornecida. Alguns filtros de caracteres têm opções, que podem ser definidas em uma seção charFilters. Os filtros de caracteres são opcionais.

  • tokenizer é exatamente um Gerador de token. É necessário um valor. Se precisar de mais de um criador de token, você pode criar vários analisadores personalizados e atribuí-los campo por campo em seu esquema de índice.

  • tokenFilters pode ser um ou mais filtros de Filtros de tokens, processados antes da geração de tokens, na ordem fornecida. Para filtros de tokens que têm opções, adicione uma seção tokenFilter para especificar a configuração. Os filtros de tokens são opcionais.

Os analisadores não devem produzir tokens com mais de 300 caracteres ou haverá falha na indexação. Para cortar ou excluir tokens longos, use TruncateTokenFilter e LengthTokenFilter, respectivamente. Veja Filtros de tokens para referência.

"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 uma definição de índice, você pode colocar essa seção em qualquer lugar no corpo de uma solicitação de criação de índice, mas geralmente ela ocorre no final:

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

A definição do analisador é uma parte do índice maior. As definições para filtros de caracteres, criadores de token e filtros de token serão adicionadas ao índice somente se você estiver definindo opções personalizadas. Para usar um filtro ou criador de token existente no estado em que ele se encontra, especifique-o por nome na definição do analisador. Para obter mais informações, veja Criar índice (REST). Para obter mais exemplos, consulte Adicionar analisadores na IA do Azure Search.

Testar analisadores personalizados

Você pode usar o Analisador de teste (REST) para ver como um analisador divide o texto em tokens.

Solicitação

  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"
  }

Response

  {
    "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
      }
    ]
  }

Atualizar analisadores personalizados

Depois que um analisador, um criador de token, um filtro de token ou um filtro de caractere é definido, ele não pode ser modificado. Outros novos poderão ser adicionados a um índice existente apenas se o sinalizador allowIndexDowntime estiver definido como true na solicitação de atualização de índice:

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

Essa operação deixa seu índice offline por pelo menos alguns segundos, fazendo com que suas solicitações de indexação e de consulta falhem. O desempenho e a disponibilidade de gravação do índice podem ser prejudicados por vários minutos após o índice ser atualizado, ou por mais tempo em caso de índices muito grandes, mas esses efeitos são temporários e acabam se resolvendo sozinhos.

Analisadores internos

Se você quiser usar um analisador interno com opções personalizadas, a criação de um analisador personalizado é o mecanismo pelo qual você especifica essas opções. Por outro lado, para usar um analisador interno como está, basta fazer referência a ele pelo nome na definição de campo.

analyzer_name analyzer_type 1 Descrição e opções
Palavra-chave (o tipo aplica-se somente quando há opções disponíveis) Trata todo o conteúdo de um campo como um único token. É útil para dados como códigos postais, IDs e alguns nomes de produtos.
pattern PatternAnalyzer Separa texto em termos de forma flexível por meio de um padrão de expressão regular.

Opções

lowercase (tipo: bool) — determina se os termos estão em minúscula. O padrão é true.

pattern (tipo: cadeia de caracteres) – Um padrão de expressão regular para corresponder aos separadores de token. O padrão é \W+, que corresponde a caracteres que não são palavras.

flags (tipo: cadeia de caracteres) – Sinalizadores de expressão regular. O padrão é uma cadeia de caracteres vazia. Os valores permitidos são: CANON_EQ, CASE_INSENSITIVE, COMMENTS, DOTALL, LITERAL, MULTILINE, UNICODE_CASE, UNIX_LINES

stopwords (tipo: matriz de cadeia de caracteres) – Uma lista de palavras irrelevantes. O padrão é uma lista vazia.
simpless (o tipo aplica-se somente quando há opções disponíveis) Divide o texto em não letras e converte em minúsculas.
padrão
(Também conhecido como standard.lucene)
StandardAnalyzer Analisador padrão Lucene, composto pelo criador de token padrão, filtro de letras minúsculas e interrupção de filtro.

Opções

maxTokenLength (tipo: int) – O comprimento máximo do token. O padrão é 255. Tokens maiores do que o tamanho máximo são divididos. O comprimento máximo do token que pode ser usado é de 300 caracteres.

stopwords (tipo: matriz de cadeia de caracteres) – Uma lista de palavras irrelevantes. O padrão é uma lista vazia.
standardasciifolding.Lucene (o tipo aplica-se somente quando há opções disponíveis) Analisador padrão com Filtro Ascii.
stop StopAnalyzer Divide o texto em não letras, aplica os filtros de token em minúsculas e de palavras irrelevantes.

Opções

stopwords (tipo: matriz de cadeia de caracteres) – Uma lista de palavras irrelevantes. O padrão é uma lista predefinida para Inglês.
whitespace (o tipo aplica-se somente quando há opções disponíveis) Um analisador que usa o criador de token whitespace. Os tokens com mais de 255 caracteres são divididos.

1 Tipos do Analisador sempre são prefixados no código com #Microsoft.Azure.Search de modo que PatternAnalyzer de fato seja especificado como #Microsoft.Azure.Search.PatternAnalyzer. Removemos o prefixo para encurtar, mas ele é necessário em seu código.

O analyzer_type é fornecido apenas para analisadores que podem ser personalizados. Se não há opções, como é o caso do analisador de palavras-chave, não há nenhum tipo associado do #Microsoft.Azure.Search.

Filtros de caractere

Filtros de caracteres adicionam processamento antes que uma cadeia de caracteres atinja o criador de token.

A IA do Azure Search dá suporte a filtros de caracteres na lista a seguir. Mais informações sobre cada uma podem ser encontradas na referência da API Lucene.

char_filter_name char_filter_type 1 Descrição e opções
html_strip (o tipo aplica-se somente quando há opções disponíveis) Um filtro de caracteres que tenta remover constructos de HTML.
mapeamento MappingCharFilter Um filtro de caracteres que aplica mapeamentos definidos com a opção de mapeamentos. A correspondência é gananciosa (a correspondência de padrões mais longa em um determinado ponto vence). A substituição é permitida como a cadeia de caracteres vazia.

Opções

mappings (tipo: cadeia de caracteres) – uma lista de mapeamentos do seguinte formato: a=>b (todas as ocorrências do caractere a são substituídas pelo caractere b). Obrigatório.
pattern_replace PatternReplaceCharFilter Um filtro de caracteres que substitui os caracteres na cadeia de entrada. Ele usa uma expressão regular para identificar sequências de caracteres para preservar e um padrão de substituição para identificar caracteres para substituir. Por exemplo, input text = aa bb aa bb, pattern=(aa)\\\s+(bb) replacement=$1#$2, result = aa#bb aa#bb.

Opções

pattern (tipo: cadeia de caracteres) — obrigatório.

replacement (tipo: cadeia de caracteres) – Obrigatório.

1 Tipos do filtro de char sempre são prefixados no código com #Microsoft.Azure.Search de modo que MappingCharFilter de fato seja especificado como #Microsoft.Azure.Search.MappingCharFilter. Removemos o prefixo para reduzir a largura da tabela, mas lembre-se de incluí-lo em seu código. Observe que char_filter_type é fornecido apenas para filtros que podem ser personalizados. Se não ha opções, como é o caso de html_strip, não há nenhum tipo associado do #Microsoft.Azure.Search.

Criadores de token

Um criador de token divide o texto contínuo em uma sequência de tokens, assim como quebrar uma frase em palavras ou uma palavra em formas raiz.

A IA do Azure Search dá suporte aos geradores de token na lista a seguir. Mais informações sobre cada uma podem ser encontradas na referência da API Lucene.

tokenizer_name tokenizer_type 1 Descrição e opções
clássico ClassicTokenizer O criador de token baseado em gramática é adequado para processar a maioria dos documentos no idioma europeu.

Opções

maxTokenLength (tipo: int) – O comprimento máximo do token. Padrão: 255, Máximo: 300. Tokens maiores do que o tamanho máximo são divididos.
edgeNGram EdgeNGramTokenizer Cria tokens para a entrada a partir de uma borda em n-gramas de determinados tamanhos.

Opções

minGram (tipo: int) – Padrão: 1, máximo: 300.

maxGram (tipo: int) – Padrão: 2, máximo 300. Deve ser maior que minGram.

tokenChars (tipo: matriz de cadeia de caracteres) – Classes de caracteres para manter nos tokens. Valores permitidos:
letter, digit, whitespace, punctuation, symbol. O padrão é uma matriz vazia, mantém todos os caracteres.
keyword_v2 KeywordTokenizerV2 Emite a entrada inteira como um único token.

Opções

maxTokenLength (tipo: int) – O comprimento máximo do token. Padrão: 256, máximo: 300. Tokens maiores do que o tamanho máximo são divididos.
letter (o tipo aplica-se somente quando há opções disponíveis) Divide o texto em não letras. Os tokens com mais de 255 caracteres são divididos.
lowercase (o tipo aplica-se somente quando há opções disponíveis) Divide o texto em não letras e converte em minúsculas. Os tokens com mais de 255 caracteres são divididos.
microsoft_language_tokenizer MicrosoftLanguageTokenizer Divide o texto usando regras específicas de idioma.

Opções

maxTokenLength (tipo: int) — o comprimento máximo do token, padrão: 255, máximo: 300. Tokens maiores do que o tamanho máximo são divididos. Tokens mais longos que 300 caracteres são divididos em tokens de 300 caracteres, e estes são divididos de acordo com o maxTokenLength definido.

isSearchTokenizer (tipo: booliano) – Defina como true se for usado como o criador de token de pesquisa ou defina como false se for usado como o criador de token de indexação.

language (tipo: cadeia de caracteres) – idioma a ser usado, o padrão é english. Entre os valores permitidos estão:
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 o texto usando regras específicas de idioma e reduz palavras para seus formulários base. Esse gerador de token executa a lematização.

Opções

maxTokenLength (tipo: int) — o comprimento máximo do token, padrão: 255, máximo: 300. Tokens maiores do que o tamanho máximo são divididos. Tokens mais longos que 300 caracteres são divididos em tokens de 300 caracteres, e estes são divididos de acordo com o maxTokenLength definido.

isSearchTokenizer (tipo: booliano) – Defina como true se for usado como o criador de token de pesquisa ou defina como false se for usado como o criador de token de indexação.

language (tipo: cadeia de caracteres) – idioma a ser usado, o padrão é english. Entre os valores permitidos estão:
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 Cria tokens de entrada em n-gramas de determinados tamanhos.

Opções

minGram (tipo: int) – Padrão: 1, máximo: 300.

maxGram (tipo: int) – Padrão: 2, máximo 300. Deve ser maior que minGram.

tokenChars (tipo: matriz de cadeia de caracteres) – Classes de caracteres para manter nos tokens. Valores permitidos: letter, digit, whitespace, punctuation, symbol. O padrão é uma matriz vazia, mantém todos os caracteres.
path_hierarchy_v2 PathHierarchyTokenizerV2 Criador de token para hierarquias de caminho. Opções

delimiter (tipo: cadeia de caracteres) — padrão: '/.

replacement (tipo: cadeia de caracteres) – Se definido, substitui o caractere delimitador. Tem como padrão o mesmo valor do delimitador.

maxTokenLength (tipo: int) – O comprimento máximo do token. Padrão: 300, máximo: 300. Caminhos mais longos que o maxTokenLength são ignorados.

reverse (tipo: booliano) – Se for true, gera o token na ordem inversa. Padrão: falso.

skip (tipo: booliano) – Tokens iniciais a ignorar. O padrão é 0.
pattern PatternTokenizer Este criador de token usa a correspondência de padrões de regex para criar tokens distintos.

Opções

padrão (tipo: cadeia de caracteres) — padrão da expressão regular para corresponder separadores de token. O padrão é \W+, que corresponde a caracteres que não são palavras.

flags (tipo: cadeia de caracteres) – Sinalizadores de expressão regular. O padrão é uma cadeia de caracteres vazia. Os valores permitidos são: CANON_EQ, CASE_INSENSITIVE, COMMENTS, DOTALL, LITERAL, MULTILINE, UNICODE_CASE, UNIX_LINES

group (tipo: int) — qual grupo extrair em tokens. O padrão é -1 (divisão).
standard_v2 StandardTokenizerV2 Quebra o texto seguindo as regras de Segmentação de Texto Unicode.

Opções

maxTokenLength (tipo: int) – O comprimento máximo do token. Padrão: 255, Máximo: 300. Tokens maiores do que o tamanho máximo são divididos.
uax_url_email UaxUrlEmailTokenizer Cria tokens de urls e emails como um único token.

Opções

maxTokenLength (tipo: int) – O comprimento máximo do token. Padrão: 255, Máximo: 300. Tokens maiores do que o tamanho máximo são divididos.
whitespace (o tipo aplica-se somente quando há opções disponíveis) Divide o texto em espaços em branco. Os tokens com mais de 255 caracteres são divididos.

1 Tipos do gerador de token sempre são prefixados no código com #Microsoft.Azure.Search de modo que ClassicTokenizer de fato seja especificado como #Microsoft.Azure.Search.ClassicTokenizer. Removemos o prefixo para reduzir a largura da tabela, mas lembre-se de incluí-lo em seu código. Observe que tokenizer_type é fornecido apenas para criadores de token que podem ser personalizados. Se não há opções, como é o caso do criador de token de letra, não há nenhum tipo associado do # Microsoft.Azure.Search.

Filtros de token

Um filtro de token é usado para filtrar ou modificar os tokens gerados por um criador de token. Por exemplo, você pode especificar um filtro de minúsculas que converte todos os caracteres em letras minúsculas. Você pode ter vários filtros de token em um analisador personalizado. Os filtros de token são executados na ordem em que estão listados.

Na tabela abaixo, os filtros de token que são implementados usando o Apache Lucene têm links para a documentação da API Lucene.

token_filter_name token_filter_type 1 Descrição e opções
arabic_normalization (o tipo aplica-se somente quando há opções disponíveis) Um filtro de token que aplica o normalizador em árabe para normalizar a ortografia.
apostrophe (o tipo aplica-se somente quando há opções disponíveis) Remove todos os caracteres após um apóstrofo (incluindo o próprio apóstrofo).
asciifolding AsciiFoldingTokenFilter Converte caracteres Unicode alfabéticos, numéricos e simbólicos que não estão nos primeiros 127 caracteres ASCII (o bloco Unicode Basic Latin) em seus equivalentes ASCII, se existirem.

Opções

preserveOriginal (tipo: bool) — se true, o token original é mantido. O padrão é false.
cjk_bigram CjkBigramTokenFilter Forma bigramas de termos CJK que são gerados a partir do StandardTokenizer.

Opções

ignoreScripts (tipo: matriz de cadeia de caracteres) – scripts a ignorar. Entre os valores permitidos estão: han, hiragana, katakana, hangul. O padrão é uma lista vazia.

outputUnigrams (tipo: bool) — defina como true se você sempre quer gerar unigramas e bigramas. O padrão é false.
cjk_width (o tipo aplica-se somente quando há opções disponíveis) Normaliza as diferenças de largura CJK. Transforma variantes ASCII de largura completa em variantes básicas equivalentes de latim e meia largura Katakana no kana equivalente.
clássico (o tipo aplica-se somente quando há opções disponíveis) Remove os possessivos ingleses e os pontos das siglas.
common_grams CommonGramTokenFilter Construa bigramas para termos que ocorrem com frequência durante a indexação. Termos únicos ainda são indexados também, com bigramas sobrepostos.

Opções

commonWords (tipo: matriz de cadeia de caracteres) — o conjunto de palavras comuns. O padrão é uma lista vazia. Obrigatório.

ignoreCase (tipo: bool) — se true, a correspondência não diferencia maiúsculas e minúsculas. O padrão é false.

queryMode (tipo: bool) — gera bigramas, em seguida, remove palavras comuns e termos simples seguidos por uma palavra comum. O padrão é false.
dictionary_decompounder DictionaryDecompounderTokenFilter Decompõe palavras compostas encontradas em muitos idiomas germânicos.

Opções

wordList (tipo: cadeia de caracteres) — lista de palavras para correspondência. O padrão é uma lista vazia. Obrigatório.

minWordSize (tipo: int) – apenas palavras mais longas que isso serão processadas. O padrão é 5.

minSubwordSize (tipo: int) – apenas subpalavras maiores que isso serão geradas. O padrão é 2.

maxSubwordSize (tipo: int) – apenas subpalavras mais curtas que isso serão geradas. O padrão é 15.

onlyLongestMatch (tipo: bool) — adicione somente a maior correspondência de subpalavra para saída. O padrão é false.
edgeNGram_v2 EdgeNGramTokenFilterV2 Gera n-gramas de determinados tamanhos começando do início ou do fim de um token de entrada.

Opções

minGram (tipo: int) – Padrão: 1, máximo: 300.

maxGram (tipo: int) – Padrão: 2, máximo 300. Deve ser maior que minGram.

side (tipo: cadeia de caracteres) — especifica de que lado da entrada o n-grama deve ser gerado. Valores permitidos: front e back
elision ElisionTokenFilter Remove elisões. Por exemplo, l'avion (o plano) é convertido em avion (plano).

Opções

articles (tipo: matriz de cadeia de caracteres) — um conjunto de artigos a remover. O padrão é uma lista vazia. Se não houver uma lista de artigos definidos, por padrão, todos os artigos em francês serão removidos.
german_normalization (o tipo aplica-se somente quando há opções disponíveis) Normaliza caracteres alemães de acordo com as heurísticas do algoritmo german2.
hindi_normalization (o tipo aplica-se somente quando há opções disponíveis) Normaliza o texto em hindi para remover algumas diferenças nas variações ortográficas.
indic_normalization IndicNormalizationTokenFilter Normaliza a representação Unicode do texto nos idiomas indianos.
keep KeepTokenFilter Um filtro de token que mantém apenas tokens com texto contido na lista especificada de palavras.

Opções

keepWords (tipo: cadeia de caracteres) — uma lista de palavras a manter. O padrão é uma lista vazia. Obrigatório.

keepWordsCase (tipo: bool) — se true, muda para minúsculas todas as palavras primeiro. O padrão é false.
keyword_marker KeywordMarkerTokenFilter Marca termos como palavras-chave.

Opções

keywords (tipo: cadeia de caracteres) — uma lista de palavras para marcar como palavras-chave. O padrão é uma lista vazia. Obrigatório.

ignoreCase (tipo: bool) — se true, muda para minúsculas todas as palavras primeiro. O padrão é false.
keyword_repeat (o tipo aplica-se somente quando há opções disponíveis) Emite cada token de entrada duas vezes: uma vez como palavra-chave e uma vez como não palavra-chave.
kstem (o tipo aplica-se somente quando há opções disponíveis) Um filtro kstem de alto desempenho para inglês.
length LengthTokenFilter Remove palavras muito longas ou muito curtas.

Opções

min (tipo: int) — o número mínimo. Padrão: 0, máximo: 300.

max (tipo: int) — o número máximo. Padrão: 300, máximo: 300.
limite Microsoft.Azure.Search.LimitTokenFilter Limita o número de tokens durante a indexação.

Opções

maxTokenCount (tipo: int) — número máximo de tokens a produzir. O padrão é 1.

consumeAllTokens (tipo: bool) — se todos os tokens da entrada devem ser consumidos, mesmo se maxTokenCount for atingido. O padrão é false.
lowercase (o tipo aplica-se somente quando há opções disponíveis) Normaliza o texto do token para letras minúsculas.
nGram_v2 NGramTokenFilterV2 Gera n-gramas de determinados tamanhos.

Opções

minGram (tipo: int) – Padrão: 1, máximo: 300.

maxGram (tipo: int) – Padrão: 2, máximo 300. Deve ser maior que minGram.
pattern_capture PatternCaptureTokenFilter Usa regexes Java para emitir vários tokens, um para cada grupo de captura em um ou mais padrões.

Opções

patterns (ttipo: cadeia de caracteres) — uma lista de padrões para combinar com cada token. Obrigatório.

preserveOriginal (tipo: bool) — defina como true para retornar o token original, mesmo que um dos padrões corresponda, padrão: true
pattern_replace PatternReplaceTokenFilter Um filtro de token que aplica um padrão a cada token no fluxo, substituindo as ocorrências de correspondência pela cadeia de caracteres de substituição especificada.

Opções

pattern (tipo: cadeia de caracteres) — obrigatório.

replacement (tipo: cadeia de caracteres) – Obrigatório.
persian_normalization (o tipo aplica-se somente quando há opções disponíveis) Aplica a normalização para persa.
phonetic PhoneticTokenFilter Crie tokens para correspondências fonéticas.

Opções

encoder (tipo: cadeia de caracteres) — codificador fonético a ser usado. Entre os valores permitidos estão: metaphone, doubleMetaphone, soundex, refinedSoundex, caverphone1, caverphone2, cologne, nysiis, koelnerPhonetik, haasePhonetik, beiderMorse. Padrão: metaphone. O padrão é "metaphone".

Confira encoder para obter mais informações.

replace (tipo: bool) — true se os tokens codificados devem substituir os tokens originais, false se eles devem ser adicionados como sinônimos. O padrão é true.
porter_stem (o tipo aplica-se somente quando há opções disponíveis) Transforma o fluxo de token conforme o Algoritmo de stemming de Porter.
reverse (o tipo aplica-se somente quando há opções disponíveis) Inverte a cadeia de caracteres do token.
scandinavian_normalization (o tipo aplica-se somente quando há opções disponíveis) Normaliza o uso de caracteres escandinavos intercambiáveis.
scandinavian_folding (o tipo aplica-se somente quando há opções disponíveis) Dobra caracteres escandinavos åÅäæÄÆ em a e öÖøØ em o. Também discrimina o uso de vogais duplas aa, ae, ao, oe e oo, deixando apenas a primeira.
shingle ShingleTokenFilter Cria combinações de tokens como um único token.

Opções

maxShingleSize (tipo: int) — o padrão é 2.

minShingleSize (tipo: int) — o padrão é 2.

outputUnigrams (tipo: bool) — se true, o fluxo de saída contém os tokens de entrada (unigramas), bem como shingles. O padrão é true.

outputUnigramsIfNoShingles (tipo: bool) — se true, substitui o comportamento outputUnigrams==false para aqueles momentos em que não existem shingles disponíveis. O padrão é false.

tokenSeparator (tipo: cadeia de caracteres) — a cadeia de caracteres a ser usada ao unir os tokens adjacentes para formar um shingle. O padrão é um espaço vazio único.

filterToken (tipo: cadeia de caracteres) — a cadeia de caracteres a ser inserida para cada posição na qual não há token. O padrão é _.
snowball SnowballTokenFilter Filtro Snowball Token.

Opções

language (tipo: cadeia de caracteres) – entre os valores permitidos estão: armenian, basque, catalan, danish, dutch, english, finnish, french, german, german2, hungarian, italian, kp, lovins, norwegian, porter, portuguese, romanian, russian, spanish, swedish, turkish
sorani_normalization SoraniNormalizationTokenFilter Normaliza a representação Unicode de texto Sorani.

Opções

Nenhum.
stemmer StemmerTokenFilter Filtro de lematização específica de idioma.

Opções

language (tipo: cadeia de caracteres) — entre os valores permitidos estão:
- 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 Quaisquer termos com base no dicionário são marcados como palavras-chave, o que evita a lematização da cadeia. Deve ser colocado antes de qualquer filtro de lematização.

Opções

rules (tipo: matriz de cadeia de caracteres) – Regras de lematização no seguinte formato word => stem por exemplo ran => run. O padrão é uma lista vazia. Obrigatório.
palavras irrelevantes StopwordsTokenFilter Remove palavras irrelevantes de um fluxo de tokens. Por padrão, o filtro usa uma lista de palavras irrelevantes predefinida para inglês.

Opções

stopwords (tipo: matriz de cadeia de caracteres) – Uma lista de palavras irrelevantes. Não pode ser especificado se a opção stopwordsList for especificada.

stopwordsList (tipo: matriz de cadeia de caracteres) — uma lista predefinida de palavras irrelevantes. Não será possível especificar se stopwords estiver especificado. Entre os valores permitidos estão: 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, padrão: english. Não será possível especificar se stopwords estiver especificado.

ignoreCase (tipo: bool) — se true, primeiro todas as palavras são alteradas para minúsculas. O padrão é false.

removeTrailing (tipo: bool) — se true, ignora o último termo de pesquisa se for uma palavra irrelevante. O padrão é true.
synonym SynonymTokenFilter Corresponde sinônimos de palavras simples ou múltiplas em um fluxo de token.

Opções

synonyms (tipo: cadeia de caracteres) — obrigatório. Lista de sinônimos em um dos dois formatos a seguir:

–incrível, inacreditável, fabuloso => maravilhoso – todos os termos no lado esquerdo do símbolo => são substituídos por todos os termos do lado direito.

-incrível, inacreditável, fabuloso, maravilhoso — uma lista separada por vírgulas de palavras equivalentes. Defina a opção de expansão para alterar como essa lista é interpretada.

ignoreCase (tipo: bool) — entrada e maiúscula/minúscula para correspondência. O padrão é false.

expand (tipo: booliano) – Se for true, todas as palavras na lista de sinônimos (se a notação => não for usada) serão mapeadas umas às outras.
A seguinte lista: incrível, inacreditável, fabuloso, maravilhoso é equivalente a: incrível, inacreditável, fabuloso, maravilhoso => incrível, inacreditável, fabuloso, maravilhoso

– Se for false, a seguinte lista: incrível, inacreditável, fabuloso, maravilhoso será equivalente a: incrível, inacreditável, fabuloso, maravilhoso => incrível.
cortar (o tipo aplica-se somente quando há opções disponíveis) Corta o espaço em branco à esquerda e à direita de uma cadeia de tokens.
truncar TruncateTokenFilter Trunca os termos em um comprimento específico.

Opções

comprimento (tipo: int) – Padrão: 300, máximo: 300. Obrigatório.
unique UniqueTokenFilter Filtra os tokens com o mesmo texto como o token anterior.

Opções

onlyOnSamePosition (tipo: bool) — se definido, remova duplicatas apenas na mesma posição. O padrão é true.
uppercase (o tipo aplica-se somente quando há opções disponíveis) Normaliza o texto do token para letras maiúsculas.
word_delimiter WordDelimiterTokenFilter Divide as palavras em subpalavras e realiza transformações opcionais em grupos de subpalavras.

Opções

generateWordParts (tipo: bool) - Faz com que partes de palavras sejam geradas, por exemplo, AzureSearch se torna Azure Search. O padrão é true.

generateNumberParts (tipo: bool) — faz com que subpalavras de números sejam geradas. O padrão é true.

catenateWords (tipo: bool) – faz com que as execuções máximas de partes de palavra sejam unidas, por exemplo, Azure-Search se torna AzureSearch. O padrão é false.

catenateNumbers (tipo: bool) – faz com que execuções máximas de número de blocos sejam unidas, por exemplo 1-2 se torna 12. O padrão é false.

catenateAll (tipo: bool) – faz com que todas as partes da subpalavra sejam unidas, por exemplo, Azure-Search-1 se torna AzureSearch1. O padrão é false.

splitOnCaseChange (tipo: bool) - Se verdadeiro, divide as palavras na caseChange, por exemplo, AzureSearch se torna Azure Search. O padrão é true.

preserveOriginal — faz com que as palavras originais sejam preservadas e adicionadas à lista de subpalavras. O padrão é false.

splitOnNumerics (tipo: bool) - Se verdadeiro, divide em números, por exemplo, Azure1Search se torna Azure 1 Search. O padrão é true.

stemEnglishPossessive (tipo: bool) – faz com que o 's à direita seja removido em cada subpalavra. O padrão é true.

protectedWords (tipo: cadeia de caracteres) — tokens a proteger contra a delimitação. O padrão é uma lista vazia.

1 Tipos de filtro de token sempre são prefixados no código com #Microsoft.Azure.Search de modo que ArabicNormalizationTokenFilter de fato seja especificado como #Microsoft.Azure.Search.ArabicNormalizationTokenFilter. Removemos o prefixo para reduzir a largura da tabela, mas lembre-se de incluí-lo em seu código.

Confira também