Windows 搜索支持的语言

本主题介绍 Windows 搜索如何支持多种语言。

词汇切分、分词器和语言资源

Windows 搜索与语言无关,但不同语言的搜索准确性可能因分词器标记文本的方式而异。 分词器为语言实现各种标记化规则,并将文本拆分为要编制索引或搜索的单个标记或单词。

索引文本的语言和查询字符串都分为标记。 由于词汇切分规则因语言而异,因此每种语言或语言系列都有单独的分词程序。 如果查询语言与索引语言不匹配,则结果可能是不可预知的。

Windows 搜索附带了一组定义完善的分词器。 Windows Vista 及更高版本支持经典分词系统和词干分析器组件。 如果无法确定文档的语言,Windows 搜索将尝试检测语言以识别最合适的分词程序。 Windows 搜索尝试通过调用 GetSystemPreferredUILanguages 函数来确定第一个多用户界面 (MUI) 语言 (这通常是系统 UI 语言,除非) 安装 MUI 语言包。 如果该调用成功,则使用第一种 MUI 语言的分词器。 如果对 GetSystemPreferredUILanguages 的 调用失败,Windows 搜索将通过调用 GetSystemDefaultLCID 函数来检索系统区域设置,并使用与该区域设置关联的分词器。

如果没有为语言安装分词程序,Windows 搜索将使用 中性 分词器中断空白区域。

可以通过注册表删除语言,如以下示例所示。

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 函数来确定此区域设置。

 

分词器支持的语言

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
塞尔维亚语_西里尔文 塞尔维亚 (塞尔维亚和黑山,前西里尔文) 0x0C1A
塞尔维亚语_拉丁语 塞尔维亚 (塞尔维亚和黑山,前拉丁文) 0x081A
Slovak_Default 斯洛伐克语(斯洛伐克) 0x041B
Slovenian_Default 斯洛文尼亚语(斯洛文尼亚) 0x0424
Spanish_Modern 西班牙语 (西班牙,现代排序) 0x0C0A
Swedish_Default 瑞典语(瑞典) 0x041D
Tamil_Default 泰米尔语(印度) 0x0449
Telugu_Default 泰卢固语(印度) 0x044A
Thai_Default 泰语(泰国) 0x041E
Turkish_Default 土耳其语 (Türkiye) 0x041F
Ukrainian_Default 乌克兰语(乌克兰) 0x0422
Urdu_Default 乌尔都语(巴基斯坦) 0x0420
Vietnamese_Default 越南语(越南) 0x042A

 

注意

表中某些语言的 LCID 是使用语言标识符、子语言标识符和排序标识符生成的。

 

有关语言和关联标识符的详细信息,请参阅 语言标识符常量和字符串

注意

不能保证所有这些语言注册表项都将出现在任何给定计算机上。 根据用户设置,任何给定语言的断字器可能安装在计算机中,也可能不安装。

 

从Windows 8.1开始,使用断字器的首选方法是通过 WinRT API WordsSegmenter 类

其他资源

Windows 搜索概述

Windows Search 作为开发平台

将托管代码与 Shell 数据和 Windows 搜索一起使用