Aggiungere analizzatori personalizzati ai campi stringa in un indice Ricerca cognitiva di Azure

Un analizzatore personalizzato è una combinazione definita dall'utente di 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 e quindi viene fatto riferimento alle definizioni di campo che richiedono un'analisi personalizzata. Un analizzatore personalizzato viene richiamato in base ai singoli campi. Gli attributi nel campo determinano se vengono usati per l'indicizzazione, le query o entrambi.

In un analizzatore personalizzato, i filtri di caratteri preparano il testo di input prima che venga elaborato dal tokenizer ,ad esempio rimuovendo il markup. Il tokenizer suddivide quindi il testo in token. Infine, i filtri dei token modificano i token generati dal tokenizer. Per concetti ed esempi, vedere Analizzatori in Ricerca cognitiva di Azure.

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 dei valori predefiniti (Standard Lucence), gli analizzatori predefiniti 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:

  • Uso di filtri di caratteri per rimuovere il markup HTML prima che gli input di testo vengano tokenizzati o 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 parole chiave 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 vengono esposti nella portale di Azure. L'unico modo per aggiungere un analizzatore personalizzato consiste nel codice che definisce un indice.

Creare un analizzatore personalizzato

Per creare un analizzatore personalizzato, specificarlo nella sezione "analizzatori" di un indice in fase di progettazione e quindi farvi riferimento nei campi ricercabili, Edm.String usando la proprietà "analyzer" o la coppia "indexAnalyzer" e "searchAnalyzer".

Una definizione dell'analizzatore include un nome, un tipo, uno o più filtri di caratteri, un massimo di un tokenizer e uno o più filtri token per l'elaborazione post-token. I filtri di caratteri vengono applicati prima della tokenizzazione. I filtri 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 uno qualsiasi degli analizzatori predefiniti, tokenizer, filtri di token o filtri di caratteri. 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 caratteri, elaborati prima della tokenizzazione, nell'ordine specificato. Alcuni filtri di caratteri hanno opzioni, che possono essere impostate in una sezione "charFilter". I filtri 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 token, elaborati dopo la tokenizzazione, nell'ordine specificato. Per i filtri di token con opzioni, aggiungere una sezione "tokenFilter" per specificare la configurazione. I filtri token sono facoltativi.

Gli analizzatori non devono produrre token più lunghi di 300 caratteri oppure l'indicizzazione avrà esito negativo. Per tagliare un token lungo o escluderli, 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 char, tokenizer e filtri token vengono aggiunte all'indice solo se si impostano 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 Ricerca cognitiva di Azure.

Testare gli analizzatori personalizzati

È possibile usare l'analizzatore test (REST) per vedere in che modo un analizzatore suddivide il testo specificato in token.

Richiesta

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

Risposta

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

Una volta definito un analizzatore, un tokenizer, un filtro di token o un filtro di caratteri, 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 predefiniti

Se si vuole usare un analizzatore predefinito con opzioni personalizzate, la creazione di un analizzatore personalizzato è il meccanismo in base al quale si specificano tali opzioni. Al contrario, per usare un analizzatore predefinito così come sono, è sufficiente farvi riferimento in base al nome nella definizione del campo.

analyzer_name analyzer_type1 Descrizione e opzioni
Parola chiave 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

minuscolo (tipo: bool): determina se i termini sono in minuscolo. Il valore predefinito è true.

pattern (tipo: stringa): modello di espressione regolare per trovare la corrispondenza con 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

parole non significative (tipo: matrice di stringhe) - Elenco di parole non significative. Il valore predefinito è un elenco vuoto.
Semplice 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
(noto anche come 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.

parole non significative (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

parole non significative (tipo: matrice di stringhe): elenco di parole non significative. Il valore predefinito è un elenco per la lingua inglese.
Spazi vuoti 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 analizzatori presentano sempre il prefisso "#Microsoft.Azure.Search" nel codice, ad esempio "PatternAnalyzer" verrà di fatto 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 sono disponibili opzioni, come accade con l'analizzatore di parole chiave, non è associato #Microsoft. Tipo Azure.Search.

Filtri di caratteri

I filtri di caratteri aggiungono l'elaborazione prima che una stringa raggiunga il tokenizer.

Ricerca cognitiva supporta i filtri di caratteri nell'elenco seguente. Altre informazioni su ognuna sono disponibili nella guida di riferimento all'API Lucene.

char_filter_name char_filter_type1 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

mapping (tipo: matrice di stringhe): elenco di mapping del 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, input text = "aa bb aa bb", pattern="(aa)\\s+(bb)" replacement="$1#$2", result = "aa#bb aa#bb".

Opzioni

pattern (tipo: stringa): obbligatorio.

replacement (type: string) - Obbligatorio.

1 I tipi di filtri di caratteri presentano sempre il prefisso "#Microsoft.Azure.Search" nel codice, ad esempio "MappingCharFilter" verrà di fatto specificato come "#Microsoft.Azure.Search.MappingCharFilter". Il prefisso è stato rimosso per ridurre la larghezza della tabella, ma si ricordi di includerlo nel codice. Si noti che char_filter_type viene fornito solo per i filtri che possono essere personalizzati. Se non sono disponibili opzioni, come nel caso di html_strip, non è associato #Microsoft. Tipo Azure.Search.

Tokenizer

Un tokenizer divide il testo continuo in una sequenza di token, ad esempio suddividendo una frase in parole o in una parola in forme radice.

Ricerca cognitiva supporta tokenizer nell'elenco seguente. Altre informazioni su ognuna sono disponibili nella guida di riferimento all'API Lucene.

tokenizer_name tokenizer_type1 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. Valore predefinito: 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) - Valore predefinito: 2, massimo: 300. Deve essere maggiore di minGram.

tokenChars (tipo: matrice di stringhe): classi di caratteri da mantenere 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. Valore predefinito: 256, massimo: 300. I token con lunghezza superiore a quella massima vengono suddivisi.
Lettera 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.
Minuscolo 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, valore predefinito: 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: bool): impostare su true se usato come tokenizer di ricerca, impostato su false se usato come tokenizer di indicizzazione.

