Hinzufügen von benutzerdefinierten Analysetools zu Zeichenfolgenfeldern in einem Azure AI Search-Index

Ein benutzerdefiniertes Analysetool ist eine benutzerdefinierte Kombination aus einem Tokenizer, einem oder mehreren Tokenfiltern und einem oder mehreren Zeichenfiltern. Ein benutzerdefiniertes Analysetool wird in einem Suchindex angegeben und dann darauf per Namen für Felddefinitionen verwiesen, die eine benutzerdefinierte Analyse erfordern. Ein benutzerdefiniertes Analysetool wird pro Feld aufgerufen. Attribute im Feld bestimmen, ob es für Indizierung, Abfragen oder beides verwendet wird.

In einem benutzerdefinierten Analysetool bereiten Zeichenfilter den Eingabetext vor seiner Verarbeitung durch den Tokenizer (z. B. das Entfernen von Markup) vor. Als Nächstes teilt der Tokenizer Text in Token auf. Schließlich ändern Tokenfilter die vom Tokenizer ausgegebenen Token. Konzepte und Beispiele finden Sie unter Analysetools in Azure AI Search.

Warum sollte ein benutzerdefiniertes Analysetool verwendet werden?

Mit einem benutzerdefinierten Analysetool können Sie den Prozess der Konvertierung von Text in indizierbare und durchsuchbare Token steuern, indem Sie auswählen, welche Arten der Analyse oder Filterung aufgerufen werden sollen und in welcher Reihenfolge sie erfolgen.

Erstellen Sie ein benutzerdefiniertes Analysetool, und weisen Sie es zu, wenn keines der Standardanalysetools (Standard Lucence), integrierten Analysetools oder Sprachanalysetools Ihren Anforderungen entspricht. Sie können auch ein benutzerdefiniertes Analysetool erstellen, wenn Sie ein integriertes Analysetool mit benutzerdefinierten Optionen verwenden möchten. Wenn Sie beispielsweise „maxTokenLength“ für „Standard“ ändern möchten, erstellen Sie ein benutzerdefiniertes Analysetool mit einem benutzerdefinierten Namen, um diese Option festzulegen.

Dies sind Szenarios, in denen benutzerdefinierte Analysetools hilfreich sein können:

  • Verwenden von Zeichenfiltern, um HTML-Markup vor der Tokenisierung von Texteingaben zu entfernen oder bestimmte Zeichen oder Symbole zu ersetzen

  • Phonetische Suche. Es wird ein phonetischer Filter hinzugefügt, um Suchen basierend auf der Aussprache eines Worts durchführen zu können, anstatt anhand der Schreibweise.

  • Deaktivieren der lexikalischen Analyse. Verwenden Sie das Schlüsselwort-Analysetool zum Erstellen von durchsuchbaren Feldern, die nicht analysiert werden.

  • Schnelle Präfix-/Suffixsuche. Fügen Sie den „Edge N-gram“-Tokenfilter hinzu, um Präfixe von Wörtern zu indizieren und so den schnellen Abgleich von Präfixen zu ermöglichen. Kombinieren Sie dies mit dem Reverse-Tokenfilter, um den Suffixabgleich durchzuführen.

  • Benutzerdefinierte Tokenisierung. Verwenden Sie beispielsweise den Whitespace-Tokenizer, um Sätze mit Leerzeichen als Trennzeichen in Token zu unterteilen.

  • ASCII-Folding. Fügen Sie den standardmäßigen ASCII-Folding-Filter hinzu, um diakritische Zeichen wie ö oder ê in Suchbegriffen zu normalisieren.

Hinweis

Benutzerdefinierte Analysetools werden im Azure-Portal nicht verfügbar gemacht. Die einzige Möglichkeit, ein benutzerdefiniertes Analysetool hinzuzufügen, ist die Verwendung von Code, mit dem ein Index definiert wird.

Erstellen eines benutzerdefinierten Analysetools

Um einen benutzerdefinierten Analyzer zu erstellen, geben Sie ihn im analyzers-Abschnitt eines Indexes zur Entwurfszeit an, und verweisen Sie dann auf durchsuchbare Edm.String-Felder mithilfe der Eigenschaft analyzer oder des Und-Paars indexAnalyzer und searchAnalyzer darauf.

