共用方式為


Windows 搜尋支持的語言

本主題描述 Windows 搜尋如何支援多種語言。

Tokenization、Wordbreakers 和 Language Resources

Windows 搜尋與語言無關,但跨語言搜尋的正確性可能會因為斷詞工具標記文字的方式而有所不同。 斷詞工具會針對語言實作各種標記化規則,並將文字分成要編製索引或搜尋的個別標記或單字。

索引文字和查詢字串的語言都會分成標記。 由於標記化規則會因語言而異,因此每個語言或語言系列都有個別的斷詞工具。 如果查詢語言與索引語言之間不符,則結果可能會無法預測。

Windows 搜尋隨附一組定義完善的斷詞工具。 Windows Vista 和更新版本支援傳統斷詞工具和字幹分析器元件。 如果無法判斷文件的語言,Windows 搜尋會嘗試偵測語言來識別最適當的斷詞工具。 Windows 搜尋會藉由呼叫 getSystemPreferredUILanguages 函式來嘗試偵測語言,以判斷第一個多個使用者介面 (MUI) 語言(這通常是系統 UI 語言,除非安裝 MUI 語言套件)。 如果呼叫成功,則會使用第一個 MUI 語言的斷詞工具。 如果呼叫 GetSystemPreferredUILanguages 失敗,Windows Search 會呼叫 GetSystemDefaultLCID 函式,並使用與該地區設定相關聯的斷詞工具來擷取系統地區設定。

如果未針對語言安裝任何斷詞工具,Windows 搜尋會使用 Neutral 斷詞工具,在空格符上中斷。

您可以透過登錄移除語言,如下列範例所示。

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Control
            ContentIndex
               Language
                  Dutch_Dutch
                     (Default)
                     Locale
                     NoiseFile
                     StemmerClass = CLSID
                     WBreakerClass = CLSID

提示

如果您變更登錄,請重新啟動 Windows 搜尋。

 

當 Windows 搜尋需要新的斷詞工具時,會讀取類別識別碼 (CLSID),並快取具現化的斷詞工具。

您可以實作 IWordBreaker 介面,來建立語言的自定義斷詞工具。 Windows 搜尋接著會在建置內容索引並執行查詢時,呼叫 IWordBreaker 方法。

索引內容的地區設定資訊是從內容的來源擷取。 如果來源實作者不知道索引內容的地區設定,它應該將地區設定設為 LOCALE_NEUTRAL

例如,如果您實作篩選處理程式(IFilter 介面的實作)、屬性處理程式或通訊協定處理程式,則除非您有特定的地區設定資訊,而且確信其精確度,否則應該將索引內容的地區設定為 LOCALE_NEUTRAL

提示

如果索引查詢是以使用者輸入為基礎,地區設定應該符合使用者輸入的語言。 您可以呼叫 getKeyboardLayout函式來判斷此地區設定。

 

Wordbreakers 支持的語言

Windows 搜尋包含支援下列語言的斷詞工具。

登錄機碼 語言(子語言) LCID
Arabic_SaudiArabia 阿拉伯文(中性) 0x0001
Bengali_Default 班格拉(中性) 0x0045
Bulgarian_Default 保加利亞文(保加利亞) 0x0402
Catalan_Default 加泰羅尼亞文 (加泰羅尼亞) 0x0403
Chinese_HongKong 中文(香港特別行政區,中國) 0x0C04
Chinese_Simplified 中文(簡體) 0x0804
Chinese_Traditional 中文(繁體中文) 0x0404
Croatian_Default 克羅埃西亞文(克羅埃西亞) 0x041A
Czech_Default 捷克文(捷克共和國) 0x0405
Danish_Default 丹麥文(丹麥) 0x0406
Dutch_Dutch 荷蘭文(荷蘭) 0x0413
English_UK 英文(英國) 0x0809
English_US 英文(美國) 0x0409
Finnish_Default 芬蘭文(芬蘭) 0x040B
French_French 法文(法國) 0x040C
German_German 德國(德國) 0x0407
Greek_Default 希臘文(希臘) 0x0408
Gujarati_Default 古吉拉蒂(印度) 0x0447
Hebrew_Default 希伯來文 (中性) 0x000D
Hindi_Default 印度文(印度) 0x0439
Hungarian_Default 匈牙利文(匈牙利) 0x040E
Icelandic_Default 冰島文(冰島) 0x040F
Indonesian_Default 印尼(印尼) 0x0421
Italian_Italian 義大利文(義大利) 0x0410
Japanese_Default 日文(日本) 0x0411
Kannada_Default 坎納達(印度) 0x044B
Korean_Default 韓文(韓國) 0x0412
Latvian_Default 拉脫維亞文(拉脫維亞) 0x0426
Lithuanian_Default 立陶宛文(立陶宛) 0x0427
Malay_Malaysia 馬來文(馬來西亞) 0x043E
Malayalam_Default 馬來亞蘭文(中性) 0x004C
Marathi_Default 馬拉蒂(印度) 0x044E
Norwegian_Bokmal 挪威文(挪威博克瑪律) 0x0414
Polish_Default 波蘭文(波蘭) 0x0415
Portuguese_Portugal 葡萄牙文(葡萄牙) 0x0816
Portuguese_Brazil 葡萄牙文(巴西) 0x0416
Punjabi_Default 旁遮普(印度) 0x0446
Romanian_Default 羅馬尼亞文(羅馬尼亞) 0x0418
Russian_Default 俄羅斯文(中性) 0x0019
Serbian_Cyrillic 塞爾維亞(塞爾維亞和黑山,前,斯拉夫) 0x0C1A
Serbian_Latin 塞爾維亞(塞爾維亞和黑山,前,拉丁) 0x081A
Slovak_Default 斯洛伐克文(斯洛伐克) 0x041B
Slovenian_Default 斯洛維尼亞文(斯洛維尼亞) 0x0424
Spanish_Modern 西班牙文(西班牙,現代排序) 0x0C0A
Swedish_Default 瑞典文(瑞典) 0x041D
Tamil_Default 泰米爾文(印度) 0x0449
Telugu_Default 泰魯古(印度) 0x044A
Thai_Default 泰國(泰國) 0x041E
Turkish_Default 土耳其文(圖爾基耶) 0x041F
Ukrainian_Default 烏克蘭文(烏克蘭) 0x0422
Urdu_Default 烏爾都(巴基斯坦) 0x0420
Vietnamese_Default 越南文(越南) 0x042A

 

注意

數據表中某些語言的 LCID 是使用語言識別碼、子語言標識碼和排序標識碼來產生。

 

如需語言和相關識別碼的詳細資訊,請參閱 語言識別子常數和字串

注意

不保證所有語言登錄機碼都會出現在任何指定的計算機上。 根據用戶設定,任何指定語言的斷詞工具可能或可能不會安裝在計算機中。

 

從 Windows 8.1開始,使用斷詞工具的慣用方式是透過 WinRT API WordsSegmenter 類別

其他資源

  • 如需如何針對其他語言和地區設定實作和使用自定義斷詞工具和字幹分析器的資訊,請參閱在 Windows 搜尋中擴充語言資源
  • 如果您需要識別文字的語言,您可以使用 Windows 7 和更新版本中提供的語言自動偵測 (LAD)。 如需詳細資訊,請參閱 擴充語言服務 (ELS)。
  • 如需管理、查詢及擴充索引的相關信息,請參閱 Windows 搜尋開發人員指南

Windows 搜尋概觀

Windows 搜尋作為開發平臺

搭配殼層數據和 Windows 搜尋 使用 Managed 程式代碼