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

注意

Azure AI 搜尋服務 可透過 Azure 入口網站REST APIAzure SDK 取得。 它同時也是 Foundry IQ 的基礎,這是一個管理式知識層,能將企業內容轉化為可重複使用、權限感知的知識庫,供 Microsoft Foundry 入口網站中的代理使用。

自定義分析器是純文本內容語彙分析的元件。 它是一個令牌化工具、一或多個令牌篩選器和一或多個字元篩選的使用者定義組合。 自訂分析器是在搜尋索引內指定,然後在需要自訂分析的欄位定義上依名稱參考。 系統會依每個欄位呼叫自訂分析器。 欄位上的屬性會判斷它是否用於編製索引、查詢或兩者。

在自訂分析器中,字元篩選器會在分詞器處理之前先準備輸入文字 (例如移除標記)。 接下來,分詞器會將文字分成標記。 最後,詞彙過濾器會修改詞彙分詞器發出的詞彙。 如需概念和範例,請參閱 Azure AI 搜尋 中的 分析器和教學課程:建立電話號碼的自定義分析器。

為何要使用自訂分析器?

您應該在不包含大型語言模型的傳統搜尋工作流程中考慮自定義分析器,以及其處理內容異常的能力。

在類別搜尋中,自定義分析器讓您能夠掌控將純文本轉換成可索引且可搜尋的標記的過程,方式是讓您選擇哪些分析或篩選類型要啟用,以及其執行的順序。

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

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

  • 在文本輸入被標記化之前,使用字元篩選來移除 HTML 標記,或者替換特定字元或符號。

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

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

  • 快速字首/字尾搜尋。 將 Edge N-gram 語彙基元篩選器新增至文字索引,以便針對文字前置詞進行快速匹配。 您可以將其與反向令牌篩選器結合使用以進行詞尾匹配。

  • 自訂標記化。 例如,使用空白字元分詞器以空白字元作為分隔符號,將句子分成多個詞元

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

注意

自訂分析器未在 Azure 入口網站中公開。 新增自定義分析器的唯一方法是透過建立索引架構的程序代碼

建立自訂分析器

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

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

  • 自訂分析器中的名稱必須是唯一的,而且不能與任何內建分析器、權杖化工具、權杖篩選或字元篩選相同。 名稱是由字母、數位、空格、破折號或底線所組成。 名稱必須以純文字字元開頭和結尾。 名稱長度必須低於 128 個字元。

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

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

  • tokenizer 恰好是一個分詞器。 需要輸入一個值。 如果您需要一個以上的 tokenizer,您可以建立多個自訂分析器,並且在索引結構描述中逐欄位指派它們。

  • tokenFilters 可以是 Token Filters 中的一個或多個篩選器,這些篩選器會在權杖化之後依提供的順序進行處理。 對於具有選項的權杖篩選條件,請新增 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 說明和選項
關鍵詞 類型僅在有選項時適用 將欄位的整個內容視為單一語彙基元。 這適合用於郵遞區號、識別碼和產品名稱等資料。
模式 模式分析器 透過規則運算式模式彈性地將文字分割成字詞。

選項

lowercase (type: bool) - 決定是否將詞彙轉為小寫。 預設值為 True。

pattern (類型:字串) - 用來分隔標記的正則表達式模式。 預設值為 \W+,其符合非文字字元。

flags (類型:字串) - 正則表達式旗標。 預設值是空字串。 允許的值:CANON_EQ、CASE_INSENSITIVE、COMMENTS、DOTALL、LITERAL、MULTILINE、UNICODE_CASE、UNIX_LINES

stopwords (類型:字串陣列) - 停用字詞清單。 預設為空白清單。
簡單 類型僅在有選項時適用 在非字母的位置分割文字,並將其轉換成小寫。
標準
(也稱為 standard.lucene)
StandardAnalyzer 標準 Lucene 分析器,由標準分詞器、小寫篩選器和停用字篩選器組成。

選項

maxTokenLength (類型:int) - 語彙基元長度的上限。 預設值為 255。 超過長度上限的標記會進行分割。 可用的語彙基元長度上限是 300 個字元。

stopwords (類型:字串陣列) - 停用字詞清單。 預設為空白清單。
standardasciifolding.lucene 類型僅在有選項時適用 使用 ASCII 折疊篩選器的標準分析器。
停止 停止分析器 在非字母處分割文字,並套用小寫與停用詞的詞元篩選器。

選項