Eine Analysetooldefinition beinhaltet einen Namen, einen Typ, einen oder mehrere Zeichenfilter, maximal einen Tokenizer und einen oder mehrere Tokenfilter für die Verarbeitung nach der Tokenisierung. Zeichenfilter werden vor der Tokenisierung angewandt. Tokenfilter und Zeichenfilter werden von links nach rechts angewandt.

  • Die Namen in einem benutzerdefinierten Analysetool müssen eindeutig sein und dürfen mit den Namen von integrierten Analysetools, Tokenizern, Tokenfiltern oder Zeichenfiltern nicht identisch sein. Er darf nur Buchstaben, Ziffern, Leerzeichen, Bindestriche und Unterstriche enthalten. Er muss mit alphanumerischen Zeichen beginnen und enden und darf maximal 128 Zeichen lang sein.

  • Der Typ muss „#Microsoft.Azure.Search.CustomAnalyzer“ lauten.

  • charFilters kann einen oder mehrere Filter aus Zeichenfiltern enthalten, die vor der Tokenisierung in der angegebenen Reihenfolge verarbeitet werden. Einige Zeichenfilter umfassen Optionen, die in einem Abschnitt charFilters festgelegt werden können. Zeichenfilter sind optional.

  • tokenizer ist genau ein Tokenizer. Ein Wert ist erforderlich. Wenn Sie mehr als einen Tokenizer benötigen, können Sie mehrere benutzerdefinierte Analysetools erstellen und diese feldweise in Ihrem Indexschema zuordnen.

  • tokenFilters kann einen oder mehrere Filter aus Tokenfiltern enthalten, die nach der Tokenisierung in der angegebenen Reihenfolge verarbeitet werden. Fügen Sie für Tokenfilter, die Optionen umfassen, den Abschnitt tokenFilter hinzu, um die Konfiguration anzugeben. Tokenfilter sind optional.

Analysetools dürfen keine Token mit mehr als 300 Zeichen generieren. Andernfalls treten bei der Indizierung Fehler auf. Um lange Token zu kürzen oder auszuschließen, verwenden Sie TruncateTokenFilter bzw. LengthTokenFilter. Siehe Tokenfilter als Referenz.

"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,
      ...
   }
]

Innerhalb einer Indexdefinition können Sie diesen Abschnitt an beliebiger Stelle im Hauptteil einer Anforderung zum Erstellen eines Index platzieren, aber normalerweise wird er am Ende platziert:

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

Die Definition der Analysetools ist ein Teil des größeren Index. Definitionen für Zeichenfilter, Tokenizer und Tokenfilter werden dem Index nur hinzugefügt, wenn Sie benutzerdefinierte Optionen festlegen. Um einen vorhandenen Filter oder Tokenizer unverändert zu verwenden, geben Sie ihn in der Analysetooldefinition namentlich an. Weitere Informationen finden Sie unter Create Index (REST-API). Weitere Beispiele finden Sie unter Hinzufügen von Analysetools in Azure AI Search.

Testen von benutzerdefinierten Analysetools

Mit dem Test Analyzer (REST) können Sie prüfen, wie ein Analysetool Text in Token aufteilt.

Anforderung

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

Antwort

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

Aktualisieren von benutzerdefinierten Analysetools

Sobald ein Analysetool, Tokenizer, Tokenfilter oder Zeichenfilter definiert wurde, kann es bzw. er nicht mehr geändert werden. Neue können nur dann einem vorhandenen Index hinzugefügt werden, wenn das allowIndexDowntime -Flag in der Anforderung zur Indexaktualisierung auf „true“ gesetzt ist:

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

Mit diesem Vorgang wird Ihr Index für mindestens ein paar Sekunden offline geschaltet, sodass Indizierungs- und Abfrageanforderungen nicht gelingen. Leistung und Schreibverfügbarkeit des Indexes können nach der Indexaktualisierung mehrere Minuten lang eingeschränkt sein, bei sehr großen Indizes auch länger. Aber diese Auswirkungen sind nur vorübergehend und lösen sich von selbst auf.

Integrierte Analysetools

Wenn Sie ein integriertes Analysetool mit benutzerdefinierten Optionen verwenden möchten, lassen sich diese Optionen durch Erstellen eines benutzerdefinierten Analysetools angeben. Wenn Sie dagegen ein benutzerdefiniertes Analysetool unverändert verwenden möchten, müssen Sie lediglich in der Felddefinition den entsprechenden Namen angeben.

analyzer_name analyzer_type1 Beschreibung und Optionen
Schlüsselwort (keyword) (Der Typ gilt nur, wenn Optionen verfügbar sind.) Behandelt den gesamten Inhalt eines Felds als ein einzelnes Token. Dies ist nützlich für Daten wie Postleitzahlen, IDs und einige Produktnamen.
pattern PatternAnalyzer Trennt Text flexibel über ein reguläres Ausdrucksmuster in Begriffe.

Optionen

lowercase (Typ: Boolscher Wert) – bestimmt, ob Begriffe klein geschrieben werden. Der Standardwert ist „true“.

pattern (Typ: Zeichenfolge) – ein reguläres Ausdrucksmuster zum Abgleich von Tokentrennlinien. Der Standardwert ist \W+, was zum Abgleich von Nicht-Wortzeichen dient.

flags (Typ: Zeichenfolge) – Flags für einen regulären Ausdruck. Der Standardwert ist eine leere Zeichenfolge. Zulässige Werte: CANON_EQ, CASE_INSENSITIVE, COMMENTS, DOTALL, LITERAL, MULTILINE, UNICODE_CASE, UNIX_LINES

