將自訂分析器新增至 Azure AI 搜尋服務索引中的字串欄位

自訂分析器是一個權杖化工具、一或多個權杖篩選條件,以及一或多個字元篩選條件的使用者定義組合。 自訂分析器是在搜尋索引內指定,然後在需要自訂分析的欄位定義上依名稱參考。 自訂分析器會根據每個欄位叫用。 欄位上的屬性會決定其是否用於編製索引、查詢或兩者。

在自訂分析器中,字元篩選條件會先準備輸入文字,再由權杖化工具處理 (例如移除標記)。 接下來,權杖化工具會將文字分成標記。 最後,權杖篩選會修改權杖化工具發出的權杖。 如需概念和範例,請參閱 Azure AI 搜尋服務中的分析器

為何要使用自訂分析器?

自訂分析器可讓您藉由選擇要叫用的分析或篩選類型,以及其發生的順序,控制將文字轉換成可編製索引和可搜尋權杖的程序。

如果預設 (Standard Lucence)、內建或語言分析器都不足以滿足您的需求,請建立並指派自訂分析器。 如果您想要搭配自訂選項使用內建分析器,您也可以建立自訂分析器。 例如,如果您想要變更 Standard 上的 maxTokenLength,您可以建立具有使用者定義名稱的自訂分析器來設定該選項。

自訂分析器很有幫助的案例包括:

  • 使用字元篩選在文字輸入權杖化之前移除 HTML 標記,或取代特定字元或符號。

  • 語音搜尋。 新增語音篩選器,以根據文字聽起來如何 (而不是根據拼法) 來啟用搜尋。

  • 停用語彙分析。 使用關鍵字分析器以建立未分析的可搜尋欄位。

  • 快速前置詞/後置詞搜尋。 將邊緣 n-gram 語彙基元篩選器新增至文字的索引前置詞以啟用快速前置詞比對。 您可以將其與反向權杖篩選器結合以進行後置詞比對。

  • 自訂 Token 化。 例如,使用 Whitespace Token 化工具將句子分成使用空白字元作為分隔符號的語彙基元

  • ASCII 摺疊。 新增標準 ASCII 折疊篩選器,將搜尋字詞中的 ö 或 ê 等變音符號標準化。

注意

自訂分析器未在 Azure 入口網站中公開。 新增自訂分析器的唯一方法是透過程式碼,程式碼會定義索引。

建立自訂分析器

若要建立自訂分析器,請在設計時於索引的 analyzers 區段指定此分析器,然後使用 analyzer 屬性或 indexAnalyzersearchAnalyzer 配對,在可搜尋的 Edm.String 欄位中參考此分析器。

分析器定義包括名稱、類型、一個或多個字元篩選器、最多一個權杖化工具,以及一個或多個用於權杖化後置作業的權杖篩選。 字元篩選會在權杖化之前套用。 權杖篩選和字元篩選會以由左到右的順序套用。

  • 自訂分析器中的名稱必須是唯一的,而且不能與任何內建分析器、權杖化工具、權杖篩選或字元篩選相同。 名稱必須包含字母、數字、空格、虛線或底線,同時開頭必須是英數字元,而且不得超過 128 個字元。

  • 類型必須是 #Microsoft.Azure.Search.CustomAnalyzer。

  • charFilters 可以是來自權杖化之前所處理字元篩選條件的一或多個篩選條件,依提供的順序排列。 某些字元篩選條件具有選項,可以在 charFilters 區段中設定。 字元篩選是選擇性的。

  • tokenizer 只是一個權杖化工具。 必須有值。 如果您需要一個以上的 tokenizer,您可以建立多個自訂分析器,並且在索引結構描述中逐欄位指派它們。

  • tokenFilters 可以是來自權杖化之後所處理權杖篩選條件的一或多個篩選條件,依提供的順序排列。 對於具有選項的權杖篩選條件,請新增 tokenFilter 區段以指定設定。 權杖篩選是選擇性的。

分析器不能產生超過 300 個字元的權杖,否則編製索引將會失敗。 若要修剪過長的權杖或加以排除,請分別使用 TruncateTokenFilterLengthTokenFilter。 如需參考,請參閱權杖篩選

"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_type1 說明和選項
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_type1 說明和選項
html_strip (有選項時才需套用類型) 嘗試去除 HTML 結構的字元篩選器。
對應 MappingCharFilter 套用比對 (由比對選項定義) 的字元篩選器。 比對採用貪婪演算法 (由指定點上最長的模式比對勝出) 取代項目可以是空字串。

選項

mappings (類型:字串陣列) - 下列格式的對應:a=>b (將所有出現的字元 a 取代為字元 b)。 必要。
pattern_replace PatternReplaceCharFilter 取代輸入字串中字元的字元篩選器。 其使用規則運算式來識別要保留的字元序列,並使用取代模式來識別要取代的字元。 例如,input text = aa bb aa bbpattern=(aa)\\\s+(bb) replacement=$1#$2result = 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_type1 說明和選項
classic ClassicTokenizer 以文法為基礎且適合用來處理大部分歐洲語言文件的 Token 化工具。

選項

maxTokenLength (類型:int) - 語彙基元長度的上限。 預設值:255,最大值:300。 超過長度上限的權杖會進行分割。
edgeNGram EdgeNGramTokenizer 透過從邊緣到指定 n-gram 大小的方式來 Token 化輸入。

選項

minGram (類型:int) - 預設值:1,最大值:300。

maxGram (類型:int) - 預設值:2,最大值:300。 必須大於 minGram。

