同义词库配置
在 SQL Server 中,全文查询可以通过使用同义词库来搜索用户指定的字词的同义词。SQL Server“同义词库”为特定语言定义一组同义词。系统管理员可以定义两种形式的同义词:扩展集和替换集。通过开发针对全文数据定制的同义词库,您可以有效地扩大对这些数据的全文查询的范围。仅对指定 FORMSOF THESAURUS 子句的 CONTAINS 和 CONTAINSTABLE 查询以及 FREETEXT 和 FREETEXTABLE 查询执行同义词库匹配操作。
必须先为给定语言定义同义词库映射(同义词),才能使服务器实例上的全文搜索查询可以查找该语言的同义词。必须手动配置每个同义词库以定义下面各项:
标注字符设置
对于给定的同义词库,所有搜索模式或者区分标注字符或者不区分标注字符,例如波形符 (~)、锐音符 (´) 或元音 (¨)(即,“区分重音”或“不区分重音”)。例如,假设您在全文查询中指定要用其他模式替换“café”模式。如果同义词库不区分重音,全文搜索将替换“café”和“cafe”模式。如果同义词库区分重音,全文搜索仅替换“café”模式。默认情况下,同义词库不区分重音。
注意 有关标注字符的信息,请参阅 MSN Encarta Encyclopedia 中的 Diacritical Mark(标注字符)。
扩展集
扩展集包含一组同义词(如“writer”、“author”和“journalist”),全文查询可将这些同义词互相替换。如果查询包含扩展集中任意同义词的匹配项,这些查询将进行扩展以包含扩展集中的每个其他同义词。
有关详细信息,请参阅本主题后面的“扩展集的 XML 结构”。
替换集
替换集包含将由替换集替换的文本模式。有关示例,请参阅本主题后面的“替换集的 XML 结构”部分。
注意 |
---|
有关同义词库文件的限制和建议,请参阅如何编辑同义词库文件(全文搜索)。 |
SQL Server 提供了一组 XML 同义词库文件,分别对应于每种支持的语言。这些文件实际上是空的。它们仅包含所有 SQL Server 同义词库通用的顶级 XML 结构以及注释掉的示例同义词库。
本主题包含有助于完成此任务的信息,如下所示:
同义词库文件的初始内容
同义词库文件的位置
查询如何使用同义词库文件
了解同义词库文件的结构
使用同义词库文件
同义词库文件的初始内容
随 SQL Server 2008 发行的同义词库文件均包含以下 XML 代码:
<XML ID="Microsoft Search Thesaurus">
<!-- Commented out
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
<expansion>
<sub>Internet Explorer</sub>
<sub>IE</sub>
<sub>IE5</sub>
</expansion>
<replacement>
<pat>NT5</pat>
<pat>W2K</pat>
<sub>Windows 2000</sub>
</replacement>
<expansion>
<sub>run</sub>
<sub>jog</sub>
</expansion>
</thesaurus>
-->
</XML>
[返回页首]
同义词库文件的位置
同义词库文件的默认位置为:
<SQL_Server_data_files_path>\MSSQL10_50.MSSQLSERVER\MSSQL\FTDATA\
该默认位置包含以下文件:
特定于语言的同义词库文件
在安装过程中,将在上述位置安装空同义词库文件。对于每种支持的语言,将提供一个单独的文件。系统管理员可以自定义这些文件。
同义词库文件的默认文件名采用以下格式:
'ts' + <由三个字母组成的语言缩写形式> + '.xml'
给定语言的同义词库文件名称是在注册表中通过以下值指定的:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<实例名称>\MSSearch\<语言缩写>。
全局同义词库文件
空的全局同义词库文件 tsGlobal.xml。
可通过更改同义词库文件的注册表项来更改其位置和名称。对于每种语言,同义词库文件位置是在注册表的以下值中指定的:
HKLM/SOFTWARE/Microsoft/Microsoft SQL Server/<实例名称>/MSSearch/Language/<语言缩写>/TsaurusFile
全局同义词库文件对应于 LCID 为 0 的非特定语言。此值只能由管理员更改。
[返回页首]
查询如何使用同义词库文件
同义词库查询同时使用特定于语言的同义词库和全局同义词库。首先,查询查找特定于语言的文件,并加载该文件以进行处理(除非已加载了该文件)。该查询将进行扩展以包含同义词库文件中的扩展集和替换集规则所指定的特定于语言的同义词。然后,对全局同义词库重复执行这些步骤。但是,如果字词已经是特定于语言的同义词库文件中的匹配项的一部分,则不会在全局同义词库中对该字词再次进行匹配。
[返回页首]
了解同义词库文件的结构
每个同义词库文件都定义了一个 ID 为 Microsoft Search Thesaurus 的 XML 容器,以及一个包含示例同义词库的注释 <!---->。同义词库是在 <thesaurus> 元素中定义的,其中包含定义标注字符设置、扩展集和替换集的子元素的示例,如下所示:
标注字符设置的 XML 结构
同义词库的标注字符设置是在单个 <diacritics_sensitive> 元素中指定的。此元素包含一个控制重音区分设置的整数值,如下所示:
标注字符设置
值
XML
不区分重音
0
<diacritics_sensitive>0</diacritics_sensitive>
区分重音
1
<diacritics_sensitive>1</diacritics_sensitive>
注意 只能在文件中应用一次此设置,它适用于文件中的所有搜索模式。不能为各个模式单独指定此设置。
扩展集的 XML 结构
每个扩展集都包含在 <expansion> 元素中。在此元素中,可以在 <sub> 元素中指定一个或多个替换项。在扩展集中,可以指定一组互为同义词的替换项。
例如,可以对扩展部分进行编辑,将替换项“writer”、“author”和“journalist”视为同义词。如果全文搜索查询中包含一个替换项的匹配项,这些查询将进行扩展以包含扩展集中指定的所有其他替换项。因此,在前面的示例中,如果对单词“author”发出 FORMS OF THESAURUS 或 FREETEXT 查询,全文搜索还会返回包含单词“writer”和“journalist”的搜索结果。
对于上述示例,您将看到如下所示的扩展集部分:
<expansion> <sub>writer</sub> <sub>author</sub> <sub>journalist</sub> </expansion>
替换集的 XML 结构
每个替换集都包含在 <replacement> 元素中。在此元素中,可以在 <pat> 元素中指定一个或多个模式,还可以在 <sub> 元素中指定零个或多个替换项,每个替换项对应于一个同义词。可以指定要由替换集替换的模式。模式和替换项可以包含一个或一组单词。如果没有为某个模式指定任何替换项,则会导致从用户查询中删除该模式。
例如,假设您希望运行用替换项“Windows 2000”或“XP”替换“W2K”模式的查询。如果对“W2K”运行全文查询,全文搜索仅返回包含“Windows 2000”或“XP”的搜索结果。它不会返回包含“W2K”的结果。这是因为模式“W2K”已经由模式“Windows 2000”和“XP”所“替换”。
对于上述示例,您将看到如下所示的替换集部分:
<replacement> <pat>W2K</pat> <sub>Windows 2000</sub> <sub>XP</sub> </replacement>
如果有两个具有相似模式的替换集可匹配,则优先选用两者中的更长者。例如,如果对“Internet Explorer online community”运行 FORMS OF THESAURUS 查询,并且有以下替换集,则“Internet Explorer”替换集的优先级别高于“Internet”的优先级别。因此,查询将作为“IE online community”或“IE 5 online community”进行处理。
<replacement> <pat>Internet</pat> <sub>intranet</sub> </replacement>
以及
<replacement> <pat>Internet Explorer</pat> <sub>IE</sub> <sub>IE 5</sub> </replacement>
[返回页首]
使用同义词库文件
编辑同义词库文件
加载更新的同义词库文件
查看断字符的切分结果、同义词库和非索引字表组合