stopwords (Typ: Zeichenfolgenarray) – eine Liste mit Stoppwörtern. Der Standardwert ist eine leere Liste.
simple (Der Typ gilt nur, wenn Optionen verfügbar sind.) Teilt Text an Nicht-Buchstaben und konvertiert ihn in Kleinbuchstaben.
Standard
(Wird auch als standard.lucene bezeichnet.)
StandardAnalyzer Standardmäßiges Lucene-Analysetool, bestehend aus dem Standardtokenizer, Kleinbuchstabenfilter und Stoppfilter.

Optionen

maxTokenLength (Typ: int) – die maximale Tokenlänge. Der Standardwert ist 255. Token, die die maximale Länge überschreiten, werden geteilt. Ein Token darf maximal 300 Zeichen lang sein.

stopwords (Typ: Zeichenfolgenarray) – eine Liste mit Stoppwörtern. Der Standardwert ist eine leere Liste.
standardasciifolding.Lucene (Der Typ gilt nur, wenn Optionen verfügbar sind.) Standardanalysetool mit ASCII-Folding-Filter.
stop StopAnalyzer Teilt Text an Nicht-Buchstaben, wendet die Kleinbuchstaben- und Stoppwort-Tokenfilter an.

Optionen

stopwords (Typ: Zeichenfolgenarray) – eine Liste mit Stoppwörtern. Der Standard ist eine vordefinierte Liste für Englisch.
whitespace (Der Typ gilt nur, wenn Optionen verfügbar sind.) Ein Analysetool, das den Whitespace-Tokenizer verwendet. Token mit mehr als 255 Zeichen werden geteilt.

1 Analyzer-Typen wird im Code immer #Microsoft.Azure.Search vorangestellt, sodass PatternAnalyzer eigentlich als #Microsoft.Azure.Search.PatternAnalyzer angegeben werden würde. Wir haben das Präfix aus Gründen der Übersichtlichkeit entfernt, aber das Präfix ist in Ihrem Code erforderlich.

Der „analyzer_type“ wird nur für Analysetools angegeben, die angepasst werden können. Wenn es keine Optionen gibt, wie dies beim Schlüsselwort-Analysetool der Fall ist, gibt es keinen zugeordneten „#Microsoft.Azure.Search“-Typ.

Zeichenfilter

Zeichenfilter ermöglichen die Verarbeitung, bevor eine Zeichenfolge den Tokenizer erreicht.

Azure AI Search unterstützt die Zeichenfilter in der folgenden Liste. Weitere Informationen zu den einzelnen Filtern finden Sie in der Lucene-API-Referenz.

char_filter_name char_filter_type1 Beschreibung und Optionen
html_strip (Der Typ gilt nur, wenn Optionen verfügbar sind.) Ein Zeichenfilter, der versucht, HTML-Konstrukte zu entfernen.
mapping MappingCharFilter Ein Zeichenfilter, der anhand der Zuordnungsoptionen definierten Zuordnungen anwendet. Der Abgleich ist umfangreich (der längste Musterabgleich an einem bestimmten Punkt wird verwendet). Eine Ersetzung kann eine leere Zeichenfolge sein.

Optionen

Zuordnungen (Typ: Zeichenfolgenarray): Eine Liste an Zuordnungen im folgenden Format: a=>b (alle Vorkommen des Zeichens a werden durch das Zeichen b ersetzt). Erforderlich.
pattern_replace PatternReplaceCharFilter Ein Zeichenfilter, der Zeichen in der Eingabezeichenfolge ersetzt. Er verwendet einen regulären Ausdruck, um zu erhaltende Zeichenfolgen zu identifizieren, und ein Ersatzmuster, um zu ersetzende Zeichen zu identifizieren. Beispiel: Eingabetext = aa bb aa bb, Muster=(aa)\\\s+(bb) Ersetzen=$1#$2, Ergebnis = aa#bb aa#bb.

Optionen

pattern (Typ: Zeichenfolge) – erforderlich.

replacement (Typ: Zeichenfolge) – erforderlich.

1 Zeichenfiltertypen wird im Code immer #Microsoft.Azure.Search vorangestellt, sodass MappingCharFilter eigentlich als #Microsoft.Azure.Search.MappingCharFilter angegeben werden würde. Wir haben das Präfix entfernt, um die Breite der Tabelle zu verringern, denken Sie aber daran, das Präfix in Ihren Code einzubinden. Beachten Sie, dass „char_filter_type“ nur für Filter angegeben wird, die angepasst werden können. Wenn es keine Optionen gibt, wie dies bei „html_strip“ der Fall ist, gibt es keinen zugeordneten „#Microsoft.Azure.Search“-Typ.

Tokenizer

Ein Tokenizer teilt fortlaufenden Text in eine Sequenz von Token auf (z. B. Zerlegen eines Satzes in Wörter oder eines Worts in Stammformen).

Azure AI Search unterstützt die Tokenizer in der folgenden Liste. Weitere Informationen zu den einzelnen Filtern finden Sie in der Lucene-API-Referenz.

tokenizer_name tokenizer_type1 Beschreibung und Optionen
Klassisch ClassicTokenizer Grammatikbasierter Tokenizer, der sich für die Verarbeitung der meisten europäischsprachigen Dokumente eignet.

Optionen

