Dodawanie analizatorów niestandardowych do pól ciągów w indeksie usługi Azure AI Search
Analizator niestandardowy to zdefiniowana przez użytkownika kombinacja jednego tokenizatora, co najmniej jednego filtru tokenu i co najmniej jednego filtru znaków. Analizator niestandardowy jest określany w indeksie wyszukiwania, a następnie odwołuje się do nazwy w definicjach pól, które wymagają analizy niestandardowej. Analizator niestandardowy jest wywoływany dla poszczególnych pól. Atrybuty w polu określają, czy są używane do indeksowania, zapytań, czy obu tych elementów.
W analizatorze niestandardowym filtry znaków przygotowują tekst wejściowy przed przetworzeniem go przez tokenizator (na przykład usunięcie znaczników). Następnie tokenizator dzieli tekst na tokeny. Na koniec filtry tokenów modyfikują tokeny emitowane przez tokenizator. Aby zapoznać się z pojęciami i przykładami, zobacz Analizatory w usłudze Azure AI Search.
Dlaczego warto używać analizatora niestandardowego?
Analizator niestandardowy zapewnia kontrolę nad procesem konwertowania tekstu na tokeny z możliwością indeksowania i wyszukiwania, umożliwiając wybranie typów analizy lub filtrowania do wywołania oraz kolejności ich wystąpienia.
Tworzenie i przypisywanie analizatora niestandardowego, jeśli żaden z domyślnych (Lucence w warstwie Standardowa), wbudowany lub analizatory języka są wystarczające dla Twoich potrzeb. Możesz również utworzyć analizator niestandardowy, jeśli chcesz użyć wbudowanego analizatora z opcjami niestandardowymi. Jeśli na przykład chcesz zmienić wartość maxTokenLength w warstwie Standardowa, utwórz analizator niestandardowy o nazwie zdefiniowanej przez użytkownika, aby ustawić tę opcję.
Scenariusze, w których analizatory niestandardowe mogą być przydatne, obejmują:
Używanie filtrów znaków do usuwania znaczników HTML przed wprowadzaniem tekstu są tokenizowane lub zastępowanie niektórych znaków lub symboli.
Wyszukiwanie fonetyczne. Dodaj filtr fonetyczny, aby włączyć wyszukiwanie w oparciu o to, jak brzmi słowo, a nie sposób jego pisowni.
Wyłącz analizę leksykalną. Użyj analizatora słów kluczowych, aby utworzyć pola, które nie są analizowane.
Szybkie wyszukiwanie prefiksów/sufiksów. Dodaj filtr tokenu N-gram edge do prefiksów indeksów wyrazów, aby umożliwić szybkie dopasowywanie prefiksów. Połącz go z filtrem tokenu odwrotnego, aby wykonać dopasowywanie sufiksów.
Tokenizacja niestandardowa. Na przykład użyj tokenizatora białych znaków, aby podzielić zdania na tokeny przy użyciu białych znaków jako ogranicznika
Składanie ASCII. Dodaj filtr składania standardowego ASCII, aby znormalizować znaki diakrytyczne, takie jak ö lub ê w terminach wyszukiwania.
Uwaga
Analizatory niestandardowe nie są widoczne w witrynie Azure Portal. Jedynym sposobem dodania analizatora niestandardowego jest użycie kodu definiującego indeks.
Tworzenie niestandardowego analizatora
Aby utworzyć analizator niestandardowy, określ go w analyzers
sekcji indeksu w czasie projektowania, a następnie odwołaj się do niego w przypadku wyszukiwania, Edm.String
pól przy użyciu analyzer
właściwości lub indexAnalyzer
pary i searchAnalyzer
.
Definicja analizatora zawiera nazwę, typ, co najmniej jeden filtr znaków, maksymalnie jeden tokenizer i co najmniej jeden filtr tokenu na potrzeby przetwarzania po tokenizacji. Filtry znaków są stosowane przed tokenizacją. Filtry tokenów i filtry znaków są stosowane od lewej do prawej.
Nazwy w analizatorze niestandardowym muszą być unikatowe i nie mogą być takie same jak żadne wbudowane analizatory, tokenizatory, filtry tokenów lub filtry znaków. Musi zawierać tylko litery, cyfry, spacje, kreski lub podkreślenia, mogą zaczynać i kończyć się tylko znakami alfanumerycznymi i jest ograniczona do 128 znaków.
Typ musi być #Microsoft.Azure.Search.CustomAnalyzer.
charFilters
Może to być jeden lub więcej filtrów z filtrów znaków, przetworzonych przed tokenizacją, w podanej kolejności. Niektóre filtry znaków mają opcje, które można ustawić wcharFilters
sekcji. Filtry znaków są opcjonalne.tokenizer
jest dokładnie jednym tokenizatorem. Wymagana jest wartość. Jeśli potrzebujesz więcej niż jednego tokenizatora, możesz utworzyć wiele analizatorów niestandardowych i przypisać je na podstawie pola w schemacie indeksu.tokenFilters
może być jednym lub więcej filtrów z filtrów tokenów, przetworzonych po tokenizacji, w podanej kolejności. W przypadku filtrów tokenów, które mają opcje, dodaj sekcję, aby określić konfiguracjętokenFilter
. Filtry tokenów są opcjonalne.
Analizatory nie mogą tworzyć tokenów dłuższych niż 300 znaków lub indeksowanie zakończy się niepowodzeniem. Aby przyciąć długi token lub wykluczyć je, użyj odpowiednio truncateTokenFilter i LengthTokenFilter. Zobacz Filtry tokenów , aby uzyskać informacje.
"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,
...
}
]
W ramach definicji indeksu możesz umieścić tę sekcję w dowolnym miejscu w treści żądania tworzenia indeksu, ale zwykle jest to na końcu:
{
"name": "name_of_index",
"fields": [ ],
"suggesters": [ ],
"scoringProfiles": [ ],
"defaultScoringProfile": (optional) "...",
"corsOptions": (optional) { },
"analyzers":(optional)[ ],
"charFilters":(optional)[ ],
"tokenizers":(optional)[ ],
"tokenFilters":(optional)[ ]
}
Definicja analizatora jest częścią większego indeksu. Definicje filtrów znaków, tokenizatorów i filtrów tokenów są dodawane do indeksu tylko wtedy, gdy ustawiasz opcje niestandardowe. Aby użyć istniejącego filtru lub tokenizatora, określ go według nazwy w definicji analizatora. Aby uzyskać więcej informacji, zobacz Tworzenie indeksu (REST). Aby uzyskać więcej przykładów, zobacz Dodawanie analizatorów w usłudze Azure AI Search.
Testowanie analizatorów niestandardowych
Analizator testów (REST) umożliwia sprawdzenie, jak analizator dzieli dany tekst na tokeny.
Zażądaj
POST https://[search service name].search.windows.net/indexes/[index name]/analyze?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
{
"analyzer":"my_analyzer",
"text": "Vis-à-vis means Opposite"
}
Response
{
"tokens": [
{
"token": "vis_a_vis",
"startOffset": 0,
"endOffset": 9,
"position": 0
},
{
"token": "vis_à_vis",
"startOffset": 0,
"endOffset": 9,
"position": 0
},
{
"token": "means",
"startOffset": 10,
"endOffset": 15,
"position": 1
},
{
"token": "opposite",
"startOffset": 16,
"endOffset": 24,
"position": 2
}
]
}
Aktualizowanie analizatorów niestandardowych
Po zdefiniowaniu analizatora tokenu, filtru tokenu lub filtru znaków nie można go modyfikować. Nowe można dodać do istniejącego indeksu tylko wtedy, gdy flaga allowIndexDowntime
ma wartość true w żądaniu aktualizacji indeksu:
PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=[api-version]&allowIndexDowntime=true
Ta operacja przełącza indeks w tryb offline przez co najmniej kilka sekund, powodując niepowodzenie indeksowania i żądań zapytań. Wydajność i dostępność zapisu indeksu może być obniżona przez kilka minut po zaktualizowaniu indeksu lub dłużej w przypadku bardzo dużych indeksów, ale te efekty są tymczasowe i ostatecznie rozwiązane samodzielnie.
Wbudowane analizatory
Jeśli chcesz użyć wbudowanego analizatora z opcjami niestandardowymi, tworzenie analizatora niestandardowego jest mechanizmem określania tych opcji. Natomiast aby użyć wbudowanego analizatora w stanie rzeczywistym, wystarczy odwołać się do niego według nazwy w definicji pola.
analyzer_name | analyzer_type 1 | Opis i opcje |
---|---|---|
słowo kluczowe | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Traktuje całą zawartość pola jako pojedynczy token. Jest to przydatne w przypadku danych, takich jak kody pocztowe, identyfikatory i niektóre nazwy produktów. |
deseń | PatternAnalyzer | Elastycznie oddziela tekst na terminy za pomocą wzorca wyrażenia regularnego. Opcje małe litery (typ: bool) — określa, czy terminy są małe. Wartość domyślna to true. pattern (typ: ciąg) — wzorzec wyrażenia regularnego odpowiadający separatorom tokenów. Wartość domyślna to \W+ , która pasuje do znaków innych niż word. flagi (typ: ciąg) — flagi wyrażeń regularnych. Wartość domyślna to pusty ciąg. Dozwolone wartości: CANON_EQ, CASE_INSENSITIVE, KOMENTARZE, DOTALL, LITERAŁ, MULTILINE, UNICODE_CASE, UNIX_LINES stopwords (typ: tablica ciągów) — lista stopwords. Wartość domyślna to pusta lista. |
prosty | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Dzieli tekst na litery inne niż litery i konwertuje je na małe litery. |
norma (Nazywane również standard.lucene) |
StandardAnalyzer | Standardowy analizator Lucene składa się z standardowego tokenizatora, filtru małego i filtru zatrzymania. Opcje maxTokenLength (typ: int) — maksymalna długość tokenu. Wartość domyślna to 255. Tokeny dłuższe niż maksymalna długość są dzielone. Maksymalna długość tokenu, która może być używana, to 300 znaków. stopwords (typ: tablica ciągów) — lista stopwords. Wartość domyślna to pusta lista. |
standardasciifolding.lucene | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Analizator standardowy z filtrem składania Ascii. |
zatrzymać | StopAnalyzer | Dzieli tekst na litery inne niż litery, stosuje małe litery i filtry tokenu stopword. Opcje stopwords (typ: tablica ciągów) — lista stopwords. Wartość domyślna to wstępnie zdefiniowana lista języka angielskiego. |
Odstępu | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Analizator używający tokenizatora odstępów. Tokeny, które są dłuższe niż 255 znaków, są podzielone. |
1 Typy analizatorów są zawsze prefiksowane w kodzie, #Microsoft.Azure.Search
tak aby PatternAnalyzer
faktycznie zostały określone jako #Microsoft.Azure.Search.PatternAnalyzer
. Usunęliśmy prefiks zwięzłości, ale prefiks jest wymagany w kodzie.
Analyzer_type jest udostępniany tylko dla analizatorów, które można dostosować. Jeśli nie ma żadnych opcji, tak jak w przypadku analizatora słów kluczowych, nie ma skojarzonego typu #Microsoft.Azure.Search.
Filtry znaków
Filtry znaków dodają przetwarzanie, zanim ciąg osiągnie tokenizator.
Usługa Azure AI Search obsługuje filtry znaków na poniższej liście. Więcej informacji na temat każdego z nich można znaleźć w dokumentacji interfejsu API Lucene.
char_filter_name | char_filter_type 1 | Opis i opcje |
---|---|---|
html_strip | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Filtr znaków, który próbuje usunąć konstrukcje HTML. |
mapping | MappingCharFilter | Filtr znaków, który stosuje mapowania zdefiniowane za pomocą opcji mapowania. Dopasowanie jest chciwe (najdłuższe dopasowanie wzorca w danym punkcie wygrywa). Zastąpienie może być pustym ciągiem. Opcje mapowania (typ: tablica ciągów) — lista mapowań w następującym formacie: a=>b (wszystkie wystąpienia znaku a są zastępowane znakiem b ). Wymagany. |
pattern_replace | PatternReplaceCharFilter | Filtr znaków, który zastępuje znaki w ciągu wejściowym. Używa wyrażenia regularnego do identyfikowania sekwencji znaków w celu zachowania i wzorca zastępczego w celu zidentyfikowania znaków do zastąpienia. Na przykład tekst wejściowy = aa bb aa bb , pattern=(aa)\\\s+(bb) replacement=$1#$2 , result = aa#bb aa#bb . Opcje pattern (typ: ciąg) — wymagane. replacement (typ: ciąg) — wymagane. |
1 Typy filtrów char są zawsze prefiksowane w kodzie, #Microsoft.Azure.Search
tak aby MappingCharFilter
faktycznie zostały określone jako #Microsoft.Azure.Search.MappingCharFilter
. Usunęliśmy prefiks, aby zmniejszyć szerokość tabeli, ale pamiętaj, aby uwzględnić go w kodzie. Zwróć uwagę, że char_filter_type jest dostępna tylko dla filtrów, które można dostosować. Jeśli nie ma żadnych opcji, tak jak w przypadku html_strip, nie ma skojarzonego typu #Microsoft.Azure.Search.
Tokenizatory
Tokenizer dzieli ciągły tekst na sekwencję tokenów, takich jak dzielenie zdania na wyrazy lub wyraz na formularze główne.
Usługa Azure AI Search obsługuje tokenizatory na poniższej liście. Więcej informacji na temat każdego z nich można znaleźć w dokumentacji interfejsu API Lucene.
tokenizer_name | tokenizer_type 1 | Opis i opcje |
---|---|---|
klasyczny | ClassicTokenizer | Tokenizator oparty na gramatyce, który jest odpowiedni do przetwarzania większości dokumentów w języku europejskim. Opcje maxTokenLength (typ: int) — maksymalna długość tokenu. Wartość domyślna: 255, maksymalna: 300. Tokeny dłuższe niż maksymalna długość są dzielone. |
edgeNGram | EdgeNGramTokenizer | Tokenizuje dane wejściowe z krawędzi do n-gramów danego rozmiaru. Opcje minGram (typ: int) — wartość domyślna: 1, maksymalna: 300. maxGram (typ: int) — wartość domyślna: 2, maksymalna: 300. Musi być większy niż minGram. tokenChars (typ: tablica ciągów) — klasy znaków do przechowywania w tokenach. Dozwolone wartości: letter , , digit , whitespace , punctuation , symbol . Domyślnie jest to pusta tablica — przechowuje wszystkie znaki. |
keyword_v2 | Słowo kluczoweTokenizerV2 | Emituje całe dane wejściowe jako pojedynczy token. Opcje maxTokenLength (typ: int) — maksymalna długość tokenu. Wartość domyślna: 256, maksymalna: 300. Tokeny dłuższe niż maksymalna długość są dzielone. |
litera | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Dzieli tekst na litery inne niż litery. Tokeny, które są dłuższe niż 255 znaków, są podzielone. |
Małe litery | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Dzieli tekst na litery inne niż litery i konwertuje je na małe litery. Tokeny, które są dłuższe niż 255 znaków, są podzielone. |
microsoft_language_tokenizer | MicrosoftLanguageTokenizer | Dzieli tekst przy użyciu reguł specyficznych dla języka. Opcje maxTokenLength (typ: int) — maksymalna długość tokenu, domyślna: 255, maksymalna: 300. Tokeny dłuższe niż maksymalna długość są dzielone. Tokeny dłuższe niż 300 znaków są najpierw podzielone na tokeny o długości 300, a następnie każdy z tych tokenów jest podzielony na podstawie zestawu maxTokenLength. isSearchTokenizer (typ: bool) — ustaw wartość true, jeśli jest używana jako tokenizer wyszukiwania, ustaw wartość false, jeśli jest używana jako tokenizer indeksowania. language (typ: ciąg) — język do użycia, wartość domyślna english . Dozwolone wartości obejmują: bangla , bulgarian , , chineseSimplified catalan 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 | Dzieli tekst przy użyciu reguł specyficznych dla języka i zmniejsza liczbę wyrazów do ich podstawowych formularzy. Ten tokenizer wykonuje lemmatyzację. Opcje maxTokenLength (typ: int) — maksymalna długość tokenu, domyślna: 255, maksymalna: 300. Tokeny dłuższe niż maksymalna długość są dzielone. Tokeny dłuższe niż 300 znaków są najpierw podzielone na tokeny o długości 300, a następnie każdy z tych tokenów jest podzielony na podstawie zestawu maxTokenLength. isSearchTokenizer (typ: bool) — ustaw wartość true, jeśli jest używana jako tokenizer wyszukiwania, ustaw wartość false, jeśli jest używana jako tokenizer indeksowania. language (typ: ciąg) — język do użycia, wartość domyślna english . Dozwolone wartości obejmują: 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 | Tokenizuje dane wejściowe do n-gramów danego rozmiaru. Opcje minGram (typ: int) — wartość domyślna: 1, maksymalna: 300. maxGram (typ: int) — wartość domyślna: 2, maksymalna: 300. Musi być większy niż minGram. tokenChars (typ: tablica ciągów) — klasy znaków do przechowywania w tokenach. Dozwolone wartości: letter , , whitespace digit , punctuation , symbol . Domyślnie jest to pusta tablica — przechowuje wszystkie znaki. |
path_hierarchy_v2 | PathHierarchyTokenizerV2 | Tokenizer dla hierarchii przypominających ścieżkę. Opcje Ogranicznik (typ: ciąg) — wartość domyślna: '/. replace (typ: ciąg) — w przypadku ustawienia zastępuje znak ogranicznika. Wartość domyślna jest taka sama jak wartość ogranicznika. maxTokenLength (typ: int) — maksymalna długość tokenu. Wartość domyślna: 300, maksymalna: 300. Ścieżki dłuższe niż maxTokenLength są ignorowane. reverse (typ: bool) — jeśli wartość true, generuje token w odwrotnej kolejności. Wartość domyślna: false. skip (typ: wartość logiczna) — tokeny początkowe do pominięcia. Wartość domyślna to 0. |
deseń | PatternTokenizer | Ten tokenizer używa dopasowania wzorca wyrażeń regularnych do konstruowania unikatowych tokenów. Opcje pattern (typ: ciąg) — wzorzec wyrażenia regularnego odpowiadający separatorom tokenów. Wartość domyślna to \W+ , która pasuje do znaków innych niż word. flagi (typ: ciąg) — flagi wyrażeń regularnych. Wartość domyślna to pusty ciąg. Dozwolone wartości: CANON_EQ, CASE_INSENSITIVE, KOMENTARZE, DOTALL, LITERAŁ, MULTILINE, UNICODE_CASE, UNIX_LINES group (typ: int) — która grupa ma być wyodrębniana do tokenów. Wartość domyślna to -1 (podział). |
standard_v2 | StandardTokenizerV2 | Podział tekstu zgodnie z regułami segmentacji tekstu Unicode. Opcje maxTokenLength (typ: int) — maksymalna długość tokenu. Wartość domyślna: 255, maksymalna: 300. Tokeny dłuższe niż maksymalna długość są dzielone. |
uax_url_email | UaxUrlEmailTokenizer | Tokenizuje adresy URL i wiadomości e-mail jako jeden token. Opcje maxTokenLength (typ: int) — maksymalna długość tokenu. Wartość domyślna: 255, maksymalna: 300. Tokeny dłuższe niż maksymalna długość są dzielone. |
Odstępu | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Dzieli tekst na białe znaki. Tokeny, które są dłuższe niż 255 znaków, są podzielone. |
1 Typy tokenizatora są zawsze prefiksowane w kodzie, #Microsoft.Azure.Search
tak aby ClassicTokenizer
faktycznie zostały określone jako #Microsoft.Azure.Search.ClassicTokenizer
. Usunęliśmy prefiks, aby zmniejszyć szerokość tabeli, ale pamiętaj, aby uwzględnić go w kodzie. Zwróć uwagę, że tokenizer_type jest udostępniana tylko dla tokenizatorów, które można dostosować. Jeśli nie ma żadnych opcji, tak jak w przypadku tokenizatora litery, nie ma skojarzonego typu #Microsoft.Azure.Search.
Filtry tokenów
Filtr tokenu służy do filtrowania lub modyfikowania tokenów generowanych przez tokenizatora. Można na przykład określić filtr małych liter, który konwertuje wszystkie znaki na małe litery. Możesz mieć wiele filtrów tokenów w analizatorze niestandardowym. Filtry tokenów są uruchamiane w kolejności, w której są wyświetlane.
W poniższej tabeli filtry tokenów implementowane przy użyciu platformy Apache Lucene są połączone z dokumentacją interfejsu API Lucene.
token_filter_name | token_filter_type 1 | Opis i opcje |
---|---|---|
arabic_normalization | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Filtr tokenu, który stosuje arabski normalizator w celu normalizacji ortografii. |
apostrof | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Usuwa wszystkie znaki po apostrofie (w tym sam apostrof). |
asciifolding | AsciiFoldingTokenFilter | Konwertuje znaki alfabetyczne, liczbowe i symboliczne Unicode, które nie mają pierwszych 127 znaków ASCII ( Basic Latin blok Unicode) na ich odpowiedniki ASCII, jeśli istnieje.Opcje preserveOriginal (typ: bool) — jeśli wartość true, oryginalny token jest przechowywany. Wartością domyślną jest false. |
cjk_bigram | CjkBigramTokenFilter | Tworzy bigramy terminów CJK generowanych na podstawie standardtokenizer. Opcje ignoreScripts (typ: tablica ciągów) — skrypty do ignorowania. Dozwolone wartości to: han , , katakana hiragana , hangul . Wartość domyślna to pusta lista.outputUnigrams (typ: bool) — ustaw wartość true, jeśli zawsze chcesz wyświetlić zarówno jednogramy, jak i bigramy. Wartością domyślną jest false. |
cjk_width | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Normalizuje różnice szerokości zestawu CJK. Składa warianty ASCII o pełnej szerokości do równoważnego podstawowego alfabetu łacińskiego i pół szerokości Warianty Katakana w równoważny kana. |
klasyczny | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Usuwa angielskich opętaczy i kropki z akronimów. |
common_grams | CommonGramTokenFilter | Konstruowanie bigramów dla często występujących terminów podczas indeksowania. Pojedyncze terminy są również indeksowane, a bigramy są nakładane. Opcje commonWords (typ: tablica ciągów) — zestaw typowych słów. Wartość domyślna to pusta lista. Wymagany. ignoreCase (typ: wartość logiczna) — jeśli wartość true, dopasowanie jest bez uwzględniania wielkości liter. Wartością domyślną jest false. queryMode (typ: bool) — generuje bigramy, a następnie usuwa typowe wyrazy i pojedyncze terminy, po których następuje słowo wspólne. Wartością domyślną jest false. |
dictionary_decompounder | DictionaryDecompounderTokenFilter | Rozkłada złożone wyrazy znalezione w wielu językach niemieckich. Opcje wordList (typ: tablica ciągów) — lista wyrazów do dopasowania. Wartość domyślna to pusta lista. Wymagany. minWordSize (wpisz: int) — tylko wyrazy dłuższe niż te zostaną przetworzone. Ustawieniem domyślnym jest 5. minSubwordSize (typ: int) — tylko podsieci dłuższe niż zostaną wyjadzone. Ustawieniem domyślnym jest 2. maxSubwordSize (typ: int) — tylko podwords krótsze niż to będzie wyświetlane. Wartość domyślna to 15. onlyLongestMatch (typ: bool) — dodaj tylko najdłuższy pasujący podword do danych wyjściowych. Wartością domyślną jest false. |
edgeNGram_v2 | EdgeNGramTokenFilterV2 | Generuje n-gramy danego rozmiaru od początku od przodu lub z tyłu tokenu wejściowego. Opcje minGram (typ: int) — wartość domyślna: 1, maksymalna: 300. maxGram (typ: int) — wartość domyślna: 2, maksymalna 300. Musi być większy niż minGram. side (typ: ciąg) — określa, z której strony danych wejściowych ma zostać wygenerowany n-gram. Dozwolone wartości: front , back |
elizja | ElisionTokenFilter | Usuwa elizji. Na przykład l'avion (płaszczyzna) jest konwertowana na avion (płaszczyznę).Opcje articles (typ: tablica ciągów) — zestaw artykułów do usunięcia. Wartość domyślna to pusta lista. Jeśli nie ma ustawionej listy artykułów, domyślnie wszystkie francuskie artykuły zostaną usunięte. |
german_normalization | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Normalizuje niemieckie znaki według heurystyki algorytmu śnieżki German2 . |
hindi_normalization | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Normalizuje tekst w języku hindi, aby usunąć pewne różnice w odmianach pisowni. |
indic_normalization | IndicNormalizationTokenFilter | Normalizuje reprezentację tekstu w języku indyjskim w formacie Unicode. |
zachować | KeepTokenFilter | Filtr tokenu, który przechowuje tylko tokeny z tekstem zawartym na określonej liście wyrazów. Opcje keepWords (typ: tablica ciągów) — lista wyrazów do zachowania. Wartość domyślna to pusta lista. Wymagany. keepWordsCase (wpisz: bool) — jeśli wartość true, najpierw wszystkie wyrazy są małe litery. Wartością domyślną jest false. |
keyword_marker | Słowo kluczoweMarkerTokenFilter | Oznacza terminy jako słowa kluczowe. Opcje keywords (typ: tablica ciągów) — lista wyrazów, które mają być oznaczane jako słowa kluczowe. Wartość domyślna to pusta lista. Wymagany. ignoreCase (typ: wartość logiczna) — jeśli wartość true, małe litery najpierw wszystkie wyrazy. Wartością domyślną jest false. |
keyword_repeat | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Emituje każdy token przychodzący dwa razy jako słowo kluczowe i raz jako nie-słowo kluczowe. |
kstem | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Filtr o wysokiej wydajności kstem dla języka angielskiego. |
length | LengthTokenFilter | Usuwa wyrazy, które są za długie lub za krótkie. Opcje min (typ: int) — minimalna liczba. Wartość domyślna: 0, maksymalna: 300. max (typ: int) — maksymalna liczba. Wartość domyślna: 300, maksymalna: 300. |
limit | Microsoft.Azure.Search.LimitTokenFilter | Ogranicza liczbę tokenów podczas indeksowania. Opcje maxTokenCount (typ: int) — maksymalna liczba tokenów do utworzenia. Wartość domyślna to 1. consumeAllTokens (typ: wartość logiczna) — czy wszystkie tokeny z danych wejściowych muszą być używane, nawet jeśli wartość maxTokenCount zostanie osiągnięta. Wartością domyślną jest false. |
Małe litery | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Normalizuje tekst tokenu do małych liter. |
nGram_v2 | NGramTokenFilterV2 | Generuje n-gramy danego rozmiaru. Opcje minGram (typ: int) — wartość domyślna: 1, maksymalna: 300. maxGram (typ: int) — wartość domyślna: 2, maksymalna 300. Musi być większy niż minGram. |
pattern_capture | PatternCaptureTokenFilter | Używa wyrażeń regularnych Java do emitowania wielu tokenów, po jednym dla każdej grupy przechwytywania w co najmniej jednym wzorze. Opcje patterns (typ: tablica ciągów) — lista wzorców, które mają być zgodne z każdym tokenem. Wymagany. preserveOriginal (typ: bool) — ustaw wartość true, aby zwrócić oryginalny token, nawet jeśli jeden z wzorców jest zgodny, wartość domyślna: true |
pattern_replace | PatternReplaceTokenFilter | Filtr tokenu, który stosuje wzorzec do każdego tokenu w strumieniu, zastępując wystąpienia dopasowania określonym ciągiem zastępczym. Opcje pattern (typ: ciąg) — wymagane. replacement (typ: ciąg) — wymagane. |
persian_normalization | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Stosuje normalizację dla perskich. |
fonetyczny | PhoneticTokenFilter | Tworzenie tokenów dla dopasowań fonetycznych. Opcje koder (typ: ciąg) — koder fonetyczny do użycia. Dozwolone wartości to: metaphone , doubleMetaphone caverphone2 caverphone1 refinedSoundex soundex nysiis koelnerPhonetik cologne , , . beiderMorse haasePhonetik Wartość domyślna: metaphone . Wartość domyślna to metafon.Aby uzyskać więcej informacji, zobacz koder . replace (typ: wartość logiczna) — prawda, jeśli zakodowane tokeny powinny zastąpić oryginalne tokeny, wartość false, jeśli powinny zostać dodane jako synonimy. Wartość domyślna to true. |
porter_stem | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Przekształca strumień tokenu zgodnie z algorytmem wynikającym z portera. |
reverse | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Odwraca ciąg tokenu. |
scandinavian_normalization | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Normalizuje użycie zamiennych znaków skandynawskich. |
scandinavian_folding | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Składa skandynawskie znaki åÅäæÄÆ do a i öÖøØ do o . Dyskryminuje również stosowanie podwójnych ślubów aa , , ae ao oe i oo , pozostawiając tylko pierwszy. |
gont | ShingleTokenFilter | Tworzy kombinacje tokenów jako pojedynczy token. Opcje maxShingleSize (typ: int) — wartości domyślne to 2. minShingleSize (typ: int) — wartości domyślne to 2. outputUnigrams (typ: bool) — jeśli wartość true, strumień wyjściowy zawiera tokeny wejściowe (unigramy), a także shingles. Wartość domyślna to true. outputUnigramsIfNoShingles (typ: wartość logiczna) — jeśli wartość true, zastąpi zachowanie outputUnigrams==false dla tych czasów, gdy nie są dostępne żadne shingles. Wartością domyślną jest false. tokenSeparator (typ: ciąg) — ciąg używany podczas łączenia sąsiednich tokenów w celu utworzenia shingle. Wartość domyślna to pojedyncze puste miejsce . filterToken (typ: ciąg) — ciąg do wstawienia dla każdej pozycji, dla której nie ma tokenu. Wartość domyślna to _ . |
śnieżka | SnowballTokenFilter | Filtr tokenu Snowball. Opcje language (typ: ciąg) — dozwolone wartości obejmują: 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 | Normalizuje reprezentację Sorani tekstu w formacie Unicode.Opcje Brak. |
stemmer | StemmerTokenFilter | Filtr macierzysty specyficzny dla języka. Opcje language (typ: ciąg) — dozwolone wartości obejmują: - 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 | Wszystkie terminy stemmed słownika są oznaczone jako słowa kluczowe, co zapobiega ściągniętym łańcuchowi. Należy umieścić przed wszelkimi filtrami macierzystymi. Opcje rules (typ: tablica ciągów) — reguły stemming w następującym formacie word => stem , na przykład ran => run . Wartość domyślna to pusta lista. Wymagany. |
stopwords | StopwordsTokenFilter | Usuwa słowa zatrzymania ze strumienia tokenu. Domyślnie filtr używa wstępnie zdefiniowanej listy słów stop dla języka angielskiego. Opcje stopwords (typ: tablica ciągów) — lista stopwords. Nie można określić, czy określono stopwordsList. stopwordsList (typ: ciąg) — wstępnie zdefiniowana lista stopwords. Nie można określić, jeśli stopwords zostanie określony. Dozwolone wartości to:arabic , armenian , basque spanish french finnish english galician dutch danish czech german catalan bulgarian brazilian greek hindi norwegian latvian persian italian portuguese irish romanian russian indonesian hungarian swedish thai sorani turkish domyślnie: . english Nie można określić, jeśli stopwords zostanie określony. ignoreCase (typ: wartość logiczna) — jeśli wartość true, wszystkie wyrazy są najpierw małe litery. Wartością domyślną jest false. removeTrailing (wpisz: bool) — jeśli wartość true, zignoruj ostatni termin wyszukiwania, jeśli jest to wyraz zatrzymania. Wartość domyślna to true. |
synonim | SynonimTokenFilter | Pasuje do synonimów pojedynczych lub wieloznanych w strumieniu tokenu. Opcje synonimy (typ: tablica ciągów) — wymagane. Lista synonimów w jednym z następujących dwóch formatów: -niesamowite, niewiarygodne, wspaniałe => niesamowite - wszystkie terminy po lewej stronie => symbol są zastępowane wszystkimi terminami po prawej stronie. -niesamowite, niewiarygodne, wspaniałe, niesamowite - rozdzielona przecinkami lista równoważnych słów. Ustaw opcję rozwijania, aby zmienić sposób interpretowania tej listy. ignoreCase (typ: bool) — wprowadzanie wielkości liter w celu dopasowania. Wartością domyślną jest false. expand (typ: bool) — jeśli prawda, wszystkie wyrazy na liście synonimów (jeśli => notacja nie jest używana) mapuj na siebie nawzajem. Poniższa lista: niesamowita, niewiarygodna, wspaniała, niesamowita jest równoważna: niesamowite, niewiarygodne, wspaniałe, niesamowite => niesamowite, niewiarygodne, wspaniałe, niesamowite - Jeśli fałsz, poniższa lista: niesamowite, niewiarygodne, wspaniałe, niesamowite są równoważne: niesamowite, niewiarygodne, wspaniałe, niesamowite => niesamowite. |
przycinać | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Przycina wiodące i końcowe odstępy od tokenów. |
truncate | TruncateTokenFilter | Obcina terminy na określoną długość. Opcje length (typ: int) — wartość domyślna: 300, maksymalna: 300. Wymagany. |
unique | UniqueTokenFilter | Filtruje tokeny z tym samym tekstem co poprzedni token. Opcje onlyOnSamePosition (typ: bool) — w przypadku ustawienia usuń duplikaty tylko w tym samym położeniu. Wartość domyślna to true. |
wielka litera | (typ ma zastosowanie tylko wtedy, gdy dostępne są opcje) | Normalizuje tekst tokenu na wielkie litery. |
word_delimiter | WordDelimiterTokenFilter | Dzieli wyrazy na subwords i wykonuje opcjonalne przekształcenia w grupach podrzędnych. Opcje generateWordParts (typ: bool) — powoduje wygenerowanie części wyrazów, na przykład AzureSearch staje się .Azure Search Wartość domyślna to true.generateNumberParts (typ: wartość logiczna) — powoduje wygenerowanie podsłowów liczbowych. Wartość domyślna to true. catenateWords (typ: bool) — powoduje, że maksymalna liczba uruchomień części słów do kategoryzowania, na przykład Azure-Search staje się .AzureSearch Wartością domyślną jest false.catenateNumbers (typ: bool) — powoduje maksymalne uruchomienia liczby części do kategoryzowania, na przykład 1-2 staje się .12 Wartością domyślną jest false.catenateAll (typ: bool) — powoduje, że wszystkie części podrzędne mają być podzielone na kategoryzacje, np Azure-Search-1 . AzureSearch1 staje się . Wartością domyślną jest false.splitOnCaseChange (typ: bool) — jeśli wartość true, dzieli wyrazy na caseChange, na przykład AzureSearch staje się .Azure Search Wartość domyślna to true.preserveOriginal — powoduje zachowanie oryginalnych wyrazów i dodanie ich do listy podwordów. Wartością domyślną jest false. splitOnNumerics (typ: wartość logiczna) — jeśli wartość true, podziały na liczby, na przykład Azure1Search stają się .Azure 1 Search Wartość domyślna to true.stemEnglishPossessive (typ: bool) — powoduje usunięcie końcowego 's dla każdego podwordu. Wartość domyślna to true.protectedWords (typ: tablica ciągów) — tokeny chroniące przed ogranicznikami. Wartość domyślna to pusta lista. |
1 Typy filtrów tokenów są zawsze prefiksowane w kodzie, #Microsoft.Azure.Search
tak aby ArabicNormalizationTokenFilter
faktycznie zostały określone jako #Microsoft.Azure.Search.ArabicNormalizationTokenFilter
. Usunęliśmy prefiks, aby zmniejszyć szerokość tabeli, ale pamiętaj, aby uwzględnić go w kodzie.