將自訂分析器新增至 Azure AI 搜尋服務索引中的字串欄位
自訂分析器是一個權杖化工具、一或多個權杖篩選條件,以及一或多個字元篩選條件的使用者定義組合。 自訂分析器是在搜尋索引內指定,然後在需要自訂分析的欄位定義上依名稱參考。 自訂分析器會根據每個欄位叫用。 欄位上的屬性會決定其是否用於編製索引、查詢或兩者。
在自訂分析器中,字元篩選條件會先準備輸入文字,再由權杖化工具處理 (例如移除標記)。 接下來,權杖化工具會將文字分成標記。 最後,權杖篩選會修改權杖化工具發出的權杖。 如需概念和範例,請參閱 Azure AI 搜尋服務中的分析器。
為何要使用自訂分析器?
自訂分析器可讓您藉由選擇要叫用的分析或篩選類型,以及其發生的順序,控制將文字轉換成可編製索引和可搜尋權杖的程序。
如果預設 (Standard Lucence)、內建或語言分析器都不足以滿足您的需求,請建立並指派自訂分析器。 如果您想要搭配自訂選項使用內建分析器,您也可以建立自訂分析器。 例如,如果您想要變更 Standard 上的 maxTokenLength,您可以建立具有使用者定義名稱的自訂分析器來設定該選項。
自訂分析器很有幫助的案例包括:
使用字元篩選在文字輸入權杖化之前移除 HTML 標記,或取代特定字元或符號。
語音搜尋。 新增語音篩選器,以根據文字聽起來如何 (而不是根據拼法) 來啟用搜尋。
停用語彙分析。 使用關鍵字分析器以建立未分析的可搜尋欄位。
快速前置詞/後置詞搜尋。 將邊緣 n-gram 語彙基元篩選器新增至文字的索引前置詞以啟用快速前置詞比對。 您可以將其與反向權杖篩選器結合以進行後置詞比對。
自訂 Token 化。 例如,使用 Whitespace Token 化工具將句子分成使用空白字元作為分隔符號的語彙基元
ASCII 摺疊。 新增標準 ASCII 折疊篩選器,將搜尋字詞中的 ö 或 ê 等變音符號標準化。
注意
自訂分析器未在 Azure 入口網站中公開。 新增自訂分析器的唯一方法是透過程式碼,程式碼會定義索引。
建立自訂分析器
若要建立自訂分析器,請在設計時於索引的 analyzers
區段指定此分析器,然後使用 analyzer
屬性或 indexAnalyzer
和 searchAnalyzer
配對,在可搜尋的 Edm.String
欄位中參考此分析器。
分析器定義包括名稱、類型、一個或多個字元篩選器、最多一個權杖化工具,以及一個或多個用於權杖化後置作業的權杖篩選。 字元篩選會在權杖化之前套用。 權杖篩選和字元篩選會以由左到右的順序套用。
自訂分析器中的名稱必須是唯一的,而且不能與任何內建分析器、權杖化工具、權杖篩選或字元篩選相同。 名稱必須包含字母、數字、空格、虛線或底線,同時開頭必須是英數字元,而且不得超過 128 個字元。
類型必須是 #Microsoft.Azure.Search.CustomAnalyzer。
charFilters
可以是來自權杖化之前所處理字元篩選條件的一或多個篩選條件,依提供的順序排列。 某些字元篩選條件具有選項,可以在charFilters
區段中設定。 字元篩選是選擇性的。tokenizer
只是一個權杖化工具。 必須有值。 如果您需要一個以上的 tokenizer,您可以建立多個自訂分析器,並且在索引結構描述中逐欄位指派它們。tokenFilters
可以是來自權杖化之後所處理權杖篩選條件的一或多個篩選條件,依提供的順序排列。 對於具有選項的權杖篩選條件,請新增tokenFilter
區段以指定設定。 權杖篩選是選擇性的。
分析器不能產生超過 300 個字元的權杖,否則編製索引將會失敗。 若要修剪過長的權杖或加以排除,請分別使用 TruncateTokenFilter 和 LengthTokenFilter。 如需參考,請參閱權杖篩選。
"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,
...
}
]
在索引定義中,您可以將此區段放在建立索引要求本文中的任意位置,但通常會放在結尾:
{
"name": "name_of_index",
"fields": [ ],
"suggesters": [ ],
"scoringProfiles": [ ],
"defaultScoringProfile": (optional) "...",
"corsOptions": (optional) { },
"analyzers":(optional)[ ],
"charFilters":(optional)[ ],
"tokenizers":(optional)[ ],
"tokenFilters":(optional)[ ]
}
分析器定義屬於更大的索引。 只有在您設定自訂選項時,才需要將字元篩選、權杖化工具和權杖篩選的定義新增至索引中。 若要使用現有的篩選器或 Token 化工具 (不做任何變更),則以分析器定義中的名稱來加以指定。 如需詳細資訊,請參閱 建立索引 (REST)。 如需更多範例,請參閱在 Azure AI 搜尋服務中新增分析器。
測試自訂分析器
您可以使用測試分析器 (REST),查看分析器如何將指定文字分解成權杖。
要求
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"
}
回應
{
"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
}
]
}
上傳自訂分析器
定義分析器、權杖化工具、權杖篩選或字元篩選之後,即無法進行修改。 只有當索引更新要求中的 allowIndexDowntime
旗標設定為 true 時,才能將新分析器新增到現有的索引中:
PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=[api-version]&allowIndexDowntime=true
這項作業至少會讓您的索引離線幾秒鐘,而會導致您的索引編製和查詢要求失敗。 在索引更新後,索引的效能和寫入可用性可能會降低數分鐘,如果是非常大的索引,則可能持續更久,但這些影響是暫時的,而且最終會自行解決。
內建分析器
如果您想要搭配自訂選項使用內建分析器,建立自訂分析器是指定這些選項的機制。 相反地,若要依原樣使用內建分析器,您只需要在欄位定義中依名稱參考。
analyzer_name | analyzer_type 1 | 說明和選項 |
---|---|---|
keyword | (有選項時才需套用類型) | 將欄位的整個內容視為單一語彙基元。 這適合用於郵遞區號、識別碼和產品名稱等資料。 |
模式 | PatternAnalyzer | 透過規則運算式模式彈性地將文字分割成字詞。 選項 lowercase (類型:bool) - 判斷字詞是否為小寫。 預設值為 True。 pattern (類型:字串) - 用來比對語彙基元分隔符號的規則運算式模式。 預設值為 \W+ ,其符合非文字字元。 flags (類型:字串) - 規則運算式旗標。 預設值是空字串。 允許的值:CANON_EQ、CASE_INSENSITIVE、COMMENTS、DOTALL、LITERAL、MULTILINE、UNICODE_CASE、UNIX_LINES stopwords (類型:字串陣列) - 停用字詞清單。 預設為空白清單。 |
simple | (有選項時才需套用類型) | 在非字母的位置分割文字,並將其轉換成小寫。 |
standard (也稱為 standard.lucene) |
StandardAnalyzer | Standard Lucene 分析器,由標準 Token 化工具、小寫篩選器及停止篩選器所組成。 選項 maxTokenLength (類型:int) - 語彙基元長度的上限。 預設值為 255。 超過長度上限的權杖會進行分割。 可用的語彙基元長度上限是 300 個字元。 stopwords (類型:字串陣列) - 停用字詞清單。 預設為空白清單。 |
standardasciifolding.lucene | (有選項時才需套用類型) | 使用 ASCII 折疊篩選器的標準分析器。 |
停止 | StopAnalyzer | 在非字母的位置上分割文字,套用 lowercase 和 stopword 語彙基元篩選器。 選項 stopwords (類型:字串陣列) - 停用字詞清單。 預設值為英文的預先定義清單。 |
whitespace | (有選項時才需套用類型) | 使用 whitespace Token 化工具的分析器。 分割長度超過 255 個字元的語彙基元。 |
1 分析器類型一律會在程式碼中加上前置詞 #Microsoft.Azure.Search
,以致 PatternAnalyzer
實際上將指定為 #Microsoft.Azure.Search.PatternAnalyzer
。 為求簡潔,我們已移除前置詞,但您的程式碼中仍須要有前置詞。
analyzer_type 僅提供給可自訂的分析器使用。 如果沒有任何選項 (如同 keyword 分析器),則也不會有相關聯的 #Microsoft.Azure.Search 類型。
字元篩選
字元篩選會在字串到達權杖化工具之前新增處理。
Azure AI 搜尋服務支援下列清單中的字元篩選。 如需有關每個項目的詳細資訊,請參閱 Lucene API 參考。
char_filter_name | char_filter_type 1 | 說明和選項 |
---|---|---|
html_strip | (有選項時才需套用類型) | 嘗試去除 HTML 結構的字元篩選器。 |
對應 | MappingCharFilter | 套用比對 (由比對選項定義) 的字元篩選器。 比對採用貪婪演算法 (由指定點上最長的模式比對勝出) 取代項目可以是空字串。 選項 mappings (類型:字串陣列) - 下列格式的對應: a=>b (將所有出現的字元 a 取代為字元 b )。 必要。 |
pattern_replace | PatternReplaceCharFilter | 取代輸入字串中字元的字元篩選器。 其使用規則運算式來識別要保留的字元序列,並使用取代模式來識別要取代的字元。 例如,input text = aa bb aa bb pattern=(aa)\\\s+(bb) replacement=$1#$2 result = aa#bb aa#bb 。 選項 pattern (類型:字串) - 必要。 replacement (類型:字串) - 必要。 |
1 字元篩選條件類型一律會在程式碼中加上前置詞 #Microsoft.Azure.Search
,以致 MappingCharFilter
實際上將指定為 #Microsoft.Azure.Search.MappingCharFilter
。 為縮短表格寬度,我們已移除前置詞,但請務必將其包含在您的程式碼中。 請注意,char_filter_type 僅提供給可自訂的篩選使用。 如果沒有任何選項 (如同 html_strip),則也不會有相關聯的 #Microsoft.Azure.Search 類型。
權杖化工具
權杖化工具會將連續文字分割成權杖的序列,例如將句子分成多個文字,或是將文字分成根形式。
Azure AI 搜尋服務支援下列清單中的權杖化工具。 如需有關每個項目的詳細資訊,請參閱 Lucene API 參考。
tokenizer_name | tokenizer_type 1 | 說明和選項 |
---|---|---|
classic | ClassicTokenizer | 以文法為基礎且適合用來處理大部分歐洲語言文件的 Token 化工具。 選項 maxTokenLength (類型:int) - 語彙基元長度的上限。 預設值:255,最大值:300。 超過長度上限的權杖會進行分割。 |
edgeNGram | EdgeNGramTokenizer | 透過從邊緣到指定 n-gram 大小的方式來 Token 化輸入。 選項 minGram (類型:int) - 預設值:1,最大值:300。 maxGram (類型:int) - 預設值:2,最大值:300。 必須大於 minGram。 tokenChars (類型:字串陣列) - 要在語彙基元中保留的字元類別。 允許的值: letter 、digit 、whitespace 、punctuation 、symbol 。 預設為空陣列 - 保留所有字元。 |
keyword_v2 | KeywordTokenizerV2 | 以單一語彙基元的形式發出整個輸入。 選項 maxTokenLength (類型:int) - 語彙基元長度的上限。 預設值:256,最大值:300。 超過長度上限的權杖會進行分割。 |
letter | (有選項時才需套用類型) | 在非字母的位置上分割文字。 分割長度超過 255 個字元的語彙基元。 |
lowercase | (有選項時才需套用類型) | 在非字母的位置分割文字,並將其轉換成小寫。 分割長度超過 255 個字元的語彙基元。 |
microsoft_language_tokenizer | MicrosoftLanguageTokenizer | 使用語言特有的規則分割文字。 選項 maxTokenLength (類型:int) - 權杖長度的上限,預設值:255,最大值:300。 超過長度上限的權杖會進行分割。 超過 300 個字元的語彙基元會先分割成長度為 300 個字元的語彙基元,然後再根據設定的 maxTokenLength 分割這每一個語彙基元。 isSearchTokenizer (類型:bool) - 如果作為搜尋 Token 化工具使用,則設定為 true,如果作為索引 Token 化工具使用,則設為 false。 language (類型:字串) - 要使用的語言,預設值是 english 。 允許的值包括: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 | 使用語言特有的規則來分割文字,並將字組縮減到其基本形式。 此權杖化工具會執行語式化。 選項 maxTokenLength (類型:int) - 權杖長度的上限,預設值:255,最大值:300。 超過長度上限的權杖會進行分割。 超過 300 個字元的語彙基元會先分割成長度為 300 個字元的語彙基元,然後再根據設定的 maxTokenLength 分割這每一個語彙基元。 isSearchTokenizer (類型:bool) - 如果作為搜尋 Token 化工具使用,則設定為 true,如果作為索引 Token 化工具使用,則設為 false。 language (類型:字串) - 要使用的語言,預設值是 english 。 允許的值包括: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 | 將輸入 Token 化到指定的 n-gram 大小。 選項 minGram (類型:int) - 預設值:1,最大值:300。 maxGram (類型:int) - 預設值:2,最大值:300。 必須大於 minGram。 tokenChars (類型:字串陣列) - 要在語彙基元中保留的字元類別。 允許的值: letter 、digit 、whitespace 、punctuation 、symbol 。 預設為空陣列 - 保留所有字元。 |
path_hierarchy_v2 | PathHierarchyTokenizerV2 | 路徑類階層的 Token 化工具。 選項 delimiter (類型:字串) - 預設值:'/。 replacement (類型:字串) - 如有設定,則會取代分隔符號字元。 預設值與分隔符號的值相同。 maxTokenLength (類型:int) - 語彙基元長度的上限。 預設值:300,最大值:300。 長度超過 maxTokenLength 的路徑會遭到忽略。 reverse (類型:bool) - 如果為 true,則會以反向順序產生語彙基元。 預設:false。 skip (類型:bool) - 要略過的起始語彙基元數目。 預設值是 0。 |
模式 | PatternTokenizer | 此 Token 化工具會使用 RegEx 模式比對來建構不同的語彙基元。 選項 pattern (類型:字串) - 用來比對權杖分隔符號的規則運算式模式。 預設值為 \W+ ,其符合非文字字元。 flags (類型:字串) - 規則運算式旗標。 預設值是空字串。 允許的值:CANON_EQ、CASE_INSENSITIVE、COMMENTS、DOTALL、LITERAL、MULTILINE、UNICODE_CASE、UNIX_LINES group (類型:int) - 要將哪個群組擷取至語彙基元。 預設值為 -1 (分割)。 |
standard_v2 | StandardTokenizerV2 | 遵循 Unicode 文字分割規則來分解文字。 選項 maxTokenLength (類型:int) - 語彙基元長度的上限。 預設值:255,最大值:300。 超過長度上限的權杖會進行分割。 |
uax_url_email | UaxUrlEmailTokenizer | 將 URL 和電子郵件 Token 化為一個語彙基元。 選項 maxTokenLength (類型:int) - 語彙基元長度的上限。 預設值:255,最大值:300。 超過長度上限的權杖會進行分割。 |
whitespace | (有選項時才需套用類型) | 在空白字元處分割文字。 分割長度超過 255 個字元的語彙基元。 |
1 權杖化工具類型一律會在程式碼中加上前置詞 #Microsoft.Azure.Search
,以致 ClassicTokenizer
實際上將指定為 #Microsoft.Azure.Search.ClassicTokenizer
。 為縮短表格寬度,我們已移除前置詞,但請務必將其包含在您的程式碼中。 請注意,tokenizer_type 僅提供給可自訂的權杖化工具使用。 如果沒有任何選項,如同字母權杖化工具也不會有相關聯的 #Microsoft.Azure.Search 類型。
權杖篩選
權杖篩選器是用來篩選出或修改 tokenizer 所產生的權杖。 例如,您可以指定小寫篩選器,將所有字元轉換成小寫。 您可以在自訂分析器中具有多個權杖篩選器。 權杖篩選會以所列的順序執行。
在下表中,使用 Apache Lucene 實作的語彙基元篩選器會連結至 Lucene API 文件。
token_filter_name | token_filter_type 1 | 說明和選項 |
---|---|---|
arabic_normalization | (有選項時才需套用類型) | 套用阿拉伯文標準化程式的語彙基元篩選器,用來標準化正字法。 |
apostrophe | (有選項時才需套用類型) | 去除單引號 (包括單引號本身) 之後的所有字元。 |
asciifolding | AsciiFoldingTokenFilter | 將不在前 127 個 ASCII 字元內的英文字母、數字和符號類 Unicode 字元 (Basic Latin Unicode 區塊) 轉換為其對等的 ASCII 項目 (如果有的話)。選項 preserveOriginal (類型:bool) - 如果為 true,則保留原始的語彙基元。 預設值為 false。 |
cjk_bigram | CjkBigramTokenFilter | 將從 StandardTokenizer 產生的 CJK 字詞塑造成雙字母組 (bigram)。 選項 ignoreScripts (類型:字串陣列) - 要略過的指令碼。 允許的值包含: han 、hiragana 、katakana 、hangul 。 預設為空白清單。outputUnigrams (類型:bool) - 如果您一定要輸出單字母組 (unigram) 和雙字母組 (bigram),則設為 true。 預設值為 false。 |
cjk_width | (有選項時才需套用類型) | 標準化 CJK 寬度的差異。 將全形的 ASCII 變體摺疊成對等的基本拉丁文,並將半形的片假名變體摺疊成對等的假名。 |
classic | (有選項時才需套用類型) | 移除英文所有格,以及移除縮寫中的點。 |
common_grams | CommonGramTokenFilter | 在編製索引時,建構常用字詞的雙字母組。 仍會編製單個字詞的索引,並與雙字母組重疊。 選項 commonWords (類型:字串陣列) - 一組常見的字組。 預設為空白清單。 必要。 ignoreCase (類型:bool) - 如果為 true,則比對不區分大小寫。 預設值為 false。 queryMode (類型:bool) - 產生雙字母組,然後移除常用字組與常用字組後的單一字詞。 預設值為 false。 |
dictionary_decompounder | DictionaryDecompounderTokenFilter | 分解在許多日耳曼語系中找到的複合字。 選項 wordList (類型:字串陣列) - 要作為比對依據的字組清單。 預設為空白清單。 必要。 minWordSize (類型:int) - 只會處理超過此長度的字組。 預設值為 5。 minSubwordSize (類型:int) - 只會輸出超過此長度的部分字組 (subword)。 預設值為 2。 maxSubwordSize (類型:int) - 只會輸出低於此長度的部分字組 (subword)。 預設值是 15。 onlyLongestMatch (類型:bool) - 只將最長的相符部分字組 (subword) 新增到輸出。 預設值為 false。 |
edgeNGram_v2 | EdgeNGramTokenFilterV2 | 從輸入語彙基元的前端或後端作為起點,以產生指定大小的 n-gram。 選項 minGram (類型:int) - 預設值:1,最大值:300。 maxGram (類型:int) - 預設值:2,最大值:300。 必須大於 minGram。 side (類型:字串) - 指定 n-gram 應從輸入的哪一側產生。 允許值︰ front 和 back |
elision | ElisionTokenFilter | 移除元音省略。 例如,l'avion (the plane) 會轉換成 avion (plane)。選項 articles (類型:字串陣列) - 要移除的一組冠詞。 預設為空白清單。 如果沒有冠詞清單,預設會移除所有法文的冠詞。 |
german_normalization | (有選項時才需套用類型) | 根據 German2 雪球演算法的啟發式學習法標準化德文字元。 |
hindi_normalization | (有選項時才需套用類型) | 標準化印度文字,以移除拼字變化的一些差異。 |
indic_normalization | IndicNormalizationTokenFilter | 標準化印度語文字的 Unicode 表示法。 |
keep | KeepTokenFilter | 此語彙基元篩選器只保留文字包含在指定字組清單的語彙基元。 選項 keepWords (類型:字串陣列) - 要保留的字組清單。 預設為空白清單。 必要。 keepWordsCase (類型:bool) - 如果為 true,則會先將所有字組改為小寫。 預設值為 false。 |
keyword_marker | KeywordMarkerTokenFilter | 將字詞標示為關鍵字。 選項 keywords (類型:字串陣列) - 要標示為關鍵字的字組清單。 預設為空白清單。 必要。 ignoreCase (類型:bool) - 如果為 true,則會先將所有字組改為小寫。 預設值為 false。 |
keyword_repeat | (有選項時才需套用類型) | 將每個傳入的語彙基元發出兩次,一次作為關鍵字,一次作為非關鍵字。 |
kstem | (有選項時才需套用類型) | 適用於英文的高效能 kstem 篩選條件。 |
length | LengthTokenFilter | 移除太長或太短的文字。 選項 min (類型:int) - 最小數目。 預設值:0,最大值:300。 max (類型:int) - 最大數目。 預設值:300,最大值:300。 |
limit | Microsoft.Azure.Search.LimitTokenFilter | 限制編製索引時的語彙基元數目。 選項 maxTokenCount (類型:int) - 要產生的語彙基元數目上限。 預設值是 1。 consumeAllTokens (類型:bool) - 是否必須使用輸入中的所有語彙基元,即使已達到 maxTokenCount。 預設值為 false。 |
lowercase | (有選項時才需套用類型) | 將語彙基元文字標準化為小寫。 |
nGram_v2 | NGramTokenFilterV2 | 產生指定大小的 n-gram。 選項 minGram (類型:int) - 預設值:1,最大值:300。 maxGram (類型:int) - 預設值:2,最大值:300。 必須大於 minGram。 |
pattern_capture | PatternCaptureTokenFilter | 使用 Java RegEx 發出多個語彙基元,一個或多個模式中的每個擷取群組各會有一個。 選項 patterns (類型:字串陣列) - 要根據每個語彙基元比對的模式清單。 必要。 reserveOriginal (類型:bool) - 若設定為 true,則傳回原始的語彙基元,即使符合其中一個模式也是如此,預設值:true |
pattern_replace | PatternReplaceTokenFilter | 將模式套用到資料流中每個語彙基元的語彙基元篩選器,將以指定的取代字串取代相符項目。 選項 pattern (類型:字串) - 必要。 replacement (類型:字串) - 必要。 |
persian_normalization | (有選項時才需套用類型) | 對波斯文套用標準化。 |
phonetic | PhoneticTokenFilter | 建立語音相符項目的語彙基元。 選項 encoder (型別:字串) - 要使用的語音編碼器。 允許的值包括: metaphone 、doubleMetaphone 、soundex 、refinedSoundex 、caverphone1 、caverphone2 、cologne 、nysiis 、koelnerPhonetik 、haasePhonetik 、beiderMorse 。 預設值:metaphone 。 預設值為 metaphone。請參閱 encoder 以取得詳細資訊。 replace (類型:bool) - 如果編碼的語彙基元應該取代原始的語彙基元,則為 true,如果編碼的語彙基元應該新增為同義字,則為 false。 預設值為 True。 |
porter_stem | (有選項時才需套用類型) | 根據 Porter 詞幹演算法 (Porter stemming algorithm) 來轉換語彙基元資料流。 |
reverse | (有選項時才需套用類型) | 反轉語彙基元字串。 |
scandinavian_normalization | (有選項時才需套用類型) | 標準化可交換的斯堪的納維亞字元用法。 |
scandinavian_folding | (有選項時才需套用類型) | 折疊斯堪的納維亞字元 åÅäæÄÆ into a 和 öÖøØ into o 。 其也可以區分雙母音 aa 、ae 、ao 、oe 和 oo 的使用,並且只保留第一個。 |
shingle | ShingleTokenFilter | 將語彙基元的組合建立為單一語彙基元。 選項 maxShingleSize (類型:int) - 預設值為 2。 minShingleSize (類型:int) - 預設值為 2。 outputUnigrams (類型:bool) - 如果為 true,輸出資料流會包含輸入語彙基元 (單字母組) 及 shingle。 預設值為 True。 outputUnigramsIfNoShingles (類型:bool) - 如果為 true,則覆寫 outputUnigrams 行為==而 false 用於沒有可用 shingle 的狀況。 預設值為 false。 tokenSeparator (類型:字串) - 加入相鄰語彙基元來形成 shingle 時要用的字串。 預設值為單一空格 . filterToken (類型:字串) - 在每個沒有權杖的位置插入字串。 預設值為 _ 。 |
snowball | SnowballTokenFilter | Snowball 語彙基元篩選器。 選項 language (類型:字串) - 允許的值包括: 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 | 標準化 Sorani 文字的 Unicode 表示法。選項 無。 |
詞幹分析器 | StemmerTokenFilter | 特定語言的詞幹分析篩選器。 選項 language (類型:字串) - 允許的值包括: - 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 | 任何可透過字典進行詞幹分析的字詞都會標示為關鍵字,這樣可避免鏈結底部的詞幹分析。 必須放在任何詞幹分析篩選器之前。 選項 rules (類型:字串陣列) - 使用下列格式的詞幹分析規則: word => stem ,例如 ran => run 。 預設為空白清單。 必要。 |
stopwords | StopwordsTokenFilter | 從語彙基元資料流移除停用字詞。 根據預設,篩選器會使用預先定義的停用字詞清單 (適用於英文)。 選項 stopwords (類型:字串陣列) - 停用字詞清單。 如果指定 stopwordsList,則無法指定此項目。 stopwordsList (類型:字串) - 停用字詞的預先定義清單。 如果指定 stopwords ,則無法指定此項目。 允許的值包括: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 ,預設值:english 。 如果指定 stopwords ,則無法指定此項目。 ignoreCase (類型:bool) - 如果為 true,則會先將所有字組改為小寫。 預設值為 false。 removeTrailing (類型:bool) - 如果為 true,若最後一個搜尋字詞是停用字詞,則會略過。 預設值為 True。 |
synonym | SynonymTokenFilter | 比對語彙基元資料流中的單一或多個同義字。 選項 synonyms (類型:字串陣列) - 必要。 下列兩種格式之一的同義字清單: -incredible, unbelievable, fabulous => amazing - 在 => 符號左邊的所有字詞都可由該符號右邊的所有字詞取代。 -incredible, unbelievable, fabulous, amazing - 以逗號分隔的對等字組清單。 設定 expand 選項來變更此清單的解譯方式。 ignoreCase (類型:bool) - 將輸入的大小寫摺疊以用於比對。 預設值為 false。 expand (類型:bool) - 如果為 true,則同義字清單中的所有字組 (如果不使用 => 標記) 都可互相對應。 下列清單:incredible, unbelievable, fabulous, amazing 同等於:incredible, unbelievable, fabulous, amazing => incredible, unbelievable, fabulous, amazing 如果為 false,下列清單:incredible, unbelievable, fabulous, amazing 同等於:incredible, unbelievable, fabulous, amazing => incredible。 |
修剪 | (有選項時才需套用類型) | 修剪語彙基元的開頭及結尾空白字元。 |
truncate | TruncateTokenFilter | 將字詞截斷至特定長度。 選項 length (類型:int) - 預設值:300,最大值:300。 必要。 |
unique | UniqueTokenFilter | 篩選出與前一個語彙基元使用相同文字的語彙基元。 選項 onlyOnSamePosition (類型:bool) - 如果設定,則只會移除相同位置上的重複項目。 預設值為 True。 |
uppercase | (有選項時才需套用類型) | 將語彙基元文字標準化為大寫。 |
word_delimiter | WordDelimiterTokenFilter | 將字組分割成部分字組,並對部分字組群組執行選擇性的轉換。 選項 generateWordParts (類型:bool) - 導致產生部分字組,例如, AzureSearch 會變成 Azure Search 。 預設值為 True。generateNumberParts (類型:bool) - 產生數字的部分字組。 預設值為 True。 catenateWords (類型:bool) - 將所能連接的最多字組部分合併,例如, Azure-Search 會變成 AzureSearch 。 預設值為 false。catenateNumbers (類型:bool) - 將所能連接的最多數字部分合併,例如, 1-2 會變成 12 。 預設值為 false。catenateAll (類型:bool) - 將所有部分字組合併,例如, Azure-Search-1 會變成 AzureSearch1 。 預設值為 false。splitOnCaseChange (類型:bool) - 如果為 true,則根據大小寫變更來分割字組,例如, AzureSearch 會變成 Azure Search 。 預設值為 True。preserveOriginal - 保留原始子組並新增至部分字組清單。 預設值為 false。 splitOnNumerics (類型:bool) - 如果為 true,則根據數字來分割,例如 Azure1Search 會變成 Azure 1 Search 。 預設值為 True。stemEnglishPossessive (類型:bool) - 移除每個部分字組的尾端 's 。 預設值為 True。protectedWords (類型:字串陣列) - 要防止分隔的語彙基元。 預設為空白清單。 |
1 權杖篩選條件類型一律會在程式碼中加上前置詞 #Microsoft.Azure.Search
,以致 ArabicNormalizationTokenFilter
實際上將指定為 #Microsoft.Azure.Search.ArabicNormalizationTokenFilter
。 為縮短表格寬度,我們已移除前置詞,但請務必將其包含在您的程式碼中。