maxTokenLength (Typ: int) – die maximale Tokenlänge. Standard: 255, Maximum: 300. Token, die die maximale Länge überschreiten, werden geteilt.
edgeNGram EdgeNGramTokenizer Tokenisiert die Eingabe von einem Edge in N-Gramme einer festgelegten Größe.

Optionen

minGram (Typ: int): Standard: 1, Maximum: 300.

maxGram (type: int) – Standard: 2, Maximum: 300. Der Wert muss größer als „minGram“.

tokenChars (Typ: Zeichenfolgenarray) – Zeichenklassen, die in den Token beibehalten werden. Zulässige Werte:
letter, digit, whitespace, punctuation, symbol. Der Standardwert ist ein leeres Array – behält alle Zeichen bei.
keyword_v2 KeywordTokenizerV2 Gibt die gesamte Eingabe als ein einzelnes Token aus.

Optionen

maxTokenLength (Typ: int) – die maximale Tokenlänge. Standard: 256, Maximum: 300. Token, die die maximale Länge überschreiten, werden geteilt.
letter (Der Typ gilt nur, wenn Optionen verfügbar sind.) Teilt Text in nicht-Buchstaben. Token mit mehr als 255 Zeichen werden geteilt.
lowercase (Der Typ gilt nur, wenn Optionen verfügbar sind.) Teilt Text an Nicht-Buchstaben und konvertiert ihn in Kleinbuchstaben. Token mit mehr als 255 Zeichen werden geteilt.
microsoft_language_tokenizer MicrosoftLanguageTokenizer Teilt Text mit sprachspezifische Regeln auf.

Optionen

maxTokenLength (Typ: int): Die maximale Tokenlänge, Standard: 255, Maximum: 300. Token, die die maximale Länge überschreiten, werden geteilt. Token mit mehr als 300 Zeichen werden zunächst in Token mit 300 Zeichen aufgeteilt und dann wird jeder dieser Token basierend auf "maxTokenLength" unterteilt.

isSearchTokenizer (Typ: Boolscher Wert) – wird auf „true“ gesetzt, wenn er als Such-Tokenizer verwendet wird, wird auf „false“ gesetzt, wenn er als Indexierungs-Tokenizer verwendet wird.

Sprache (Type: string): Zu verwendende Sprache, Standard english. Zulässige Werte sind:
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 Teilt Text nach sprachspezifischen Regeln auf und reduziert Wörter auf deren Grundformen. Dieser Tokenizer führt Lemmatisierung durch.

Optionen

maxTokenLength (Typ: int): Die maximale Tokenlänge, Standard: 255, Maximum: 300. Token, die die maximale Länge überschreiten, werden geteilt. Token mit mehr als 300 Zeichen werden zunächst in Token mit 300 Zeichen aufgeteilt und dann wird jeder dieser Token basierend auf "maxTokenLength" unterteilt.

isSearchTokenizer (Typ: Boolscher Wert) – wird auf „true“ gesetzt, wenn er als Such-Tokenizer verwendet wird, wird auf „false“ gesetzt, wenn er als Indexierungs-Tokenizer verwendet wird.

Sprache (Type: string): Zu verwendende Sprache, Standard english. Zulässige Werte sind:
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 Tokenisiert die Eingabe in N-Gramme einer festgelegten Größe.

Optionen

minGram (Typ: int): Standard: 1, Maximum: 300.

maxGram (type: int) – Standard: 2, Maximum: 300. Der Wert muss größer als „minGram“.

tokenChars (Typ: Zeichenfolgenarray) – Zeichenklassen, die in den Token beibehalten werden. Zulässige Werte: letter, digit, whitespace, punctuation, symbol. Der Standardwert ist ein leeres Array – behält alle Zeichen bei.
path_hierarchy_v2 PathHierarchyTokenizerV2 Tokenizer für pfadähnliche Hierarchien. Optionen

delimiter (type: Zeichenfolge) – Standard: '/.

replacement (Typ: Zeichenfolge) – wenn festgelegt, wird das Trennzeichen ersetzt. Standardmäßig ist dies identisch mit dem Wert für das Trennzeichen.

maxTokenLength (Typ: int) – die maximale Tokenlänge. Standard: 300, Maximum: 300. Pfade, die länger sind als „MaxTokenLength“ werden ignoriert.

reverse (Type: Boolscher Wert) – wenn auf „true“ festgelegt, werden Token in umgekehrter Reihenfolge generiert. Standardwert: false.

skip (Typ: Boolscher Wert) – Erste Token, die übersprungen werden. Der Standardwert ist 0.
pattern PatternTokenizer Dieser Tokenizer verwendet den RegEx-Musterabgleich, um verschiedene Token zu erstellen.

Optionen

pattern (Typ: Zeichenfolge): Ein reguläres Ausdrucksmuster zum Abgleich von Tokentrennlinien. Der Standardwert ist \W+, was zum Abgleich von Nicht-Wortzeichen dient.

flags (Typ: Zeichenfolge) – Flags für einen regulären Ausdruck. Der Standardwert ist eine leere Zeichenfolge. Zulässige Werte: CANON_EQ, CASE_INSENSITIVE, COMMENTS, DOTALL, LITERAL, MULTILINE, UNICODE_CASE, UNIX_LINES

