有关全文搜索的国际化注意事项
在创建全文索引时选择语言
如果要在创建全文索引时选择列语言,有几个事项需要注意。这些注意事项与如何对文本进行标记化然后使用 Microsoft Full-Text Engine for SQL Server (MSFTESQL) 创建索引有关。将使用断字符、基于词的边界对要索引的文本进行标记化。在英语中,这种词边界通常是空格或某些标点符号。在其他语言(例如德语)中,词和字符可能会混在一起,因此您选择的列级语言应当代表您希望存储在该列各行中的语言。如果您对此不能确定,常用的最好办法是使用非特定语言断字符,这种断字符只基于空格和标点进行标记化。选择列级语言的另一个好处是可以进行“词干分析”。根据定义,在全文查询中进行词干分析就是搜索特定语言中某个词的所有词干派生形式(变形)的过程。
选择语言时的另一个注意事项与数据的表示方式有关。对于未存储在 varbinary(max) 列中的数据,不会执行专门的筛选,而一般通过断字组件按原样传递该文本。断字符主要用于处理书面文本。因此,如果文本中包含任何类型的标记(例如 HTML),则在索引和搜索过程中可能无法获得很好的语言准确性。在这种情况下,您有两个选择 - 首选方法是只将文本数据存储在 varbinary(max) 列中,并指示数据的文档类型,以便对其进行筛选。如果不能使用此方法,那么可以考虑使用非特定语言断字符,并且(如果可能)将标记数据(例如 HTML 中的“br”)添加到干扰词列表中。
注意: |
---|
当指定非特定语言时,基于语言的词干分析将不起作用。 |
语言支持
在 Microsoft SQL Server 2005 中,全文查询可以对列使用非默认语言来搜索全文数据。只要支持该语言并安装了其资源,就可以使用在 CONTAINS、CONTAINSTABLE、FREETEXT 和 FREETEXTTABLE 查询的 LANGUAGE language_term
子句中指定的语言来进行断字、词干分析并进行同义词库和干扰词处理。
下表显示了存储全文索引数据所使用的语言。该语言基于在 Microsoft SQL Server 安装过程中选择的 Unicode 排序规则区域设置标识符。
Unicode 排序规则区域设置标识符 | 全文数据存储所用的语言 |
---|---|
中文拼音(台湾) |
繁体中文 |
中文标点 |
简体中文 |
中文笔画 |
简体中文 |
中文笔画(台湾) |
繁体中文 |
荷兰语 |
荷兰语 |
英语(英国) |
英语(英国) |
法语 |
法语 |
通用 Unicode |
英语(美国) |
德语 |
德语 |
德语电话簿 |
德语 |
意大利语 |
意大利语 |
日语 |
日语 |
日语 Unicode |
日语 |
朝鲜语 |
朝鲜语 |
朝鲜语 Unicode |
朝鲜语 |
西班牙语(西班牙) |
西班牙语 |
瑞典语/芬兰语 |
瑞典语 |
此列表中未包括的其他所有 Unicode 排序规则区域设置标识符值都映射到使用空格来分隔词的非特定语言的断字符和词干分析器。
注意: |
---|
Unicode 排序规则区域设置标识符设置用于所有可创建全文索引的数据类型(如 char、nchar 等)。如果已将 char、varchar 或 text 类型的列的排序顺序设置为不同于 Unicode 排序规则区域设置标识符语言的语言,则在对 char、varchar 和 text 类型的列进行全文索引和查询时,仍然会使用 Unicode 排序规则区域设置标识符。 |
请参阅
其他资源
全文搜索概念
数据类型 (Transact-SQL)
CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
FREETEXTTABLE (Transact-SQL)