language (type: string): lingua da usare, predefinita "english". I valori consentiti includono:
"bangla", "bulgaro", "catalano", "chineseSimplified", "chineseTraditional", "croato", "ceco", "danese", "olandese", "english", "french", "german", "greek", "gujarati", "hindi", "islandese", "indonesiano", "italian", "japanese", "kan", "kan"nada", "coreano", "malay", "malayalam", "marathi", "norwegianBokmaal", "polacco", "portoghese", "portogheseBrazilian", "punjabi", "romeno", "russo", "serboCyrillic", "serboLatin", "sloveno", "spagnolo", "svedese", "tamil" , "telugu", "thai", "ucraino", "urdu", "vietnamita"
microsoft_language_stemming_tokenizer MicrosoftLanguageStemmingTokenizer Divide il testo usando regole specifiche della lingua e riduce le parole alle relative forme di base. Questo tokenizer esegue la lemmatizzazione.

Opzioni

maxTokenLength (tipo: int): lunghezza massima del token, valore predefinito: 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: bool): impostare su true se usato come tokenizer di ricerca, impostato su false se usato come tokenizer di indicizzazione.

language (type: string): lingua da usare, predefinita "english". I valori consentiti includono:
"arabic", "bangla", "bulgaro", "catalano", "croato", "ceco", "danese", "olandese", "english", "estonian", "finlandese", "french", "german", "greco", "gujarati", "ebraico", "hindi", "ungherese", "islandese", "indonesiano", "italiano", "italiano", "kannada, "lettonia", "lituana", "malay", "malayalam", "marathi", "norwegianBokmaal", "polacco", "portoghese", "portogheseBrazilian", "punjabi", "romeno", "russo", "serboCyrillic", "serboLatin", "slovacco", "sloveno", " spagnolo, "svedese", "tamil", "telugu", "turco", "ucraino", "urdu"
nGram NGramTokenizer Suddivide in token l'input in n-grammi di determinate dimensioni.

Opzioni

minGram (tipo: int) - Impostazione predefinita: 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 mantenere 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

delimitatore (tipo: stringa) - Impostazione predefinita: '/.

sostituzione (tipo: stringa) - Se impostata, sostituisce il carattere delimitatore. 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.

inverso (tipo: bool) - Se true, genera il token in ordine inverso. Valore predefinito: false.

skip (type: bool) - 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 per corrispondere ai separatori di token. Il valore predefinito è \W+, che corrisponde a caratteri non word.

flag (tipo: stringa) - Flag di espressioni regolari. Il valore predefinito è una stringa vuota. Valori consentiti: CANON_EQ, CASE_INSENSITIVE, COMMENTI, DOTALL, LETTERALE, MULTILINE, UNICODE_CASE,

UNIX_LINES gruppo (tipo: int) - Quale gruppo 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.
Spazi vuoti 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 codice con "#Microsoft. Azure.Search, 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. Si noti che tokenizer_type viene fornito solo per i tokenizzatori che possono essere personalizzati. Se non sono disponibili opzioni, come accade con il tokenizzatore di lettere, non è associato #Microsoft. Tipo di ricerca di 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 token vengono eseguiti nell'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_type1 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 che non sono nei primi 127 caratteri ASCII (il blocco Unicode "Latino di base") nei relativi equivalenti ASCII, se ne esiste uno.

Opzioni

preserveOriginal (tipo: booleano): se true, il token originale viene conservato. Il valore predefinito è 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. Il valore predefinito è 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. Il valore predefinito è false.

queryMode (tipo: booleano): genera i digrammi, quindi rimuove le parole comuni e i termini singoli seguiti da una parola comune. Il valore predefinito è 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): vengono elaborate solo parole di lunghezza superiore a quella specificata. Il valore predefinito è 5.

minSubwordSize (tipo: int): vengono visualizzate solo sottoparole di lunghezza superiore a quella specificata. Il valore predefinito è 2.