group (Typ: Int) – die Gruppe, die in Token extrahiert werden soll. Der Standardwert ist „-1 (split)“.
standard_v2 StandardTokenizerV2 Teilt Text gemäß den Regeln für Unicode-Textsegmentierung auf.

Optionen

maxTokenLength (Typ: int) – die maximale Tokenlänge. Standard: 255, Maximum: 300. Token, die die maximale Länge überschreiten, werden geteilt.
uax_url_email UaxUrlEmailTokenizer Tokenisiert URLs und E-Mails als ein Token.

Optionen

maxTokenLength (Typ: int) – die maximale Tokenlänge. Standard: 255, Maximum: 300. Token, die die maximale Länge überschreiten, werden geteilt.
whitespace (Der Typ gilt nur, wenn Optionen verfügbar sind.) Teilt Text an den Leerzeichen auf. Token mit mehr als 255 Zeichen werden geteilt.

1 Tokenizer-Typen wird im Code immer #Microsoft.Azure.Search vorangestellt, sodass ClassicTokenizer eigentlich als #Microsoft.Azure.Search.ClassicTokenizer angegeben werden würde. Wir haben das Präfix entfernt, um die Breite der Tabelle zu verringern, denken Sie aber daran, das Präfix in Ihren Code einzubinden. Beachten Sie, dass „tokenizer_type“ nur für Tokenizer angegeben wird, die angepasst werden können. Wenn es keine Optionen gibt, wie dies beim Buchstabentokenizer der Fall ist, gibt es keinen zugehörigen „#Microsoft.Azure.Search“-Typ.

Tokenfilter

Ein Tokenfilter wird verwendet, um die von einem Tokenizer generierten Token herauszufiltern oder zu ändern. Sie können beispielsweise einen Filter für Kleinbuchstaben angeben, mit dem alle Zeichen in Kleinbuchstaben konvertiert werden. Sie können in einem benutzerdefinierten Analysemodul mehrere Tokenfilter verwenden. Tokenfilter werden in der Reihenfolge ihrer Auflistung ausgeführt.

In der folgenden Tabelle bieten die Tokenfilter, die mit Apache Lucene implementiert wurden, Links zur Lucene-API-Dokumentation.

token_filter_name token_filter_type1 Beschreibung und Optionen
arabic_normalization (Der Typ gilt nur, wenn Optionen verfügbar sind.) Ein Tokenfilter, der den Normalisierer für arabische Sprachen anwendet, um die Orthographie zu normalisieren.
apostrophe (Der Typ gilt nur, wenn Optionen verfügbar sind.) Entfernt alle Zeichen nach einem Apostroph (einschließlich des Apostrophs).
asciifolding AsciiFoldingTokenFilter Konvertiert alphabetische, numerische und symbolische Unicode-Zeichen, die in den ersten 127 ASCII-Zeichen (dem Unicode-Block Basic Latin) nicht enthalten sind, in ihre ASCII-Äquivalente, falls vorhanden.

Optionen

preserveOriginal (Typ: Boolscher Wert) – wenn auf „true“ gesetzt, wir der ursprüngliche Token beibehalten. Die Standardeinstellung ist „false“.
cjk_bigram CjkBigramTokenFilter Bildet Bigramme von CJK-Benennungen, die aus StandardTokenizer generiert werden.

Optionen

ignoreScripts (Typ: Zeichenfolgenarray) – zu ignorierende Skripte. Zulässige Werte sind han, hiragana, katakana, hangul. Der Standardwert ist eine leere Liste.

outputUnigrams (Typ: Boolscher Wert) – auf „true“ setzen, wenn Sie immer sowohl Unigramme als auch Bigramme ausgeben möchten. Die Standardeinstellung ist „false“.
cjk_width (Der Typ gilt nur, wenn Optionen verfügbar sind.) Normalisiert CJK-Breitenabweichungen. Faltet ASCII-Varianten mit voller Breite in die äquivalente Basislatein-Varianten und Katakana-Varianten mit halber Breite in die äquivalente Kana-Versionen.
Klassisch (Der Typ gilt nur, wenn Optionen verfügbar sind.) Entfernt die Possessive und Punkte aus Akronymen.
common_grams CommonGramTokenFilter Konstruiert Bigramme für häufig vorkommende Begriffe während der Indexierung. Einzelne Begriffe werden ebenfalls indexiert und mit Bigrammen überlagert.

Optionen

commonWords (Typ: Zeichenfolgenarray) – der Satz an allgemeinen Wörtern. Der Standardwert ist eine leere Liste. Erforderlich.

ignoreCase (Typ: Boolscher Wert) – wenn auf „true“ gesetzt, wird beim Abgleich die Groß-/Kleinschreibung berücksichtigt. Die Standardeinstellung ist „false“.

