Aggiungere analizzatori personalizzati ai campi stringa in un indice Azure AI Search
Un analizzatore personalizzato è una combinazione definita dall'utente di un tokenizer, uno o più filtri di token e uno o più filtri di caratteri. Un analizzatore personalizzato viene specificato all'interno di un indice di ricerca; quindi, vi viene fatto riferimento in base al nome nelle definizioni di campo che richiedono un'analisi personalizzata. Un analizzatore personalizzato viene richiamato per ogni campo. Gli attributi nel campo determinano se vengano usati per l'indicizzazione, le query o entrambi.
In un analizzatore personalizzato, i filtri carattere preparano il testo di input prima che venga elaborato dal tokenizer (ad esempio, rimuovendo i commenti). Successivamente, il tokenizer suddivide il testo in token. Infine, i filtri dei token modificano i token generati dal tokenizer. Per concetti ed esempi, vedere Analizzatori in Azure AI Search.
Perché usare un analizzatore personalizzato?
Un analizzatore personalizzato consente di controllare il processo di conversione del testo in token indicizzabili e ricercabili consentendo di scegliere i tipi di analisi o di filtro da richiamare e l'ordine in cui si verificano.
Creare e assegnare un analizzatore personalizzato se nessuno degli analizzatori predefiniti (Standard Lucence), integrati o del linguaggio sono sufficienti per le proprie esigenze. È anche possibile creare un analizzatore personalizzato se si vuole usare un analizzatore predefinito con opzioni personalizzate. Ad esempio, se si vuole modificare maxTokenLength in Standard, è necessario creare un analizzatore personalizzato con un nome definito dall'utente per impostare tale opzione.
Gli scenari in cui gli analizzatori personalizzati possono essere utili includono:
L'uso di filtri di caratteri per rimuovere commenti HTML prima che gli input di testo vengano tokenizzati o per sostituire determinati caratteri o simboli.
Ricerca fonetica. Aggiungere un filtro fonetico per abilitare la ricerca basata sul suono e sulla compitazione di una parola.
Disabilitare l'analisi lessicale. Usare l'analizzatore Keyword per creare campi ricercabili che non vengono analizzati.
Ricerca rapida di prefissi/suffissi. Aggiungere il filtro di token di n-grammi di Edge per indicizzare i prefissi delle parole per poter abilitare la corrispondenza rapida dei prefissi. Combinarlo con il filtro di token Reverse per eseguire la corrispondenza dei suffissi.
Tokenizzazione personalizzata. Usare, ad esempio, il tokenizer Whitespace per suddividere le frasi in token usando lo spazio vuoto come delimitatore
ASCII folding. Aggiungere il filtro ASCII Folding Standard per normalizzare i segni diacritici come ö o ê nei termini di ricerca.
Nota
Gli analizzatori personalizzati non sono esposti nel portale di Azure. L'unico modo per aggiungere un analizzatore personalizzato consiste nell’usare codice che definisce un indice.
Creare un analizzatore personalizzato
Per creare un analizzatore personalizzato, specificarlo nella sezione analyzers
di un indice in fase di progettazione e quindi farvi riferimento sui campi ricercabili Edm.String
usando la proprietà analyzer
oppure la coppia indexAnalyzer
e searchAnalyzer
.
La definizione di un analizzatore include un nome, un tipo, uno o più filtri di caratteri, un massimo di un tokenizer e uno o più filtri di token per l'elaborazione post tokenizzazione. I filtri di caratteri vengono applicati prima della tokenizzazione. I filtri di token e i filtri di caratteri vengono applicati da sinistra a destra.
I nomi in un analizzatore personalizzato devono essere univoci e non possono essere uguali a quelli di altri analizzatori, tokenizer, filtri di token o filtri di caratteri integrati. Può contenere solo lettere, numeri, spazi, trattini o caratteri di sottolineatura, deve iniziare e terminare con caratteri alfanumerici e non può contenere più di 128 caratteri.
Il tipo deve essere #Microsoft.Azure.Search.CustomAnalyzer.
charFilters
può essere uno o più filtri da Filtri di caratteri, elaborati prima della tokenizzazione, nell'ordine specificato. Alcuni filtri di caratteri hanno opzioni che possono essere impostate in una sezionecharFilters
. I filtri di carattere sono facoltativi.tokenizer
è esattamente un tokenizer. È necessario un valore. Se è necessario più di un tokenizer, è possibile creare più analizzatori personalizzati e assegnarli a ogni singolo campo nello schema dell'indice.tokenFilters
può essere uno o più filtri da Filtri di token, elaborati dopo la tokenizzazione, nell'ordine specificato. Per filtri di token con opzioni, aggiungere una sezionetokenFilter
per specificare la configurazione. I filtri di token sono facoltativi.
Gli analizzatori non devono produrre token più lunghi di 300 caratteri o l'indicizzazione avrà esito negativo. Per tagliare o escludere un token lungo, usare rispettivamente TruncateTokenFilter e LengthTokenFilter. Per informazioni di riferimento, vedere Filtri dei token.
"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,
...
}
]
All'interno di una definizione di indice è possibile inserire questa sezione in un punto qualsiasi del corpo di una richiesta di creazione dell'indice, ma in genere viene inserita alla fine:
{
"name": "name_of_index",
"fields": [ ],
"suggesters": [ ],
"scoringProfiles": [ ],
"defaultScoringProfile": (optional) "...",
"corsOptions": (optional) { },
"analyzers":(optional)[ ],
"charFilters":(optional)[ ],
"tokenizers":(optional)[ ],
"tokenFilters":(optional)[ ]
}
La definizione di un analizzatore è una parte dell'indice più grande. Le definizioni per filtri di caratteri, tokenizer e filtri di token vengono aggiunte all'indice solo se si stanno impostando opzioni personalizzate. Per usare un filtro o un tokenizer esistente così com'è, specificarlo per nome nella definizione dell'analizzatore. Per altre informazioni, vedere Creare un indice (REST). Per altri esempi, vedere Aggiungere analizzatori in Azure AI Search.
Testare gli analizzatori personalizzati
È possibile usare l'Analizzatore di test (REST) per vedere come un analizzatore suddivide in token un testo dato.
Richiedi
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
}
]
}
Aggiornare gli analizzatori personalizzati
Dopo che un analizzatore, un tokenizer, un filtro di token o un filtro di carattere è stato definito, non può essere modificato. È possibile aggiungerne di nuovi a un indice esistente solo se il flag allowIndexDowntime
è impostato su true nella richiesta di aggiornamento dell'indice:
PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=[api-version]&allowIndexDowntime=true
Questa operazione porta l'indice offline almeno per alcuni secondi, causando la mancata riuscita dell'indicizzazione e delle richieste di query. Le prestazioni e la disponibilità alla scrittura dell'indice possono risultare inferiori per vari minuti dopo che l'indice è stato aggiornato o più a lungo per gli indici molto grandi, ma si tratta di effetti temporanei che alla fine si risolvono da soli.
Analizzatori integrati
Se si vuole usare un analizzatore integrato con opzioni personalizzate, la creazione di un analizzatore personalizzato è il metodo per specificare tali opzioni. Al contrario, per usare un analizzatore integrato così come è, è sufficiente farvi riferimento in base al nome nella definizione del campo.
analyzer_name | analyzer_type 1 | Descrizione e opzioni |
---|---|---|
keyword | Il tipo si applica solo quando sono disponibili le opzioni | Considera l'intero contenuto di un campo come token singolo. Ciò è utile per i dati come i codici postali, gli ID e alcuni nomi di prodotto. |
pattern | PatternAnalyzer | Separa in modo flessibile il testo in termini tramite un modello di espressione regolare. Opzioni lowercase (tipo: booleano): determina se i termini sono in minuscolo. Il valore predefinito è true. pattern (tipo: stringa): modello di espressione regolare a cui devono corrispondere i separatori di token. Il valore predefinito è \W+ , che corrisponde a caratteri non alfanumerici. flags (tipo: stringa): flag di espressione regolare. Il valore predefinito è una stringa vuota. Valori consentiti: CANON_EQ, CASE_INSENSITIVE, COMMENTS, DOTALL, LITERAL, MULTILINE, UNICODE_CASE, UNIX_LINES stopwords (tipo: matrice di stringhe): elenco di parole non significative. Il valore predefinito è un elenco vuoto. |
simple | Il tipo si applica solo quando sono disponibili le opzioni | Divide il testo in corrispondenza di elementi diversi da lettere e li converte in lettere minuscole. |
standard (denominato anche standard.lucene) |
StandardAnalyzer | Analizzatore Lucene Standard, costituito dal tokenizer, dal filtro di lettere minuscole e dal filtro di parole non significative standard. Opzioni maxTokenLength (tipo: int): lunghezza massima del token. Il valore predefinito è 255. I token con lunghezza superiore a quella massima vengono suddivisi. Lunghezza massima del token che può essere usata è di 300 caratteri. stopwords (tipo: matrice di stringhe): elenco di parole non significative. Il valore predefinito è un elenco vuoto. |
standardasciifolding.lucene | Il tipo si applica solo quando sono disponibili le opzioni | Analizzatore standard con filtro ASCII Folding Standard. |
stop | StopAnalyzer | Suddivide il testo in corrispondenza di elementi diversi da lettere e applica i filtri di token di lettere minuscole e di parole non significative. Opzioni stopwords (tipo: matrice di stringhe): elenco di parole non significative. Il valore predefinito è un elenco per la lingua inglese. |
whitespace | Il tipo si applica solo quando sono disponibili le opzioni | Analizzatore che usa il tokenizer whitespace. I token che contengono più di 255 caratteri vengono suddivisi. |
1 I tipi di analizzatore sono sempre preceduti dal prefisso #Microsoft.Azure.Search
nel codice, in modo che PatternAnalyzer
venga effettivamente specificato come #Microsoft.Azure.Search.PatternAnalyzer
. Per brevità, il prefisso è stato rimosso, ma è obbligatorio usarlo nel codice.
analyzer_type viene fornito solo per gli analizzatori che possono essere personalizzati. Se non esistono opzioni, come avviene con l'analizzatore keyword, non è associato nessun tipo #Microsoft.Azure.Search.
Filtri di caratteri
I filtri di caratteri aggiungono elaborazione prima che una stringa raggiunga il tokenizer.
Azure AI Search supporta i filtri di carattere nell'elenco seguente. Altre informazioni su ciascuno di essi sono disponibili nella guida di riferimento dell'API Lucene.
char_filter_name | char_filter_type 1 | Descrizione e opzioni |
---|---|---|
html_strip | Il tipo si applica solo quando sono disponibili le opzioni | Filtro di caratteri che cerca di rimuovere i costrutti HTML. |
mapping | MappingCharFilter | Filtro di caratteri che applica i mapping definiti con l'opzione mappings. La corrispondenza è greedy. I criteri di ricerca più lunghi in un determinato punto hanno la precedenza. È consentita la sostituzione con una stringa vuota. Opzioni mappings (tipo: matrice di stringhe): elenco di mapping nel formato seguente: a=>b (tutte le occorrenze del carattere a vengono sostituite con il carattere b ). Obbligatorio. |
pattern_replace | PatternReplaceCharFilter | Filtro di caratteri che sostituisce i caratteri nella stringa di input. Usa un'espressione regolare per identificare le sequenze di caratteri da conservare e un criterio di sostituzione per identificare i caratteri da sostituire. Ad esempio, testo di input = aa bb aa bb , pattern = (aa)\\\s+(bb) sostituto = $1#$2 , risultato = aa#bb aa#bb . Opzioni pattern (tipo: stringa): obbligatorio. replacement (tipo: stringa): obbligatorio. |
1 I tipi di filtro di carattere sono sempre preceduti dal prefisso #Microsoft.Azure.Search
nel codice, in modo che MappingCharFilter
verrebbe effettivamente specificato come #Microsoft.Azure.Search.MappingCharFilter
. Il prefisso è stato rimosso per ridurre la larghezza della tabella, ma si ricordi di includerlo nel codice. Notare che char_filter_type viene fornito solo per filtri che possono essere personalizzati. Se non esistono opzioni, come avviene con l'analizzatore html_strip, non è associato nessun tipo #Microsoft.Azure.Search.
Tokenizer
Un tokenizer divide il testo continuo in una sequenza di token, ad esempio suddividendo una frase in parole o una parola in forme radice.
Azure AI Search supporta i tokenizer nell'elenco seguente. Altre informazioni su ciascuno di essi sono disponibili nella guida di riferimento dell'API Lucene.
tokenizer_name | tokenizer_type 1 | Descrizione e opzioni |
---|---|---|
classico | ClassicTokenizer | Tokenizer basato sulla grammatica adatto per l'elaborazione della maggior parte dei documenti in lingue Europae. Opzioni maxTokenLength (tipo: int): lunghezza massima del token. Impostazione predefinita: 255, massimo: 300. I token con lunghezza superiore a quella massima vengono suddivisi. |
edgeNGram | EdgeNGramTokenizer | Suddivide in token l'input da un token perimetrale in n-grammi di determinate dimensioni. Opzioni minGram (tipo: int) - Valore predefinito: 1, massimo: 300. maxGram (tipo: int) - Impostazione predefinita: 2, massimo: 300. Deve essere maggiore di minGram. tokenChars (tipo: matrice di stringhe): classi di caratteri da conservare nei token. Valori consentiti: letter , digit , whitespace , punctuation , symbol . Il valore predefinito è una matrice vuota, che mantiene tutti i caratteri. |
keyword_v2 | KeywordTokenizerV2 | Genera l'intero input come token singolo. Opzioni maxTokenLength (tipo: int): lunghezza massima del token. Impostazione predefinita: 256, massimo: 300. I token con lunghezza superiore a quella massima vengono suddivisi. |
letter | Il tipo si applica solo quando sono disponibili le opzioni | Divide il testo in corrispondenza di elementi diversi da lettere. I token che contengono più di 255 caratteri vengono suddivisi. |
lowercase | Il tipo si applica solo quando sono disponibili le opzioni | Divide il testo in corrispondenza di elementi diversi da lettere e li converte in lettere minuscole. I token che contengono più di 255 caratteri vengono suddivisi. |
microsoft_language_tokenizer | MicrosoftLanguageTokenizer | Divide il testo usando le regole specifiche della lingua. Opzioni maxTokenLength (tipo: int): lunghezza massima del token, impostazione predefinita: 255, massimo: 300. I token con lunghezza superiore a quella massima vengono suddivisi. I token con più di 300 caratteri vengono prima di tutto divisi in token di lunghezza pari a 300 caratteri e ognuno di tali token viene quindi diviso in base al set maxTokenLength. isSearchTokenizer (tipo: booleano): impostarlo su true se usato come tokenizer di ricerca, impostarlo su false se usato come tokenizer di indicizzazione. language (tipo: stringa): linguaggio da usare, impostazione predefinita english . I valori consentiti includono: 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 il testo usando le regole specifiche del linguaggio e riduce le parole alle forme di base Questo tokenizer esegue la lemmatizzazione. Opzioni maxTokenLength (tipo: int): lunghezza massima del token, impostazione predefinita: 255, massimo: 300. I token con lunghezza superiore a quella massima vengono suddivisi. I token con più di 300 caratteri vengono prima di tutto divisi in token di lunghezza pari a 300 caratteri e ognuno di tali token viene quindi diviso in base al set maxTokenLength. isSearchTokenizer (tipo: booleano): impostarlo su true se usato come tokenizer di ricerca, impostarlo su false se usato come tokenizer di indicizzazione. language (tipo: stringa): linguaggio da usare, impostazione predefinita english . I valori consentiti includono: 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 | Suddivide in token l'input in n-grammi di determinate dimensioni. Opzioni minGram (tipo: int) - Valore predefinito: 1, massimo: 300. maxGram (tipo: int) - Impostazione predefinita: 2, massimo: 300. Deve essere maggiore di minGram. tokenChars (tipo: matrice di stringhe): classi di caratteri da conservare nei token. Valori consentiti: letter , digit , whitespace , punctuation , symbol . Il valore predefinito è una matrice vuota, che mantiene tutti i caratteri. |
path_hierarchy_v2 | PathHierarchyTokenizerV2 | Tokenizer per le gerarchie di tipo percorso. Opzioni delimiter (tipo: stringa): valore predefinito: '/. replacement (tipo: stringa): se impostato, sostituisce il carattere di delimitazione. Il valore predefinito corrisponde al valore del delimitatore. maxTokenLength (tipo: int): lunghezza massima del token. Impostazione predefinita: 300, massimo: 300. I percorsi più lunghi rispetto a maxTokenLength vengono ignorati. reverse (tipo: booleano): se true, genera il token in ordine inverso. Valore predefinito: false. skip (tipo: booleano): token iniziali da ignorare. Il valore predefinito è 0. |
pattern | PatternTokenizer | Il tokenizer usa i criteri di ricerca regex per costruire token distinti. Opzioni pattern (tipo: stringa): modello di espressione regolare a cui devono corrispondere i separatori di token. Il valore predefinito è \W+ , che corrisponde a caratteri non alfanumerici. flags (tipo: stringa): flag di espressione regolare. Il valore predefinito è una stringa vuota. Valori consentiti: CANON_EQ, CASE_INSENSITIVE, COMMENTS, DOTALL, LITERAL, MULTILINE, UNICODE_CASE, UNIX_LINES group (tipo: int): gruppo da estrarre nei token. Il valore predefinito è -1 (suddivisione). |
standard_v2 | StandardTokenizerV2 | Suddivide il testo in base alle regole di segmentazione del testo Unicode. Opzioni maxTokenLength (tipo: int): lunghezza massima del token. Impostazione predefinita: 255, massimo: 300. I token con lunghezza superiore a quella massima vengono suddivisi. |
uax_url_email | UaxUrlEmailTokenizer | Suddivide in token gli URL e gli indirizzi di posta elettronica come un unico token. Opzioni maxTokenLength (tipo: int): lunghezza massima del token. Impostazione predefinita: 255, massimo: 300. I token con lunghezza superiore a quella massima vengono suddivisi. |
whitespace | Il tipo si applica solo quando sono disponibili le opzioni | Divide il testo in corrispondenza degli spazi vuoti. I token che contengono più di 255 caratteri vengono suddivisi. |
1 I tipi di tokenizer sono sempre preceduti dal prefisso #Microsoft.Azure.Search
nel codice, in modo che ClassicTokenizer
venga effettivamente specificato come #Microsoft.Azure.Search.ClassicTokenizer
. Il prefisso è stato rimosso per ridurre la larghezza della tabella, ma si ricordi di includerlo nel codice. Notare che tokenizer_type viene fornito solo per i tokenizer che possono essere personalizzati. Se non esistono opzioni, come avviene con il tokenizer letter, non è associato nessun tipo #Microsoft.Azure.Search.
Filtri di token
Un filtro di token viene usato per filtrare o modificare i token generati da un tokenizer. È possibile, ad esempio, specificare un filtro lowercase che converte tutti i caratteri in lettere minuscole. In un analizzatore personalizzato possono essere presenti più filtri di token. I filtri di token vengono eseguiti nello stesso ordine in cui sono elencati.
Nella tabella seguente i filtri di token che vengono implementati usando Apache Lucene sono collegati alla documentazione dell'API Lucene.
token_filter_name | token_filter_type 1 | Descrizione e opzioni |
---|---|---|
arabic_normalization | Il tipo si applica solo quando sono disponibili le opzioni | Filtro di token che applica il normalizzatore per la lingua araba per normalizzare l'ortografia. |
apostrophe | Il tipo si applica solo quando sono disponibili le opzioni | Rimuove tutti i caratteri dopo un apostrofo (incluso l'apostrofo stesso). |
asciifolding | AsciiFoldingTokenFilter | Converte caratteri Unicode alfabetici, numerici e simbolici non compresi nei primi 127 caratteri ASCII (blocco Unicode Basic Latin ) negli equivalenti ASCII, se esistenti.Opzioni preserveOriginal (tipo: booleano): se true, il token originale viene conservato. L'impostazione predefinita è false. |
cjk_bigram | CjkBigramTokenFilter | Forma digrammi di termini CJK generati da StandardTokenizer. Opzioni ignoreScripts (tipo: matrice di stringhe): script da ignorare. I valori consentiti includono: han , hiragana , katakana , hangul . Il valore predefinito è un elenco vuoto.outputUnigrams (tipo: booleano): impostarlo su true per visualizzare sempre sia gli unigrammi che i digrammi. L'impostazione predefinita è false. |
cjk_width | Il tipo si applica solo quando sono disponibili le opzioni | Normalizza le differenze di larghezza per le lingue CJK. Riduce le varianti ASCII a larghezza intera a quelle equivalenti del latino di base e le varianti Katakana a metà larghezza a quelle kana equivalenti. |
classico | Il tipo si applica solo quando sono disponibili le opzioni | Rimuove i possessivi dell'inglese e i punti dagli acronimi. |
common_grams | CommonGramTokenFilter | Costruisce digrammi per i termini frequenti durante l'indicizzazione. Anche i termini singoli continuano a essere indicizzati, con i digrammi sovrapposti. Opzioni commonWords (tipo: matrice di stringhe): set di parole comuni. Il valore predefinito è un elenco vuoto. Obbligatorio. ignoreCase (tipo: booleano): se true, la corrispondenza non fa distinzione tra maiuscole e minuscole. L'impostazione predefinita è false. queryMode (tipo: booleano): genera i digrammi, quindi rimuove le parole comuni e i termini singoli seguiti da una parola comune. L'impostazione predefinita è false. |
dictionary_decompounder | DictionaryDecompounderTokenFilter | Scompone le parole composte presenti in molte lingue germaniche. Opzioni wordList (tipo: matrice di stringhe): elenco di parole con cui eseguire il confronto. Il valore predefinito è un elenco vuoto. Obbligatorio. minWordSize (tipo: int): verranno elaborate solo parole di lunghezza superiore a quella specificata. L'impostazione predefinita è 5. minSubwordSize (tipo: int): verranno visualizzate solo sottoparole di lunghezza superiore a quella specificata. L'impostazione predefinita è 2. maxSubwordSize (tipo: int): verranno visualizzate solo sottoparole di lunghezza inferiore a quella specificata. Il valore predefinito è 15. onlyLongestMatch (tipo: booleano): aggiunge all'output solo la sottoparola con corrispondenza più lunga. L'impostazione predefinita è false. |
edgeNGram_v2 | EdgeNGramTokenFilterV2 | Genera n-grammi delle dimensioni specificate a partire dall'inizio o dalla fine di un token di input. Opzioni minGram (tipo: int) - Valore predefinito: 1, massimo: 300. maxGram (tipo: int) - Impostazione predefinita: 2, massimo 300. Deve essere maggiore di minGram. side (tipo: stringa): specifica da quale lato dell'input deve essere generato l'n-gramma. Valori consentiti: front , back |
elision | ElisionTokenFilter | Rimuove le elisioni. Ad esempio, l'avion (il piano) viene convertito in avion (piano).Opzioni articles (tipo: matrice di stringhe): set di articoli da rimuovere. Il valore predefinito è un elenco vuoto. Se non è impostato alcun elenco di articoli, tutti gli articoli del francese vengono rimossi per impostazione predefinita. |
german_normalization | Il tipo si applica solo quando sono disponibili le opzioni | Normalizza i caratteri del tedesco in base all'euristica dell'algoritmo snowball German2 . |
hindi_normalization | Il tipo si applica solo quando sono disponibili le opzioni | Normalizza il testo in hindi per rimuovere alcune differenze nelle varianti di ortografia. |
indic_normalization | IndicNormalizationTokenFilter | Normalizza la rappresentazione Unicode del testo nelle lingue indiane. |
keep | KeepTokenFilter | Filtro di token che mantiene solo i token con testo contenuto nell'elenco di parole specificato. Opzioni keepWords (tipo: matrice di stringhe): elenco di parole da mantenere. Il valore predefinito è un elenco vuoto. Obbligatorio. keepWordsCase (tipo: booleano): se true, applica prima il minuscolo a tutte le parole. L'impostazione predefinita è false. |
keyword_marker | KeywordMarkerTokenFilter | Contrassegna i termini come parole chiave. Opzioni keywords (tipo: matrice di stringhe): elenco di parole da contrassegnare come parole chiave. Il valore predefinito è un elenco vuoto. Obbligatorio. ignoreCase (tipo: booleano): se true, applica prima il minuscolo a tutte le parole. L'impostazione predefinita è false. |
keyword_repeat | Il tipo si applica solo quando sono disponibili le opzioni | Genera due volte ogni token in ingresso, una volta come parola chiave e una come parola non chiave. |
kstem | Il tipo si applica solo quando sono disponibili le opzioni | Filtro kstem ad alte prestazioni per l'inglese. |
length | LengthTokenFilter | Rimuove le parole troppo lunghe o troppo corte. Opzioni min (tipo: int): numero minimo. Impostazione predefinita: 0, massimo: 300. max (tipo: int): numero massimo. Impostazione predefinita: 300, massimo: 300. |
limit | Microsoft.Azure.Search.LimitTokenFilter | Limita il numero di token durante l'indicizzazione. Opzioni maxTokenCount (tipo: int): numero massimo di token da generare. Il valore predefinito è 1. consumeAllTokens (tipo: booleano): specifica se devono essere utilizzati tutti i token dell'input anche se viene raggiunto il valore maxTokenCount. L'impostazione predefinita è false. |
lowercase | Il tipo si applica solo quando sono disponibili le opzioni | Normalizza il testo del token applicando il minuscolo. |
nGram_v2 | NGramTokenFilterV2 | Genera n-grammi delle dimensioni specificate. Opzioni minGram (tipo: int) - Valore predefinito: 1, massimo: 300. maxGram (tipo: int) - Impostazione predefinita: 2, massimo 300. Deve essere maggiore di minGram. |
pattern_capture | PatternCaptureTokenFilter | Usa espressioni regolari Java per generare più token, uno per ogni gruppo Capture in uno o più criteri. Opzioni patterns (tipo: matrice di stringhe): elenco di criteri da confrontare con ogni token. Obbligatorio. preserveOriginal (tipo: booleano): impostarlo su true per restituire il token originale anche se uno dei criteri corrisponde. Valore predefinito: true |
pattern_replace | PatternReplaceTokenFilter | Filtro di token che applica un criterio a ogni token nel flusso, sostituendo le occorrenze della corrispondenza con la stringa di sostituzione specificata. Opzioni pattern (tipo: stringa): obbligatorio. replacement (tipo: stringa): obbligatorio. |
persian_normalization | Il tipo si applica solo quando sono disponibili le opzioni | Applica la normalizzazione per il persiano. |
phonetic | PhoneticTokenFilter | Crea i token per le corrispondenze fonetiche. Opzioni encoder (tipo: stringa): codificatore fonetico da usare. I valori consentiti includono: metaphone , doubleMetaphone , soundex , refinedSoundex , caverphone1 , caverphone2 , cologne , nysiis , koelnerPhonetik , haasePhonetik , beiderMorse . Impostazione predefinita: metaphone . Il valore predefinito è metaphone.Per altre informazioni, vedere encoder. replace (tipo: booleano): true se i token codificati devono sostituire i token originali, false se devono essere aggiunti come sinonimi. Il valore predefinito è true. |
porter_stem | Il tipo si applica solo quando sono disponibili le opzioni | Trasforma il flusso di token in base all'algoritmo di stemming Porter. |
ordinamento inverso | Il tipo si applica solo quando sono disponibili le opzioni | Inverte la stringa del token. |
scandinavian_normalization | Il tipo si applica solo quando sono disponibili le opzioni | Normalizza l'uso dei caratteri scandinavi intercambiabili. |
scandinavian_folding | Il tipo si applica solo quando sono disponibili le opzioni | Piega i caratteri scandinavi åÅäæÄÆ in a e öÖøØ in o . Inoltre, discrimina l'uso di vocali doppie aa , ae , ao , oe e oo , lasciando solo la prima. |
shingle | ShingleTokenFilter | Crea combinazioni di token come token singolo. Opzioni maxShingleSize (tipo: int): il valore predefinito è 2. minShingleSize (tipo: int): il valore predefinito è 2. outputUnigrams (tipo: booleano): se true, il flusso di output contiene i token di input (unigrammi), oltre agli n-grammi. Il valore predefinito è true. outputUnigramsIfNoShingles (tipo: booleano): se true, esegue l'override del comportamento outputUnigrams==false quando non sono disponibili n-grammi. L'impostazione predefinita è false. tokenSeparator (tipo: stringa): stringa da usare quando si uniscono token adiacenti per formare un n-gramma. Il valore predefinito è un singolo spazio vuoto . filterToken (tipo: stringa): stringa da inserire per ogni posizione per cui non sono presenti token. Il valore predefinito è _ . |
snowball | SnowballTokenFilter | Filtro di token Snowball. Opzioni language (tipo: stringa): i valori consentiti includono: 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 | Normalizza la rappresentazione Unicode del testo Sorani .Opzioni Nessuno. |
stemmer | StemmerTokenFilter | Filtro di stemming specifico della lingua. Opzioni language (tipo: stringa): i valori consentiti includono: - 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 | I termini di stemming del dizionario vengono contrassegnati come parole chiave, impedendo lo stemming verso il basso della catena. Da inserire prima dei filtri di stemming. Opzioni rules (tipo: matrice di stringhe): regole di stemming nel formato seguente word => stem , ad esempio ran => run . Il valore predefinito è un elenco vuoto. Obbligatorio. |
stopwords | StopwordsTokenFilter | Rimuove le parole non significative da un flusso di token. Per impostazione predefinita, il filtro usa un elenco di parole non significative predefinite per la lingua inglese. Opzioni stopwords (tipo: matrice di stringhe): elenco di parole non significative. Non può essere specificato se stopwordsList è specificato. stopwordsList (tipo: stringa): elenco predefinito di parole non significative. Non può essere specificato se stopwords è specificato. I valori consentiti includono: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 , impostazione predefinita: english . Non può essere specificato se stopwords è specificato. ignoreCase (tipo: booleano): se true, viene applicato prima il minuscolo a tutte le parole. L'impostazione predefinita è false. removeTrailing (tipo: booleano): se true, ignora l'ultimo termine di ricerca se è una parola non significativa. Il valore predefinito è true. |
synonym | SynonymTokenFilter | Trova i sinonimi corrispondenti costituiti da una o più parole in un flusso di token. Opzioni synonyms (tipo: matrice di stringhe): obbligatorio. Elenco di sinonimi in uno dei due formati seguenti: -incredible, unbelievable, fabulous => amazing: tutti i termini a sinistra del simbolo => vengono sostituiti con tutti i termini alla sua destra. -incredible, unbelievable, fabulous, amazing: elenco di parole equivalenti separate da virgole. Impostare l'opzione expand per modificare la modalità di interpretazione di questo elenco. ignoreCase (tipo: booleano): riduce le lettere maiuscole dell'input per la corrispondenza. L'impostazione predefinita è false. expand (tipo: booleano): se true, tutte le parole nell'elenco di sinonimi (se la notazione => non viene usata) eseguono il mapping l’una all’altra. L'elenco seguente: incredible, unbelievable, fabulous, amazing equivale a: incredible, unbelievable, fabulous, amazing => incredible, unbelievable, fabulous, amazing - Se false, l'elenco seguente: incredible, unbelievable, fabulous, amazing equivale a: incredible, unbelievable, fabulous, amazing => incredible. |
Trim | Il tipo si applica solo quando sono disponibili le opzioni | Elimina lo spazio vuoto iniziale e finale dai token. |
truncate | TruncateTokenFilter | Tronca i termini a una lunghezza specifica. Opzioni length (tipo: int) - Impostazione predefinita: 300, massimo: 300. Obbligatorio. |
unique | UniqueTokenFilter | Filtra i token con lo stesso testo del token precedente. Opzioni onlyOnSamePosition (tipo: booleano): se impostato, rimuove i duplicati solo nella stessa posizione. Il valore predefinito è true. |
uppercase | Il tipo si applica solo quando sono disponibili le opzioni | Normalizza il testo del token applicando il maiuscolo. |
word_delimiter | WordDelimiterTokenFilter | Suddivide le parole in sottoparole ed esegue trasformazioni facoltative sui gruppi di sottoparole. Opzioni generateWordParts (tipo: booleano): causa la generazione di porzioni di parole, ad esempio AzureSearch diventa Azure Search . Il valore predefinito è true.generateNumberParts (tipo: booleano): consente la generazione delle sottoparole numeriche. Il valore predefinito è true. catenateWords (tipo: booleano): consente la concatenazione del numero massimo di porzioni parole, ad esempio Azure-Search diventa AzureSearch . L'impostazione predefinita è false.catenateNumbers (tipo: booleano): consente la concatenazione del numero massimo di porzioni di un numero, ad esempio 1-2 diventa 12 . L'impostazione predefinita è false.catenateAll (tipo: booleano): fa in modo che tutte le parti di sottoparole vengano catenate, ad esempio Azure-Search-1 diventa AzureSearch1 . L'impostazione predefinita è false.splitOnCaseChange (tipo: booleano): se true, divide le parole su caseChange, ad esempio AzureSearch diventa Azure Search . Il valore predefinito è true.preserveOriginal: le parole originali vengono mantenute e aggiunte all'elenco di sottoparole. L'impostazione predefinita è false. splitOnNumerics (tipo: booleano): se true, divide i numeri, ad esempio Azure1Search diventa Azure 1 Search . Il valore predefinito è true.stemEnglishPossessive (tipo: booleano): l'elemento 's finale viene rimosso per ogni sottoparola. Il valore predefinito è true.protectedWords (tipo: matrice di stringhe): token di cui evitare la delimitazione. Il valore predefinito è un elenco vuoto. |
1 I tipi di filtro di token sono sempre preceduti dal prefisso #Microsoft.Azure.Search
nel codice, in modo che ArabicNormalizationTokenFilter
verrebbe effettivamente specificato come #Microsoft.Azure.Search.ArabicNormalizationTokenFilter
. Il prefisso è stato rimosso per ridurre la larghezza della tabella, ma si ricordi di includerlo nel codice.