stopwords (類型:字串陣列) - 停用字詞清單。 預設值為英文的預先定義清單。
空白 類型僅在有選項時適用 使用空白字元分詞器的分析器。 長度超過 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 (type: string array) - 下列格式的對應清單: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 (type: string) - 必要。

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 說明和選項
經典 經典分詞器 以文法為基礎且適合用來處理大部分歐洲語言文件的 Token 化工具。

選項

maxTokenLength (類型:int) - 語彙基元長度的上限。 預設值:255,最大值:300。 超過長度上限的標記會進行分割。
edgeNGram EdgeNGramTokenizer 將邊緣的輸入分詞化為指定大小的 n-gram。

選項

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

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

tokenChars (類型:字串陣列) - 用於標記中保留的字元類別。 允許的值:
letter、、digitwhitespacepunctuationsymbol。 預設為空陣列 - 保留所有字元。
keyword_v2 KeywordTokenizerV2 以單一語彙基元的形式輸出整個輸入。

選項

maxTokenLength (類型:int) - 語彙基元長度的上限。 預設值:256,最大值:300。 超過長度上限的標記會進行分割。
類型僅在有選項時適用 在非字母處分割文字。 長度超過 255 個字元的標記會被分割。
小寫 類型僅在有選項時適用 在非字母的位置分割文字,並將其轉換成小寫。 長度超過 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 將輸入分詞化為指定大小的 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 (type: 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 和電子郵件標記化為一個標記。

選項

maxTokenLength (類型:int) - 語彙基元長度的上限。 預設值:255,最大值:300。 超過長度上限的標記會進行分割。
空白 類型僅在有選項時適用 在空白字元處分割文字。 長度超過 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 正規化器以正規化字形的詞元篩選器。
省略符號 類型僅在有選項時適用 去除單引號 (包括單引號本身) 之後的所有字元。
asciifolding AsciiFoldingTokenFilter 將不在前 127 個 ASCII 字元內的英文字母、數字和符號類 Unicode 字元 (Basic Latin Unicode 區塊) 轉換為其對等的 ASCII 項目 (如果有的話)。

選項

preserveOriginal (類型:bool) - 如果為 true,則保留原始的詞元。 預設值為 false。
cjk_bigram CjkBigramTokenFilter 根據 StandardTokenizer 產生的 CJK 詞彙形成雙詞組。

選項

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

outputUnigrams (類型:bool) - 如果您一定要輸出單字母組 (unigram) 和雙字母組 (bigram),則設為 true。 預設值為 false。
cjk_width 類型僅在有選項時適用 標準化 CJK 寬度的差異。 將全形 ASCII 變體摺疊為對應的基本 Latin,並將半形 Katakana 變體摺疊為對應的 kana。
經典 類型僅在有選項時適用 移除英文所有格,以及首字母縮寫中的句點。
common_grams CommonGramTokenFilter 建立經常出現詞彙的雙詞組,並在建立索引時使用。 單一詞彙仍然會建立索引,同時覆疊雙詞組。

選項

commonWords (類型:字串陣列) - 一組常見的字組。 預設為空白清單。 必要。

ignoreCase (類型:bool) - 若值為 true,則比對不區分大小寫。 預設值為 false。

queryMode (type: bool) - 產生雙詞組,然後移除常用字,以及後面接常用字的單一詞彙。 預設值為 false。
dictionary_decompounder DictionaryDecompounderTokenFilter 分解多種日耳曼語言中常見的複合詞。

選項

wordList (類型:字串陣列) - 要作為比對依據的字組清單。 預設為空白清單。 必要。

minWordSize (類型:int) - 只會處理超過此長度的字組。 預設值為 5。

minSubwordSize (類型:int) - 只會輸出長度大於此設定的子字組。 預設值為 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(類型:字串陣列)- 要移除的一組文章。 預設為空白清單。 如果未設定文章清單,預設會移除所有法文冠詞。
德語標準化 類型僅在有選項時適用 依據 German2 snowball 演算法的啟發式方法,將德文字元正規化。
hindi_normalization 類型僅在有選項時適用 標準化印度文字,以移除拼字變化的一些差異。
indic_normalization IndicNormalizationTokenFilter 標準化印度語文字的 Unicode 表示法。
keep KeepTokenFilter 只保留文字包含於指定字詞清單中的詞元之詞元篩選器。

選項

keepWords (類型:字串陣列) - 要保留的字組清單。 預設為空白清單。 必要。

keepWordsCase (類型:bool) - 如果為 true,則會先將所有字組改為小寫。 預設值為 false。
keyword_marker 關鍵字標記過濾器 將字詞標示為關鍵字。

選項

keywords (類型:字串陣列) - 要標示為關鍵字的字組清單。 預設為空白清單。 必要。

ignoreCase (類型:bool) - 如果為 true,則會先將所有字組改為小寫。 預設值為 false。
keyword_repeat 類型僅在有選項時適用 將每個傳入的語彙基元發出兩次,一次作為關鍵字,一次作為非關鍵字。
kstem 類型僅在有選項時適用 適用於英文的高效能 kstem 過濾器。
長度 LengthTokenFilter 移除太長或太短的文字。

選項

min (類型:int) - 最小數目。 預設值:0,最大值:300。

max (類型:int) - 最大數目。 預設值:300,最大值:300。
限制 Microsoft.Azure.Search.LimitTokenFilter 限制索引過程中的標記數量。

選項

maxTokenCount (類型:int) - 要產生的語彙基元數目上限。 預設值是 1。

consumeAllTokens (type: bool) - 即使已達到 maxTokenCount,是否仍必須取用輸入中的所有詞元。 預設值為 false。
小寫 類型僅在有選項時適用 將標記文字標準化為小寫。
nGram_v2 NGramTokenFilterV2 產生指定大小的 n-gram。

選項

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

maxGram (類型:int) - 預設值:2,最大值:300。 必須大於 minGram。
pattern_capture PatternCaptureTokenFilter 使用 Java Regex 發出多個詞元,每個一或多個模式中的擷取群組各產生一個詞元。

選項

patterns (類型:字串陣列) - 用於與每個詞元比對的模式清單。 必要。

preserveOriginal (type: bool) - 若設為 true,即使其中一個模式符合,也會傳回原始詞元,預設值:true
pattern_replace PatternReplaceTokenFilter 對串流中的每個詞元套用模式,並以指定的替代字串取代符合項目的詞元篩選器。

選項

pattern (類型:字串) - 必填。

replacement (type: string) - 必要。
persian_normalization 類型僅在有選項時適用 對波斯文套用標準化。
phonetic PhoneticTokenFilter (音標詞過濾器) 建立拼音相符的標記。

選項

encoder (type: string) - 要使用的語音編碼器。 允許的值包括:metaphonedoubleMetaphonesoundexrefinedSoundexcaverphone1caverphone2colognenysiiskoelnerPhonetikhaasePhonetikbeiderMorse。 預設值:metaphone。 預設值為 metaphone。

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

replace (類型:bool) - 如果編碼的語彙基元應該取代原始的語彙基元,則為 true,如果編碼的語彙基元應該新增為同義字,則為 false。 預設值為 True。
porter_stem 類型僅在有選項時適用 依據 Porter 詞幹分析演算法轉換詞元串流。
反向 類型僅在有選項時適用 反轉語彙基元字串。
北歐標準化 類型僅在有選項時適用 標準化可交換的斯堪的納維亞字元用法。
scandinavian_folding 類型僅在有選項時適用 將斯堪的納維亞字元 åÅäæÄÆ 折疊成 a,而 öÖøØ 折疊成 o。 其也可以區分雙母音 aaaeaooeoo 的使用,並且只保留第一個。
屋瓦 ShingleTokenFilter 將標記組合建立為單一標記。

選項

maxShingleSize (類型:int) - 預設值為 2。

minShingleSize (類型:int) - 預設值為 2。

outputUnigrams (type: bool) - 若為 true,輸出串流會包含輸入詞元 (單元詞),以及 Shingle。 預設值為 True。

outputUnigramsIfNoShingles (type: bool) - 若為 true,當沒有可用的 Shingle 時,會覆寫 outputUnigrams==false 的行為。 預設值為 false。

tokenSeparator (type: string) - 將相鄰詞元結合成 Shingle 時所使用的字串。 預設值為單一空格 .

filterToken (類型: string) - 要針對沒有標記的每個位置插入的字串。 預設值為 _
雪球 SnowballTokenFilter (英语) Snowball 標記篩選器。

選項

language (類型:字串) - 允許的值包括:armenianbasquecatalandanishdutchenglishfinnishfrenchgermangerman2hungarianitaliankplovinsnorwegianporterportugueseromanianrussianspanishswedishturkish
sorani_normalization SoraniNormalizationTokenFilter 標準化 Sorani 文字的 Unicode 表示法。

選項

無。
stemmer 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 (type: string array) - 下列格式的詞幹分析規則 word => stem,例如 ran => run。 預設為空白清單。 必要。
stopwords StopwordsTokenFilter(停用詞令牌過濾器) 從語彙基元資料流移除停用字詞。 根據預設,篩選器會使用預先定義的停用字詞清單 (適用於英文)。

選項

stopwords (類型:字串陣列) - 停用字詞清單。 如果已指定 stopwordsList,就不能再指定。

stopwordsList (類型:字串) - 停用字詞的預先定義清單。 如果已指定 stopwords,則無法指定此項目。 允許的值包括:arabicarmenianbasquebrazilianbulgariancatalanczechdanishdutchenglishfinnishfrenchgaliciangermangreekhindihungarianindonesianirishitalianlatviannorwegianpersianportugueseromanianrussiansoranispanishswedishthaiturkish,預設值:english。 如果已指定 stopwords,則無法指定此項目。

ignoreCase (類型:bool) - 如果為 true,則會先將所有字組改為小寫。 預設值為 false。

removeTrailing (type: bool) - 若為 true,則忽略最後一個搜尋詞,如果它是停用字。 預設值為 True。
同義詞 SynonymTokenFilter (同義詞篩選器) 在詞元流中匹配單字或多字的同義詞。

選項

同義詞(類型:字串陣列)- 必填。 下列兩種格式之一的同義字清單:

-incredible、unbelievable、fabulous => amazing - => 符號左側的所有詞彙,都會替換為其右側的所有詞彙。

-令人難以置信的、不可思議的、極好的、驚人的:以逗號分隔的對等字組清單。 設定 expand 選項來變更此清單的解譯方式。

ignoreCase (type: bool) - 針對比對執行大小寫摺疊。 預設值為 false。

expand (type: bool) - 如果為 true,則同義字清單中的所有單字(如果未使用 => 表示法)將彼此對應。
下列清單:令人難以置信、不可思議、極好、驚人,等同於:令人難以置信、不可思議、極好、驚人 => 令人難以置信、不可思議、極好、驚人

- 若為 false,則下列清單:incredible、unbelievable、fabulous、amazing,等同於:incredible、unbelievable、fabulous、amazing => incredible。
修剪 類型僅在有選項時適用 刪除標記前後的空白字元。
truncate TruncateTokenFilter 將字詞截斷至特定長度。

選項

length (類型:int) - 預設值:300,最大值:300。 必要。
獨特 UniqueTokenFilter 篩除與前一個詞元文字相同的詞元。

選項

onlyOnSamePosition (類型:bool) - 如果設定,則只會移除相同位置上的重複項目。 預設值為 True。
uppercase 類型僅在有選項時適用 將標記文字標準化為大寫。
word_delimiter WordDelimiterTokenFilter 將字組分割成部分字組,並對部分字組群組執行選擇性的轉換。

選項

generateWordParts (類型:bool) - 導致產生部分字組,例如,AzureSearch 會變成 AzureSearch。 預設值為 True。

generateNumberParts (類型:bool) - 使數字子詞被生成。 預設值為 True。

catenateWords (type: bool) - 會將最長的文字片段串接起來,例如 Azure-Search 會變成 AzureSearch。 預設值為 false。

catenateNumbers (type: bool) - 會將最長的數字片段串接起來,例如 1-2 會變成 12。 預設值為 false。

catenateAll (type: bool) - 會將所有子字詞片段串接起來,例如 Azure-Search-1 會變成 AzureSearch1。 預設值為 false。

splitOnCaseChange (type: bool) - 若為 true,則在大小寫變化處分割單字,例如 AzureSearch 會變成 AzureSearch。 預設值為 True。

preserveOriginal - 使原始詞彙被保留並新增至子詞清單。 預設值為 false。

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

stemEnglishPossessive (type: bool) - 會針對每個子字詞移除尾端的 's。 預設值為 True。

protectedWords (type: string array) - 受保護、不會被分隔的詞元。 預設為空白清單。

1 權杖篩選條件類型一律會在程式碼中加上前置詞 #Microsoft.Azure.Search,以致 ArabicNormalizationTokenFilter 實際上將指定為 #Microsoft.Azure.Search.ArabicNormalizationTokenFilter。 我們已移除前置詞以減少數據表的寬度,但請記得在程式碼中包含它。

另請參閱