queryMode (Typ: Boolscher Wert) – Generiert Bigramme und entfernt dann allgemeine Wörter und einzelne Begriffe, gefolgt von einem allgemeinen Wort. Die Standardeinstellung ist „false“.
dictionary_decompounder DictionaryDecompounderTokenFilter Zerlegt zusammengesetzte Wörter, die in vielen germanischen Sprachen vorkommen.

Optionen

wordList (Typ: Zeichenfolgenarray) – die Liste der Wörter, die abgeglichen wird. Der Standardwert ist eine leere Liste. Erforderlich.

minWordSize (Typ: int): Es werden nur Wörter verarbeitet, die länger als dieser Wert sind. Der Standard ist 5.

minSubwordSize (Typ: int): Es werden nur Wörter ausgegeben, die länger als dieser Wert sind. Der Standard ist 2.

maxSubwordSize (Typ: int): Es werden nur Wörter ausgegeben, die kürzer als dieser Wert sind. Der Standardwert beträgt 15.

onlyLongestMatch (Typ: Boolscher Wert) – es wird nur das Teilwort mit der längsten Übereinstimmung ausgegeben. Die Standardeinstellung ist „false“.
edgeNGram_v2 EdgeNGramTokenFilterV2 Generiert N-Gramme einer festgelegten Größe beginnend am Anfang oder Ende eines Ausgabetokens.

Optionen

minGram (Typ: int): Standard: 1, Maximum: 300.

maxGram (Typ: int): Standard: 2, Maximum: 300. Der Wert muss größer als „minGram“.

side (Typ: Zeichenfolge) – gibt an, von welcher Seite der Eingabe aus das N-Gramm generiert werden soll. Zulässige Werte: front, back.
elision ElisionTokenFilter Entfernt Elisionen. Beispielsweise wird l'avion (die Ebene) in avion (Ebene) konvertiert.

Optionen

articles (Typ: Zeichenfolgenarray) – ein Satz an zu entfernenden Artikeln. Der Standardwert ist eine leere Liste. Wenn es keine Liste von festgelegten Artikeln gibt, werden alle französischen Artikel standardmäßig entfernt.
german_normalization (Der Typ gilt nur, wenn Optionen verfügbar sind.) Normalisiert deutsche Zeichen gemäß der Heuristik des German2 Snowball-Algorithmus.
hindi_normalization (Der Typ gilt nur, wenn Optionen verfügbar sind.) Normalisiert Text in Hindi, um einige Unterschiede in der Schreibweise zu beseitigen.
indic_normalization IndicNormalizationTokenFilter Normalisiert die Unicode-Darstellung von Text in indischen Sprachen.
keep KeepTokenFilter Ein Tokenfilter, der nur Token mit Text in der angegebenen Wortliste enthält.

Optionen

keepWords (Typ: Zeichenfolgenarray) – eine Liste von beizubehaltenden Wörtern. Der Standardwert ist eine leere Liste. Erforderlich.

keepWordsCase (Typ: Boolscher Wert) – wenn auf „true“ gesetzt, werden zunächst alle Wörter klein geschrieben. Die Standardeinstellung ist „false“.
keyword_marker KeywordMarkerTokenFilter Begriffe werden als Schlüsselwörter gekennzeichnet.

Optionen

keywords (Typ: Zeichenfolgenarray) – eine Liste von Wörtern, die als Schlüsselwörter gekennzeichnet werden. Der Standardwert ist eine leere Liste. Erforderlich.

ignoreCase (Typ: Boolscher Wert) – wenn auf „true“ gesetzt, werden zunächst alle Wörter klein geschrieben. Die Standardeinstellung ist „false“.
keyword_repeat (Der Typ gilt nur, wenn Optionen verfügbar sind.) Gibt jedes eingehende Token zweimal als Schlüsselwort und einmal als Nicht-Schlüsselwort aus.
kstem (Der Typ gilt nur, wenn Optionen verfügbar sind.) Ein Hochleistungs-kstem-Filter für Englisch.
length LengthTokenFilter Entfernt die Wörter, die zu lang oder zu kurz sind.

Optionen

min (Typ: int) – die Mindestanzahl. Standard: 0, Maximum: 300.

max (type: int) – die Maximalanzahl. Standard: 300, Maximum: 300.
limit Microsoft.Azure.Search.LimitTokenFilter Beschränkt die Anzahl der Token während der Indizierung.

Optionen

MaxTokenCount (Typ: Int) – maximale Anzahl der zu erzeugenden Token. Der Standardwert ist 1.

consumeAllTokens (Typ: Boolscher Wert) – legt fest, ob alle Token aus der Ausgabe verarbeitet werden, auch wenn der Wert für „maxTokenCount“ erreicht ist. Die Standardeinstellung ist „false“.
lowercase (Der Typ gilt nur, wenn Optionen verfügbar sind.) Normalisiert den Tokentext in Kleinbuchstaben.
nGram_v2 NGramTokenFilterV2 Generiert N-Gramme einer festgelegten Größe.

Optionen

minGram (Typ: int): Standard: 1, Maximum: 300.

