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 搜尋 使用 Managed 程式代碼