maxSubwordSize (tipo: int): vengono 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. Il valore predefinito è 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) - Impostazione predefinita: 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" (l'aereo) viene convertito in "avion" (aereo).

Opzioni

articles (tipo: matrice di stringhe): set di articoli da rimuovere. Il valore predefinito è un elenco vuoto. Se non è presente alcun elenco di articoli impostati, per impostazione predefinita vengono rimossi tutti gli articoli francesi.
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.
Mantenere 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. Il valore predefinito è 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. Il valore predefinito è 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 con prestazioni elevate 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. Il valore predefinito è false.
Minuscolo 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) - Impostazione predefinita: 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". Valore predefinito: "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.
Invertire 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 åÅäæÄÆ-a> e öÖøØ-o>. Discrimina anche l'uso delle 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. Il valore predefinito è false.

tokenSeparator (tipo: stringa): stringa da usare quando si uniscono token adiacenti per formare un n-gramma. Il valore predefinito è " ".

filterToken (tipo: stringa): stringa da inserire per ogni posizione per cui non è presente alcun 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 in sorani.

Opzioni

Nessuno.
stemmer StemmerTokenFilter Filtro di stemming specifico della lingua.

Opzioni

language (tipo: stringa): i valori consentiti includono:
- "arabo"
- "armeno"
- "basco"
- "brasiliano"
- "bulgaro"
- "catalano"
- "ceco"
- "danese"
- "olandese"
- "dutchKp"
- "inglese"
- "lightEnglish"
- "minimalEnglish"
- "possessiveEnglish"
- "porter2"
- "lovins"
- "finlandese"
- "lightFinnish"
- "francese"
- "lightFrench"
- "minimalFrench"
- "galiziano"
- "minimalGalician"
- "tedesco"
- "german2"
- "lightGerman"
- "minimalGerman"
- "greco"
- "hindi"
- "ungherese"
- "lightHungarian"
- "indonesiano"
- "irlandese"
- "italiano"
- "lightItalian"
- "sorani"
- "lettone"
- "norvegese"
- "lightNorwegian"
- "minimalNorwegian"
- "lightNynorsk"
- "minimalNynorsk"
- "portoghese"
- "lightPortuguese"
- "minimalPortuguese"
- "portugueseRslp"
- "romeno"
- "russo"
- "lightRussian"
- "spagnolo"
- "lightSpanish"
- "svedese"
- "lightSwedish"
- "turco"
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.
parole non significative 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 è possibile specificare se è specificato un elemento stopwordsList.

stopwordsList (tipo: stringa): elenco predefinito di parole non significative. Non è possibile specificare se si specifica "parole non significative". 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". Valore predefinito: "english". Non è possibile specificare se si specifica "parole non significative".

ignoreCase (tipo: booleano): se true, viene applicato prima il minuscolo a tutte le parole. Il valore predefinito è false.

removeTrailing (tipo: booleano): se true, ignora l'ultimo termine di ricerca se è una parola non significativa. Il valore predefinito è true.
Sinonimo 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:

-incredibile, incredibile, favoloso => incredibile - tutti i termini sul lato sinistro di => simbolo vengono sostituiti con tutti i termini sul lato destro.

-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. Il valore predefinito è false.

expand (tipo: bool): se true, tutte le parole nell'elenco dei sinonimi (se => notazione non viene usata) vengono mappate l'una all'altra.
L'elenco seguente: incredibile, incredibile, favoloso, incredibile, incredibile, incredibile, favoloso, incredibile=> incredibile, incredibile, favoloso, incredibile

- Se false, l'elenco seguente: incredibile, incredibile, favoloso, sorprendente sono equivalenti a: incredibile, incredibile, incredibile, favoloso, incredibile => incredibile.
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): valore predefinito: 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.
Maiuscolo 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): consente la generazione delle parti delle 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 di una parola, ad esempio "Azure-Search" diventa "AzureSearch". Il valore predefinito è false.

catenateNumbers (tipo: booleano): consente la concatenazione del numero massimo di porzioni di un numero, ad esempio "1-2" diventa "12". Il valore predefinito è false.

catenateAll (tipo: booleano): consente la concatenazione di tutte le sottoparole, ad esempio "Azure-Search-1" diventa "AzureSearch1". Il valore predefinito è false.

splitOnCaseChange (tipo: booleano): se true, divide le parole in corrispondenza di una lettera maiuscola, ad esempio "AzureSearch" diventa "Azure" "Search". Il valore predefinito è true.

preserveOriginal: le parole originali vengono mantenute e aggiunte all'elenco di sottoparole. Il valore predefinito è false.

splitOnNumerics (tipo: booleano): se true, divide in corrispondenza dei 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 token sono sempre preceduti dal prefisso "#Microsoft. Azure.Search" in modo che "ArabicNormalizationTokenFilter" venga effettivamente specificato come "#Microsoft. Azure.Search.ArabicNormalizationTokenFilter". Il prefisso è stato rimosso per ridurre la larghezza della tabella, ma si ricordi di includerlo nel codice.

Vedi anche