maxGram (Typ: int): Standard: 2, Maximum: 300. Der Wert muss größer als „minGram“.
pattern_capture PatternCaptureTokenFilter Verwendet Java-RegExe zur Ausgabe mehrerer Token – eines für jede Erfassungsgruppe in einem oder mehreren Mustern.

Optionen

patterns (Typ: Zeichenfolgenarray) – eine Liste von Mustern, die mit jedem Token abgeglichen werden. Erforderlich.

preserveOriginal (Typ: Boolscher Wert) – wenn auf „true“ gesetzt, wird der ursprüngliche Token zurückgegeben, auch wenn eines der Muster übereinstimmt, Standard: true
pattern_replace PatternReplaceTokenFilter Ein Tokenfilter, der jedem Token im Stream ein Muster zuweist und Übereinstimmungen durch die angegebene Ersetzungszeichenkette ersetzt.

Optionen

pattern (Typ: Zeichenfolge) – erforderlich.

replacement (Typ: Zeichenfolge) – erforderlich.
persian_normalization (Der Typ gilt nur, wenn Optionen verfügbar sind.) Wendet die Normalisierung für Persisch an.
phonetic PhoneticTokenFilter Erstellt Token für phonetische Übereinstimmungen.

Optionen

encoder (Typ: Zeichenfolge) – zu verwendender phonetischer Encoder. Zulässige Werte sind: metaphone, doubleMetaphone, soundex, refinedSoundex, caverphone1, caverphone2, cologne, nysiis, koelnerPhonetik, haasePhonetik, beiderMorse. Standardwert: metaphone. Der Standard lautet "metaphone".

Weitere Informationen finden Sie unter Encoder.

replace (Typ: Boolscher Wert) – wird auf „true“ gesetzt, wenn das kodierte Token das ursprüngliche Token ersetzen soll, „false“, wenn sie als Synonyme hinzugefügt werden sollen. Der Standardwert ist „true“.
porter_stem (Der Typ gilt nur, wenn Optionen verfügbar sind.) Transformiert den Tokenstream gemäß Porter-Stemmer-Algorithmus.
umkehren (Der Typ gilt nur, wenn Optionen verfügbar sind.) Kehrt die Tokenzeichenfolge um.
scandinavian_normalization (Der Typ gilt nur, wenn Optionen verfügbar sind.) Normalisiert die Verwendung der austauschbar skandinavische Zeichen.
scandinavian_folding (Der Typ gilt nur, wenn Optionen verfügbar sind.) Faltet skandinavische Zeichen åÅäæÄÆin a und öÖøØin o. Es diskriminiert auch gegen die Verwendung von doppelten Vokalen aa, ae, ao, oe und oo, wo jeweils nur der erste übrig bleibt.
shingle ShingleTokenFilter Kombiniert Token zu einem einzelnen Token.

Optionen

maxShingleSize (Typ: int) – Standard ist 2.

minShingleSize (Typ: int) – Standard ist 2.

outputUnigrams (Typ: Boolscher Wert) – wenn „true“ enthält der Ausgabestream die Eingabetoken (Unigramme) und die Schindeln. Der Standardwert ist „true“.

outputUnigramsIfNoShingles (Typ: Boolscher Wert) – wenn „true“ wird das Verhalten von „outputUnigrams==false“ für die Fälle überschrieben, bei denen keine Schindeln verfügbar sind. Die Standardeinstellung ist „false“.

tokenSeparator (Typ: Zeichenfolge) – Die Zeichenfolge, die beim Verbinden benachbarter Token zum Bilden einer Schindel verwendet werden soll. Der Standardwert ist ein einzelnes Leerzeichen .

FilterToken (Typ: Zeichenfolge) – Die Zeichenfolge, die für jede Position eingefügt werden soll, an der sich kein Token befindet. Der Standardwert ist _.
snowball SnowballTokenFilter Snowball-Tokenfilter.

Optionen

language (Typ: string): Zulässige Werte sind: 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 Normalisiert die Unicode-Darstellung von Sorani-Text.

Optionen

Keine.
stemmer StemmerTokenFilter Sprachspezifischer für die Wortstammerkennung.

Optionen

language (Typ: Zeichenfolge) – Zulässige Werte sind:
- 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 Alle aus einem Wörterbuch stammenden Begriffe werden als Schlüsselwörter markiert, wodurch verhindert wird, dass sie die Kette hinuntergereicht werden. Muss vor dem Filter für die Wortstammerkennung platziert werden.

Optionen

rules (Typ: string array): Wortstammerkennungsregeln im folgenden Format word => stem zum Beispiel ran => run. Der Standardwert ist eine leere Liste. Erforderlich.
stopwords StopwordsTokenFilter Entfernt Stoppwörter aus einem Tokenstream. Standardmäßig verwendet der Filter eine vordefinierte Stoppwortliste für Englisch.

Optionen

stopwords (Typ: Zeichenfolgenarray) – eine Liste mit Stoppwörtern. Kann nicht angegeben werden, wenn eine „stopwordsList“ angegeben wird.

