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 AbschnittcharFilters
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 AbschnitttokenFilter
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_type 1 | 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_type 1 | 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_type 1 | 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_type 1 | 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 Azure Search . 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 TRUE, werden Wörter in caseChange geteilt, z. B. wird AzureSearch zu Azure Search . 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): Bei TRUE wird an Zahlen getrennt, z. B. wird Azure1Search zu Azure 1 Search . 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.