tokenChars (類型:字串陣列) - 要在語彙基元中保留的字元類別。 允許的值:
letterdigitwhitespacepunctuationsymbol。 預設為空陣列 - 保留所有字元。
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。 允許的值包括:
banglabulgariancatalanchineseSimplifiedchineseTraditionalcroatianczechdanishdutchenglishfrenchgermangreekgujaratihindiicelandicindonesianitalianjapanesekannadakoreanmalaymalayalammarathinorwegianBokmaalpolishportugueseportugueseBrazilianpunjabiromanianrussianserbianCyrillicserbianLatinslovenianspanishswedishtamilteluguthaiukrainianurduvietnamese
microsoft_language_stemming_tokenizer MicrosoftLanguageStemmingTokenizer 使用語言特有的規則來分割文字,並將字組縮減到其基本形式。 此權杖化工具會執行語式化。

選項

maxTokenLength (類型:int) - 權杖長度的上限,預設值:255,最大值:300。 超過長度上限的權杖會進行分割。 超過 300 個字元的語彙基元會先分割成長度為 300 個字元的語彙基元,然後再根據設定的 maxTokenLength 分割這每一個語彙基元。

isSearchTokenizer (類型:bool) - 如果作為搜尋 Token 化工具使用,則設定為 true,如果作為索引 Token 化工具使用,則設為 false。

language (類型:字串) - 要使用的語言,預設值是 english。 允許的值包括:
arabicbanglabulgariancatalancroatianczechdanishdutchenglishestonianfinnishfrenchgermangreekgujaratihebrewhindihungarianicelandicindonesianitaliankannadalatvianlithuanianmalaymalayalammarathinorwegianBokmaalpolishportugueseportugueseBrazilianpunjabiromanianrussianserbianCyrillicserbianLatinslovakslovenianspanishswedishtamilteluguturkishukrainianurdu
nGram NGramTokenizer 將輸入 Token 化到指定的 n-gram 大小。

選項

minGram (類型:int) - 預設值:1,最大值:300。

maxGram (類型:int) - 預設值:2,最大值:300。 必須大於 minGram。

tokenChars (類型:字串陣列) - 要在語彙基元中保留的字元類別。 允許的值:letterdigitwhitespacepunctuationsymbol。 預設為空陣列 - 保留所有字元。
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_type1 說明和選項
arabic_normalization (有選項時才需套用類型) 套用阿拉伯文標準化程式的語彙基元篩選器,用來標準化正字法。
apostrophe (有選項時才需套用類型) 去除單引號 (包括單引號本身) 之後的所有字元。
asciifolding AsciiFoldingTokenFilter 將不在前 127 個 ASCII 字元內的英文字母、數字和符號類 Unicode 字元 (Basic Latin Unicode 區塊) 轉換為其對等的 ASCII 項目 (如果有的話)。

選項

preserveOriginal (類型:bool) - 如果為 true,則保留原始的語彙基元。 預設值為 false。
cjk_bigram CjkBigramTokenFilter 將從 StandardTokenizer 產生的 CJK 字詞塑造成雙字母組 (bigram)。

選項

ignoreScripts (類型:字串陣列) - 要略過的指令碼。 允許的值包含:hanhiraganakatakanahangul。 預設為空白清單。

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 應從輸入的哪一側產生。 允許值︰frontback
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 (型別:字串) - 要使用的語音編碼器。 允許的值包括:metaphonedoubleMetaphonesoundexrefinedSoundexcaverphone1caverphone2colognenysiiskoelnerPhonetikhaasePhonetikbeiderMorse。 預設值:metaphone。 預設值為 metaphone。

請參閱 encoder 以取得詳細資訊。

replace (類型:bool) - 如果編碼的語彙基元應該取代原始的語彙基元,則為 true,如果編碼的語彙基元應該新增為同義字,則為 false。 預設值為 True。
porter_stem (有選項時才需套用類型) 根據 Porter 詞幹演算法 (Porter stemming algorithm) 來轉換語彙基元資料流。
reverse (有選項時才需套用類型) 反轉語彙基元字串。
scandinavian_normalization (有選項時才需套用類型) 標準化可交換的斯堪的納維亞字元用法。
scandinavian_folding (有選項時才需套用類型) 折疊斯堪的納維亞字元 åÅäæÄÆinto aöÖøØinto o。 其也可以區分雙母音 aaaeaooeoo 的使用,並且只保留第一個。
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 (類型:字串) - 允許的值包括:armenianbasquecatalandanishdutchenglishfinnishfrenchgermangerman2hungarianitaliankplovinsnorwegianporterportugueseromanianrussianspanishswedishturkish
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,則無法指定此項目。 允許的值包括:arabicarmenianbasquebrazilianbulgariancatalanczechdanishdutchenglishfinnishfrenchgaliciangermangreekhindihungarianindonesianirishitalianlatviannorwegianpersianportugueseromanianrussiansoranispanishswedishthaiturkish,預設值: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 會變成 AzureSearch。 預設值為 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 會變成 AzureSearch。 預設值為 True。

preserveOriginal - 保留原始子組並新增至部分字組清單。 預設值為 false。

splitOnNumerics (類型:bool) - 如果為 true,則根據數字來分割,例如 Azure1Search 會變成 Azure1Search。 預設值為 True。

stemEnglishPossessive (類型:bool) - 移除每個部分字組的尾端 's。 預設值為 True。

protectedWords (類型:字串陣列) - 要防止分隔的語彙基元。 預設為空白清單。

1 權杖篩選條件類型一律會在程式碼中加上前置詞 #Microsoft.Azure.Search,以致 ArabicNormalizationTokenFilter 實際上將指定為 #Microsoft.Azure.Search.ArabicNormalizationTokenFilter。 為縮短表格寬度,我們已移除前置詞,但請務必將其包含在您的程式碼中。

另請參閱