stopwordsList (Typ: Zeichenfolge) – eine vordefinierte Liste an Stoppwörtern. Kann nicht angegeben werden, wenn stopwords angegeben wird. Zulässige Werte sind: 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, Standardwert: english. Kann nicht angegeben werden, wenn stopwords angegeben wird.

ignoreCase (Typ: Boolscher Wert) – wenn auf „true“ gesetzt, werden zunächst alle Wörter klein geschrieben. Die Standardeinstellung ist „false“.

removeTrailing (Typ: Boolscher Wert) – wenn auf „true“ gesetzt, wird der letzte Suchbegriff ignoriert, wenn dieser ein Stoppwort ist. Der Standardwert ist „true“.
synonym SynonymTokenFilter Gleicht Synonyme mit einzelnen oder mehreren Wörtern in einem Tokenstream ab.

Optionen

synonyms (Typ: Zeichenfolgenarray) – erforderlich. Liste von Synonymen in einem der beiden folgenden Formate:

-incredible, unbelievable, fabulous => amazing – alle Begriffe auf der linken Seite von => werden durch alle Begriffe auf der rechten Seite ersetzt.

-incredible, unbelievable, fabulous, amazing – eine durch Kommas getrennte Liste von äquivalenten Wörtern. Legen Sie die expand-Option fest, um zu ändern, wie diese Liste interpretiert wird.

ignoreCase (Type: Boolscher Wert) – Groß-/Kleinschreibung faltet die Eingabe für den Abgleich. Die Standardeinstellung ist „false“.

expand (Typ: Boolscher Wert) – wenn „true“ werden alle Wörter in der Liste der Synonyme (wenn Notation => nicht verwendet wird) einander zugeordnet.
Die folgende Liste: „incredible, unbelievable, fabulous, amazing“ entspricht: „incredible, unbelievable, fabulous, amazing => incredible, unbelievable, fabulous, amazing“

Wenn „false“: die folgende Liste: „incredible, unbelievable, fabulous, amazing“ entspricht: „ incredible, unbelievable, fabulous, amazing => incredible“
trim (Der Typ gilt nur, wenn Optionen verfügbar sind.) Entfernt führende und nachfolgende Leerzeichen aus Token.
truncate TruncateTokenFilter Schneidet die Begriffe auf eine bestimmte Länge zu.

Optionen

length (Typ: int): Standard: 300, Maximum: 300. Erforderlich.
unique UniqueTokenFilter Filtert Token mit dem gleichen Text wie das vorherige Token heraus.

Optionen

onlyOnSamePosition (Typ: Boolscher Wert) – wenn festgelegt, werden nur Duplikate an der selben Position entfernt. Der Standardwert ist „true“.
uppercase (Der Typ gilt nur, wenn Optionen verfügbar sind.) Normalisiert Tokentext in Großbuchstaben.
word_delimiter WordDelimiterTokenFilter Unterteilt Wörter in Teilwörter und führt optionale Transformationen in Teilwortgruppen durch.

Optionen

generateWordParts (Typ: bool): Bewirkt, dass Teile von Wörtern generiert werden, z. B. wird AzureSearch zu AzureSearch. Der Standardwert ist „true“.

generateNumberParts (Typ: Boolscher Wert) – führt dazu, dass Nummernteilwörter generiert werden. Der Standardwert ist „true“.

catenateWords (Typ: bool): Verursacht maximale Durchläufe von Wortteilen, die verkettet werden, z. B. wird Azure-Search zu AzureSearch. Die Standardeinstellung ist „false“.

catenateNumbers (Typ: bool): Verursacht maximale Durchläufe von Nummernteilen, die verkettet werden, z.B. wird 1-2 zu 12. Die Standardeinstellung ist „false“.

catenateAll (Typ: bool): Bewirkt, dass alle Teilwortteile verkettet werden, z. B. wird Azure-Search-1 zu AzureSearch1. Die Standardeinstellung ist „false“.

splitOnCaseChange (Typ: bool): Wenn wahr, werden Wörter in caseChange geteilt, z. B. wird AzureSearch zu AzureSearch. Der Standardwert ist „true“.

preserveOriginal – führt dazu, dass die ursprünglichen Wörter beibehalten und zur Teilwortliste hinzugefügt werden. Die Standardeinstellung ist „false“.

splitOnNumerics (Typ: bool): Wenn wahr, teilt es Zahlen auf, z. B. wird Azure1Search zu Azure1Search. Der Standardwert ist „true“.

stemEnglishPossessive (Typ: bool): Führt dazu, dass das nachgestellte 's für jedes Teilwort entfernt werden. Der Standardwert ist „true“.

protectedWords (Type: Zeichenfolgenarray) – Token, die vor dem Trennen geschützt werden sollen. Der Standardwert ist eine leere Liste.

1 Tokenfiltertypen wird im Code immer #Microsoft.Azure.Search vorangestellt, sodass ArabicNormalizationTokenFilter eigentlich als #Microsoft.Azure.Search.ArabicNormalizationTokenFilter angegeben werden würde. Wir haben das Präfix entfernt, um die Breite der Tabelle zu verringern, denken Sie aber daran, das Präfix in Ihren Code einzubinden.

Siehe auch