Adicionar analisadores personalizados a campos de cadeia de caracteres em um índice do Azure AI Search
Um analisador personalizado é uma combinação definida pelo usuário de um tokenizador, um ou mais filtros de token e um ou mais filtros de caracteres. Um analisador personalizado é especificado dentro de um índice de pesquisa e, em seguida, referenciado pelo nome em 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 que ele seja processado pelo tokenizador (por exemplo, removendo marcação). Em seguida, o tokenizador divide o texto em tokens. Finalmente, os filtros de token modificam os tokens emitidos pelo tokenizador. Para obter conceitos e exemplos, consulte Analisadores no Azure AI 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 invocar e a ordem em que eles ocorrem.
Crie e atribua um analisador personalizado se nenhum dos analisadores padrão (Standard Lucence), incorporados ou de idioma for suficiente para suas necessidades. Você também pode criar um analisador personalizado se quiser usar um analisador interno com opções personalizadas. Por exemplo, se você quisesse alterar o maxTokenLength no Standard, 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:
Usando 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 em como uma palavra soa, não como ela está escrita.
Desative a análise lexical. Use o Analisador de palavras-chave para criar campos pesquisáveis que não são analisados.
Pesquisa rápida de prefixos/sufixos. Adicione o filtro de token Edge N-gram aos prefixos de índice de palavras para permitir a correspondência rápida de prefixos. Combine-o com o filtro de token reverso para fazer a correspondência de sufixos.
Tokenização personalizada. Por exemplo, use o tokenizador de espaço em branco para dividir frases em tokens usando espaço em branco como delimitador
Dobragem ASCII. Adicione o filtro de dobragem ASCII padrão para normalizar diacríticos como ö ou ê em termos de pesquisa.
Nota
Os analisadores personalizados não são expostos no portal do Azure. A única maneira de adicionar um analisador personalizado é através do código que define um índice.
Criar um analisador personalizado
Para criar um analisador personalizado, especifique-o analyzers
na seção de um índice em tempo de design e, em seguida, faça referência a ele em campos pesquisáveis Edm.String
usando a analyzer
propriedade ou o indexAnalyzer
par e searchAnalyzer
.
Uma definição de analisador inclui um nome, tipo, um ou mais filtros de caracteres, um máximo de um tokenizador e um ou mais filtros de token para processamento pós-tokenização. Os filtros de caracteres são aplicados antes da tokenização. 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 qualquer um dos analisadores, tokenizadores, filtros de token ou filtros de caracteres internos. Deve conter apenas letras, dígitos, espaços, traços ou sublinhados, só pode começar e terminar 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 da tokenização, na ordem fornecida. Alguns filtros de caracteres têm opções, que podem ser definidas em umacharFilters
seção. Os filtros de caracteres são opcionais.tokenizer
é exatamente um Tokenizer. É necessário um valor. Se precisar de mais de um tokenizador, você pode criar vários analisadores personalizados e atribuí-los campo a campo em seu esquema de índice.tokenFilters
pode ser um ou mais filtros de Filtros de Token, processados após a tokenização, na ordem fornecida. Para filtros de token com opções, adicione umatokenFilter
seção para especificar a configuração. Os filtros de token são opcionais.
Os analisadores não devem produzir tokens com mais de 300 caracteres, ou a indexação falhará. Para cortar token longo ou excluí-los, use o TruncateTokenFilter e o LengthTokenFilter , respectivamente. Consulte Filtros de token 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 vai 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 char, tokenizadores e filtros de token são adicionadas ao índice somente se você estiver definindo opções personalizadas. Para usar um filtro ou tokenizador existente no estado em que se encontra, especifique-o pelo nome na definição do analisador. Para obter mais informações, consulte Criar índice (REST). Para obter mais exemplos, consulte Adicionar analisadores no Azure AI Search.
Testar analisadores personalizados
Você pode usar o Test Analyzer (REST) para ver como um analisador divide determinado texto em tokens.
Pedir
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 tokenizador, um filtro de token ou um filtro de caracteres é definido, ele não pode ser modificado. Novos podem ser adicionados a um índice existente somente se o allowIndexDowntime
sinalizador 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 coloca o índice offline por pelo menos alguns segundos, fazendo com que as solicitações de indexação e consulta falhem. O desempenho e a disponibilidade de gravação do índice podem ser prejudicados por vários minutos após a atualização do índice, ou por mais tempo para índices muito grandes, mas esses efeitos são temporários e, eventualmente, resolvem por conta própria.
Analisadores integrados
Se você quiser usar um analisador interno com opções personalizadas, criar um analisador personalizado é o mecanismo pelo qual você especifica essas opções. Por outro lado, para usar um analisador interno no estado em que se encontra, 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 apenas quando as opções estão disponíveis) | Trata todo o conteúdo de um campo como um único token. Isso é útil para dados como códigos postais, IDs e alguns nomes de produtos. |
padrão | Analisador de padrões | Separa o texto de forma flexível em termos através de um padrão de expressão regular. Opções minúsculas (tipo: bool) - Determina se os termos são minúsculos. O padrão é true. pattern (type: string) - 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 (type: string) - Sinalizadores de expressão regular. O padrão é uma cadeia de caracteres vazia. Valores permitidos: CANON_EQ, CASE_INSENSITIVE, COMMENTS, DOTALL, LITERAL, MULTILINE, UNICODE_CASE, UNIX_LINES stopwords (type: string array) - Uma lista de stopwords. O padrão é uma lista vazia. |
simples | (o tipo aplica-se apenas quando as opções estão disponíveis) | Divide o texto em letras não escritas e converte-as em minúsculas. |
padrão (Também referido como standard.lucene) |
Analisador padrão | Analisador Lucene padrão, composto pelo tokenizador padrão, filtro minúsculo e filtro stop. Opções maxTokenLength (type: int) - O comprimento máximo do token. O padrão é 255. Tokens maiores que o comprimento máximo são divididos. O comprimento máximo do token que pode ser usado é de 300 caracteres. stopwords (type: string array) - Uma lista de stopwords. O padrão é uma lista vazia. |
standardasciifolding.lucene | (o tipo aplica-se apenas quando as opções estão disponíveis) | Analisador padrão com filtro dobrável ASCII. |
parar | StopAnalyzer | Divide o texto em letras não-letras, aplica os filtros de token de minúsculas e palavras-chave. Opções stopwords (type: string array) - Uma lista de stopwords. O padrão é uma lista predefinida para inglês. |
espaço em branco | (o tipo aplica-se apenas quando as opções estão disponíveis) | Um analisador que usa o tokenizador de espaço em branco. Os tokens com mais de 255 caracteres são divididos. |
1 Os tipos de analisador são sempre prefixados em código com #Microsoft.Azure.Search
tal que PatternAnalyzer
seria realmente especificado como #Microsoft.Azure.Search.PatternAnalyzer
. Removemos o prefixo por brevidade, mas o prefixo é necessário no seu código.
O analyzer_type é fornecido apenas para analisadores que podem ser personalizados. Se não houver opções, como é o caso do analisador de palavras-chave, não há nenhum tipo #Microsoft.Azure.Search associado.
Filtros de caracteres
Os filtros de caracteres adicionam processamento antes que uma cadeia de caracteres chegue ao tokenizador.
O Azure AI Search dá suporte a filtros de caracteres na lista a seguir. Mais informações sobre cada um deles 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 apenas quando as opções estão disponíveis) | Um filtro char que tenta remover construções HTML. |
mapeamento | MapeamentoCharFilter | Um filtro char que aplica mapeamentos definidos com a opção mapeamentos. A correspondência é gananciosa (a correspondência de padrão mais longa em um determinado ponto vence). A substituição pode ser a cadeia de caracteres vazia. Opções mapeamentos (tipo: matriz de cadeia de caracteres) - Uma lista de mapeamentos do seguinte formato: a=>b (todas as ocorrências do caractere a são substituídas por caractere b ). Obrigatório. |
pattern_replace | PatternReplaceCharFilter | Um filtro char que substitui caracteres na cadeia de caracteres 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 a serem substituídos. Por exemplo, texto de entrada = aa bb aa bb , padrão =(aa)\\\s+(bb) substituição =$1#$2 , resultado = aa#bb aa#bb . Opções pattern (type: string) - Obrigatório. substituição (tipo: string) - Obrigatório. |
1 Os tipos de filtro Char são sempre prefixados em código com #Microsoft.Azure.Search
tal que MappingCharFilter
seria realmente especificado como #Microsoft.Azure.Search.MappingCharFilter
. Removemos o prefixo para reduzir a largura da tabela, mas lembre-se de incluí-lo no seu código. Observe que char_filter_type é fornecido apenas para filtros que podem ser personalizados. Se não houver opções, como é o caso do html_strip, não haverá nenhum tipo #Microsoft.Azure.Search associado.
Tokenizadores
Um tokenizador divide o texto contínuo em uma sequência de tokens, como quebrar uma frase em palavras ou uma palavra em formas de raiz.
O Azure AI Search dá suporte a tokenizadores na lista a seguir. Mais informações sobre cada um deles podem ser encontradas na referência da API Lucene.
tokenizer_name | tokenizer_type 1 | Descrição e Opções |
---|---|---|
clássico | ClassicTokenizer | Tokenizador baseado em gramática que é adequado para processar a maioria dos documentos em língua europeia. Opções maxTokenLength (type: int) - O comprimento máximo do token. Padrão: 255, máximo: 300. Tokens maiores que o comprimento máximo são divididos. |
edgeNGram | EdgeNGramTokenizer | Tokeniza a entrada de uma borda em n-gramas de determinado tamanho(s). 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 (type: string array) - 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 | Palavra-chaveTokenizerV2 | Emite toda a entrada como um único token. Opções maxTokenLength (type: int) - O comprimento máximo do token. Padrão: 256, máximo: 300. Tokens maiores que o comprimento máximo são divididos. |
carta | (o tipo aplica-se apenas quando as opções estão disponíveis) | Divide o texto em letras não-letras. Os tokens com mais de 255 caracteres são divididos. |
minúsculas | (o tipo aplica-se apenas quando as opções estão disponíveis) | Divide o texto em letras não escritas e converte-as em minúsculas. Os tokens com mais de 255 caracteres são divididos. |
microsoft_language_tokenizer | MicrosoftLanguageTokenizer | Divide o texto usando regras específicas do idioma. Opções maxTokenLength (type: int) - O comprimento máximo do token, padrão: 255, máximo: 300. Tokens maiores que o comprimento máximo são divididos. Tokens com mais de 300 caracteres são primeiro divididos em tokens de comprimento 300 e, em seguida, cada um desses tokens é dividido com base no conjunto maxTokenLength. isSearchTokenizer (type: bool) - Definido como true se usado como o tokenizador de pesquisa, definido como false se usado como o tokenizador de indexação. language (type: string) - Idioma a ser usado, padrão english . Os valores permitidos incluem: bangla , , , , , croatian polish french german greek english hindi gujarati icelandic indonesian italian portugueseBrazilian portuguese norwegianBokmaal punjabi marathi malayalam malay romanian korean kannada japanese russian dutch czech ukrainian swedish thai serbianLatin slovenian spanish telugu urdu danish tamil chineseTraditional serbianCyrillic chineseSimplified catalan bulgarian vietnamese |
microsoft_language_stemming_tokenizer | MicrosoftLanguageStemmingTokenizer | Divide o texto usando regras específicas do idioma e reduz as palavras às suas formas base. Este tokenizador realiza lemmatização. Opções maxTokenLength (type: int) - O comprimento máximo do token, padrão: 255, máximo: 300. Tokens maiores que o comprimento máximo são divididos. Tokens com mais de 300 caracteres são primeiro divididos em tokens de comprimento 300 e, em seguida, cada um desses tokens é dividido com base no conjunto maxTokenLength. isSearchTokenizer (type: bool) - Definido como true se usado como o tokenizador de pesquisa, definido como false se usado como o tokenizador de indexação. language (type: string) - Idioma a ser usado, padrão english . Os valores permitidos incluem: arabic , , , , , czech norwegianBokmaal finnish french german greek gujarati hebrew estonian hungarian hindi icelandic indonesian italian portugueseBrazilian portuguese polish punjabi marathi malayalam malay romanian lithuanian latvian kannada russian english danish turkish spanish telugu serbianLatin slovak slovenian tamil ukrainian dutch swedish croatian serbianCyrillic catalan bulgarian bangla urdu |
nGram | NGramTokenizer | Tokeniza a entrada em n-gramas do(s) tamanho(s) fornecido(s). 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 (type: string array) - 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 | Tokenizador para hierarquias semelhantes a caminhos. Opções delimitador (tipo: string) - Padrão: '/. replacement (type: string) - Se definido, substitui o caractere delimitador. Padrão igual ao valor do delimitador. maxTokenLength (type: int) - O comprimento máximo do token. Padrão: 300, máximo: 300. Caminhos maiores que maxTokenLength são ignorados. reverse (type: bool) - Se verdadeiro, gera token em ordem inversa. Predefinição: false. skip (type: bool) - Tokens iniciais para pular. A predefinição é 0. |
padrão | PatternTokenizer | Este tokenizador usa a correspondência de padrões regex para construir tokens distintos. Opções pattern (type: string) - 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 (type: string) - Sinalizadores de expressão regular. O padrão é uma cadeia de caracteres vazia. Valores permitidos: CANON_EQ, CASE_INSENSITIVE, COMMENTS, DOTALL, LITERAL, MULTILINE, UNICODE_CASE, UNIX_LINES group (type: 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 (type: int) - O comprimento máximo do token. Padrão: 255, máximo: 300. Tokens maiores que o comprimento máximo são divididos. |
uax_url_email | UaxUrlEmailTokenizer | Tokeniza urls e e-mails como um token. Opções maxTokenLength (type: int) - O comprimento máximo do token. Padrão: 255, máximo: 300. Tokens maiores que o comprimento máximo são divididos. |
espaço em branco | (o tipo aplica-se apenas quando as opções estão disponíveis) | Divide o texto no espaço em branco. Os tokens com mais de 255 caracteres são divididos. |
1 Os tipos de tokenizador são sempre prefixados em código com #Microsoft.Azure.Search
tal que ClassicTokenizer
seria realmente especificado como #Microsoft.Azure.Search.ClassicTokenizer
. Removemos o prefixo para reduzir a largura da tabela, mas lembre-se de incluí-lo no seu código. Observe que tokenizer_type é fornecido apenas para tokenizadores que podem ser personalizados. Se não houver opções, como é o caso do tokenizador de letras, não haverá nenhum tipo #Microsoft.Azure.Search associado.
Filtros de token
Um filtro de token é usado para filtrar ou modificar os tokens gerados por um tokenizador. Por exemplo, você pode especificar um filtro minúsculo que converta todos os caracteres em 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 são listados.
Na tabela abaixo, os filtros de token implementados usando o Apache Lucene estão vinculados à documentação da API do Lucene.
token_filter_name | token_filter_type 1 | Descrição e Opções |
---|---|---|
arabic_normalization | (o tipo aplica-se apenas quando as opções estão disponíveis) | Um filtro simbólico que aplica o normalizador árabe para normalizar a ortografia. |
apóstrofo | (o tipo aplica-se apenas quando as opções estão disponíveis) | Tira 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 Basic Latin bloco Unicode) em seus equivalentes ASCII, se existirem.Opções preserveOriginal (tipo: bool) - Se verdadeiro, 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 (type: string array) - Scripts a serem ignorados. Os valores permitidos incluem: han , hiragana , katakana , hangul . O padrão é uma lista vazia.outputUnigrams (type: bool) - Defina como true se você sempre quiser produzir unigramas e bigramas. O padrão é false. |
cjk_width | (o tipo aplica-se apenas quando as opções estão disponíveis) | Normaliza as diferenças de largura do CJK. Dobra variantes ASCII de largura total no latim básico equivalente e variantes Katakana de meia largura no kana equivalente. |
clássico | (o tipo aplica-se apenas quando as opções estão disponíveis) | Remove os possessivos em inglês e os pontos das siglas. |
common_grams | CommonGramTokenFilter | Construa bigramas para termos frequentes durante a indexação. Os termos isolados também continuam indexados, com bigramas sobrepostos. Opções commonWords (type: string array) - O conjunto de palavras comuns. O padrão é uma lista vazia. Obrigatório. ignoreCase (tipo: bool) - Se verdadeiro, a correspondência não diferencia maiúsculas de minúsculas. O padrão é false. queryMode (tipo: bool) - Gera bigramas e remove palavras comuns e termos únicos seguidos de uma palavra comum. O padrão é false. |
dictionary_decompounder | DicionárioDecompounderTokenFilter | Decompõe palavras compostas encontradas em muitas línguas germânicas. Opções wordList (type: string array) - A lista de palavras contra as quais corresponder. O padrão é uma lista vazia. Obrigatório. minWordSize (type: int) - Apenas palavras com mais tempo do que isso serão processadas. A predefinição é 5. minSubwordSize (type: int) - Somente subpalavras maiores do que isso serão produzidas. A predefinição é 2. maxSubwordSize (type: int) - Somente subpalavras mais curtas do que isso serão produzidas. A predefinição é 15. onlyLongestMatch (tipo: bool) - Adicione apenas a subpalavra correspondente mais longa à saída. O padrão é false. |
edgeNGram_v2 | EdgeNGramTokenFilterV2 | Gera n-gramas do(s) tamanho(s) determinado(s) a partir da frente ou do verso 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 (type: string) - Especifica de que lado da entrada o n-grama deve ser gerado. Valores permitidos: front , back |
elisão | ElisionTokenFilter | Remove elisões. Por exemplo, l'avion (o plano) é convertido em avion (plano).Opções articles (type: string array) - Um conjunto de artigos a remover. O padrão é uma lista vazia. Se não houver uma lista de artigos definida, por padrão, todos os artigos franceses serão removidos. |
german_normalization | (o tipo aplica-se apenas quando as opções estão disponíveis) | Normaliza caracteres alemães de acordo com a heurística do algoritmo de bola de neve German2. |
hindi_normalization | (o tipo aplica-se apenas quando as opções estão 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 de texto em idiomas indianos. |
manter | KeepTokenFilter | Um filtro de token que mantém apenas tokens com texto contido na lista especificada de palavras. Opções keepWords (type: string array) - Uma lista de palavras a serem mantidas. O padrão é uma lista vazia. Obrigatório. keepWordsCase (tipo: bool) - Se verdadeiro, minúsculas todas as palavras primeiro. O padrão é false. |
keyword_marker | KeywordMarkerTokenFilter | Marca termos como palavras-chave. Opções keywords (type: string array) - Uma lista de palavras para marcar como palavras-chave. O padrão é uma lista vazia. Obrigatório. ignoreCase (tipo: bool) - Se verdadeiro, minúsculas todas as palavras primeiro. O padrão é false. |
keyword_repeat | (o tipo aplica-se apenas quando as opções estão disponíveis) | Emite cada token recebido duas vezes, uma vez como palavra-chave e uma vez como não-palavra-chave. |
KSTEM | (o tipo aplica-se apenas quando as opções estão disponíveis) | Um filtro de alto desempenho kstem para inglês. |
length | LengthTokenFilter | Remove palavras muito longas ou 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. |
limit | 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. A predefinição é 1. consumeAllTokens (type: bool) - Se todos os tokens da entrada devem ser consumidos, mesmo que maxTokenCount seja atingido. O padrão é false. |
minúsculas | (o tipo aplica-se apenas quando as opções estão disponíveis) | Normaliza o texto do token para minúsculas. |
nGram_v2 | NGramTokenFilterV2 | Gera n-gramas do(s) tamanho(s) fornecido(s). 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 (type: string array) - Uma lista de padrões a serem correspondidos a cada token. Obrigatório. preserveOriginal (type: bool) - Defina como true para retornar o token original mesmo que um dos padrões corresponda, default: true |
pattern_replace | PatternReplaceTokenFilter | Um filtro de token que aplica um padrão a cada token no fluxo, substituindo ocorrências de correspondência pela cadeia de caracteres de substituição especificada. Opções pattern (type: string) - Obrigatório. substituição (tipo: string) - Obrigatório. |
persian_normalization | (o tipo aplica-se apenas quando as opções estão disponíveis) | Aplica normalização para persa. |
fonética | PhoneticTokenFilter | Crie tokens para correspondências fonéticas. Opções codificador (tipo: string) - Codificador fonético a ser usado. Os valores permitidos incluem: metaphone , doubleMetaphone , soundex , refinedSoundex , caverphone1 , caverphone2 , cologne , nysiis , koelnerPhonetik , beiderMorse haasePhonetik , . Padrão: metaphone . O padrão é metafone.Consulte o codificador para obter mais informações. replace (type: 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 apenas quando as opções estão disponíveis) | Transforma o fluxo de token de acordo com o algoritmo de derivação de Porter. |
reverse | (o tipo aplica-se apenas quando as opções estão disponíveis) | Inverte a cadeia de caracteres do token. |
scandinavian_normalization | (o tipo aplica-se apenas quando as opções estão disponíveis) | Normaliza o uso dos caracteres escandinavos intercambiáveis. |
scandinavian_folding | (o tipo aplica-se apenas quando as opções estão disponíveis) | Dobra caracteres åÅäæÄÆ escandinavos para dentro a e öÖøØ para dentro o do . Também discrimina o uso de vogais duplas aa , ae , ao oe , e oo , deixando apenas a primeira. |
telha | ShingleTokenFilter | Cria combinações de tokens como um único token. Opções maxShingleSize (tipo: int) - O padrão é 2. minShingleSize (tipo: int) - Padrão para 2. outputUnigrams (tipo: bool) - se verdadeiro, o fluxo de saída contém os tokens de entrada (unigramas), bem como telhas. O padrão é true. outputUnigramsIfNoShingles (tipo: bool) - Se verdadeiro, substitua o comportamento de outputUnigrams==false para aqueles momentos em que nenhuma telha está disponível. O padrão é false. tokenSeparator (type: string) - A cadeia de caracteres a ser usada ao unir tokens adjacentes para formar uma telha. O padrão é um único espaço vazio. filterToken (type: string) - A cadeia de caracteres a ser inserida para cada posição para a qual não há token. A predefinição é _ . |
bola de neve | SnowballTokenFilter | Filtro de token bola de neve. Opções language (type: string) - Os valores permitidos incluem: , , , , english russian german french finnish dutch spanish kp lovins norwegian italian portuguese swedish porter german2 hungarian romanian danish catalan basque armenian turkish |
sorani_normalization | SoraniNormalizationTokenFilter | Normaliza a representação Unicode do Sorani texto.Opções Nenhum. |
Temmer | StemmerTokenFilter | Filtro de derivação específico do idioma. Opções language (type: string) - Os valores permitidos incluem: - 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 | Todos os termos dicionários são marcados como palavras-chave, o que impede que se destinem ao longo da cadeia. Deve ser colocado antes de quaisquer filtros de derivação. Opções rules (type: string array) - Regras de manutenção no seguinte formato word => stem , por exemplo ran => run . O padrão é uma lista vazia. Obrigatório. |
Palavras de ordem | StopwordsTokenFilter | Remove palavras de parada de um fluxo de token. Por padrão, o filtro usa uma lista de palavras paradas predefinida para inglês. Opções stopwords (type: string array) - Uma lista de stopwords. Não é possível especificar se uma stopwordsList for especificada. stopwordsList (type: string) - Uma lista predefinida de palavras paradas. Não pode ser especificado se stopwords for especificado. Os valores permitidos incluem:arabic , armenian , basque , brazilian , catalan spanish french galician finnish english dutch german danish czech bulgarian greek hindi norwegian latvian persian italian portuguese irish romanian russian indonesian hungarian swedish thai sorani turkish , padrão: . english Não pode ser especificado se stopwords for especificado. ignoreCase (tipo: bool) - Se verdadeiro, todas as palavras são maiúsculas inferiores primeiro. O padrão é false. removeTrailing (tipo: bool) - Se verdadeiro, ignore o último termo de pesquisa se for uma palavra de parada. O padrão é true. |
sinónimo | SynonymTokenFilter | Corresponde a sinônimos de uma ou várias palavras em um fluxo de token. Opções sinônimos (tipo: string array) - Obrigatório. Lista de sinónimos num dos dois formatos seguintes: -incrível, inacreditável, fabuloso => incrível - todos os termos no lado esquerdo de => símbolo são substituídos por todos os termos no seu lado direito. -incrível, inacreditável, fabuloso, incrível - Uma lista separada por vírgulas de palavras equivalentes. Defina a opção expandir para alterar a forma como esta lista é interpretada. ignoreCase (tipo: bool) - Entrada de dobras de caixa para correspondência. O padrão é false. expand (type: bool) - Se verdadeiro, todas as palavras na lista de sinônimos (se => notação não é usada) mapeiam umas para as outras. A seguinte lista: incrível, inacreditável, fabuloso, incrível é equivalente a: incrível, inacreditável, fabuloso, incrível => incrível, inacreditável, fabuloso, incrível - Se falso, a seguinte lista: incrível, inacreditável, fabuloso, incrível são equivalentes a: incrível, inacreditável, fabuloso, incrível => incrível. |
guarnição | (o tipo aplica-se apenas quando as opções estão disponíveis) | Corta o espaço em branco à esquerda e à direita dos tokens. |
truncate | TruncateTokenFilter | Trunca os termos em um comprimento específico. Opções comprimento (tipo: int) - Padrão: 300, máximo: 300. Obrigatório. |
único | UniqueTokenFilter | Filtra tokens com o mesmo texto do token anterior. Opções onlyOnSamePosition (tipo: bool) - Se definido, remova as duplicatas apenas na mesma posição. O padrão é true. |
maiúsculas | (o tipo aplica-se apenas quando as opções estão disponíveis) | Normaliza o texto do token para maiúsculas. |
word_delimiter | WordDelimiterTokenFilter | Divide palavras em subpalavras e executa transformações opcionais em grupos de subpalavras. Opções generateWordParts (type: bool) - Faz com que partes de palavras sejam geradas, por exemplo AzureSearch , torna-se Azure Search . O padrão é true.generateNumberParts (type: bool) - Faz com que subpalavras numéricas sejam geradas. O padrão é true. catenateWords (tipo: bool) - Faz com que o máximo de execuções de partes de palavras seja catenado, por exemplo Azure-Search , torna-se AzureSearch . O padrão é false.catenateNumbers (tipo: bool) - Faz com que as execuções máximas de partes numéricas sejam catenadas, por exemplo 1-2 , torna-se 12 . O padrão é false.catenateAll (tipo: bool) - Faz com que todas as partes da subpalavra sejam catenadas, por exemplo Azure-Search-1 , torna-se AzureSearch1 . O padrão é false.splitOnCaseChange (type: bool) - Se true, divide palavras em caseChange, por exemplo AzureSearch , torna-se 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 , torna-se Azure 1 Search . O padrão é true.stemEnglishPossessive (tipo: bool) - Faz com que o trailing 's seja removido para cada subpalavra. O padrão é true.protectedWords (type: string array) - Tokens para proteger de serem delimitados. O padrão é uma lista vazia. |
1 Os tipos de filtro de token são sempre prefixados em código com #Microsoft.Azure.Search
tal que ArabicNormalizationTokenFilter
seria realmente especificado como #Microsoft.Azure.Search.ArabicNormalizationTokenFilter
. Removemos o prefixo para reduzir a largura da tabela, mas lembre-se de incluí-lo no seu código.