了解语言资源组件
语言资源由断字符和词干分析器组成,用于将索引生成和查询功能扩展到新语言和区域设置。 断字符在创建索引和查询期间都使用。 词干分析器仅用于查询。 Windows搜索使用语言资源 DLL 绑定到特定语言区域设置的 IWordBreaker 和 IStemmer 实现。
本主题按如下所示进行组织:
关于语言资源
Windows搜索使用筛选器 (IFilter 接口) 和 ILoadFilter 实现以本机格式访问文档。 IFilter 组件从文档中提取文本内容、属性和格式。 IFilter 标识要筛选的文档的区域设置。 索引组件为该区域设置调用适当的断字符。 如果没有可用,索引组件将调用中性断字符。 断字符从 IFilter 接收断字符的输入流,断字符分析以生成单个字词和短语。 断字符还规范化日期和时间格式。 索引器通过将单词转换为所有大写字母来规范化断字符生成的单词。 索引器将大写单词保存到全文索引,但针对该区域设置标识的干扰词除外。
下表列出了句子的操作和相应结果:“图 1 说明了索引创建过程中Windows搜索的语言资源的角色。
操作 | 生成的文本 |
---|---|
原始文本 | 图 1 说明了索引创建过程中Windows搜索的语言资源的角色。 |
筛选 | 图 1 说明了索引创建过程中Windows搜索的语言资源的角色。 |
断字 | 图,1,说明、角色、语言、资源、for、Windows、搜索、期间、索引、创建、过程、EOS |
标准化 | 图,1,说明、角色、语言、资源、WINDOWS、搜索、期间、索引、创建、过程 |
干扰词删除 | 图, 说明, 角色, 语言, 资源, WINDOWS, 搜索, 期间, 索引, 创建, 进程 |
保存到全文索引 | 图, 说明, 角色, 语言, 资源, WINDOWS, 搜索, 期间, 索引, 创建, 进程 |
断字符和词干分析器用于在查询时扩展 FREETEXT 查询。 除非将语言代码标识符 (LCID) 作为查询参数传递,否则查询的区域设置是默认的区域设置。 查询组件在查询的 WHERE 子句中列出的查询词上调用相应的断字符。 例如,如果查询的 WHERE 子句包含“FREETEXT (apple、oranges 和梨) ”,则断字符接收文本“apples、oranges 和 pears”。如果查询 WHERE 子句使用 CONTAINS 全文谓词,则断字符的文本输出将规范化。 否则,查询组件会将断字符标识的每个单词传递给该语言和区域设置的适当词干分析器。 词干分析器为该词生成替代形式或偏转形式的列表。 查询组件规范化查询词的扩展列表,并删除干扰词。
下表列出了查询“apples、oranges 和 pears”的操作和相应结果。
操作 | 生成的文本 |
---|---|
原始文本 | 苹果、橙子和梨 |
断字 | 苹果、橙子和梨、EOS |
词干 | apple, apples, orangey, oranges, and, pear, pears |
标准化 | 苹果、苹果、橙色、橙色、橙子和梨、梨、梨 |
干扰词删除 | 苹果, 苹果, 橙色, 橙色, 橙色, 橙色, 橙子, 梨, 梨 |
展开的查询词列表 | 苹果, 苹果, 橙色, 橙色, 橙色, 橙色, 橙子, 梨, 梨 |
展开的查询词会增加查询查找与原始查询意向匹配的文档的可能性。 断字符或词干分析器在查询时生成的文本不会存储在磁盘上。
断字
断字是将文本拆分为单个文本标记或单词。 许多语言(尤其是带有罗马字母)的单词分隔符数组 (,例如空格) 和标点符号,用于识别单词、短语和句子。 断字符必须依靠准确的语言启发法来提供可靠和准确的结果。 断字对于基于字符的编写或基于脚本的字母表系统来说更为复杂,其中各个字符的含义是从上下文中确定的。 有关可能影响断字符实现的语言注意事项的详细信息,请参阅 语言和 Unicode 注意事项。
词干
Windows搜索仅在查询时应用词干分析器,以便在 FREETEXT 和属性查询中为字词生成其他单词表单。 词干分析器执行形态分析,并应用语法规则来生成单词的替代形式或偏转形式列表。 备用形式通常具有相同的词干或基形式。 通过生成单词的转折表单,索引服务返回与查询更相关的查询结果。 例如,针对“游泳见面”的全文查询包含“游泳、游泳、游泳、游泳、游泳、游荡”、“swum”或“meet、meet's、meetings、meetings'、meeting、met”和这些术语的组合。
某些语言要求在索引时间和查询时间生成转义词,同时生成标准转折和变体转折。 在这种情况下,词干分析发生在断字符组件中,实际词干分析器中的词干工作最少。 例如,日语断字符在创建索引和查询期间执行词干分析,使查询能够查找搜索词的不同转折形式。
标准化
所有语言的文档都存储在单个索引中。 尽管单词和语言规则存在显著差异,但有一些注意事项,如数字、日期和时间,在所有断字符中一致地处理。 有关可能影响断字符实现的规范化注意事项的详细信息,请参阅 Surface Form Normalization。
干扰词
干扰词(也称为非索引词)是内容不重要的指标的字词。 索引服务从查询词和全文索引中包含的内容中删除干扰词。 偏移量是在文档或查询词列表中出现单词。 文档或查询中干扰词的偏移量将记录为空白。 删除干扰词可避免不必要的索引增长来提高查询性能。 它还改进了查询结果的相关性。 可以将Windows搜索配置为使用特定语言的干扰词列表。 为该语言调用断字符时,将使用这些列表。 例如,英语中的“the”经常发生,因此它几乎没有作为唯一键的值。 “The”位于干扰词列表中,未写入内容索引,如果查询,则不返回任何结果。
干扰词在短语查询中充当占位符。 包含文本“瓦格狗”的文档存储在索引中,其中“瓦格”在匹配项 1 和“dog”在匹配项 3 处存储。 短语查询“wag dog”不匹配,但短语查询“瓦格狗”确实匹配,因为匹配项信息匹配。 短语“瓦格紫色狗”不匹配,因为“紫色”在出现时 2 的索引中找不到。 但是,对“瓦格狗”的查询返回包含“瓦格紫色狗”的文档,因为无法有效地确定文档是否在“瓦格”和“狗”之间有非干扰词。
相关主题