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 搜索中扩展语言资源。
- 如果需要识别文本片段的语言,可以使用语言自动检测 (LAD) (Windows 7 及更高版本中提供)。 有关详细信息,请参阅 扩展语言服务 (ELS) 。
- 有关管理、查询和扩展索引的信息,请参阅 Windows 搜索开发人员指南。
相关主题