断字符和词干分析器
断字符和词干分析器用于对所有全文索引数据执行语言分析。语言分析将涉及到查找词边界(断字)和组合动词(词干分析)。断字符和词干分析器是特定于语言的,并且各语言的语言分析规则也各不相同。对于给定语言,“断字符”通过根据语言的词法规则确定词的边界位置来标识各个词。每个词(也称为“标记”)使用压缩表示形式插入全文索引以减少其大小。“词干分析器”根据该语言的规则生成特定词的变形形式(例如,“running”、“ran”和“runner”是单词“run”的不同形式)。
使用特定于语言的断字符,能够使得为该语言生成的词更加准确。如果断字符用于整个语系而不是特定的子语言,将使用该语系中的主要语言。例如,使用法语断字符来处理加拿大法语文本。如果某一特定语言没有可用的断字符,将使用非特定语言断字符。使用非特定语言断字符时,词将在非特定语言字符(如空格和标点符号)处断开。
断字符注册
要想使用某种语言的断字符,就必须为其进行注册。对于已注册的断字符,关联的语言资源(词干分析器、干扰词(非索引字)和同义词库文件)也将可用于全文索引和查询操作。若要查看当前在 SQL Server 中注册了断字符的语言列表,请使用以下 Transact-SQL 语句:
SELECT * FROM sys.fulltext_languages
如果您添加、删除或更改了断字符,则需要刷新为全文索引和查询而支持的 Microsoft Windows 区域设置标识符 (LCID) 列表。有关详细信息,请参阅如何更改已注册的断字符和筛选器的列表 (Transact-SQL)。
SQL Server 2008 附带有若干个经过许可的第三方断字符。您可以手动加载若干种语言(丹麦语、波兰语和土耳其语)的附加的第三方断字符(以及词干分析器)。默认情况下不启用这些断字符,因为它们由尚未提供默认启用它们所需的测试、安全性或可靠性级别的第三方所有。有关详细信息,请参阅如何加载经过许可的第三方断字符。
Full-Text Language 选项
对于 SQL Server 的本地化版本,SQL Server 安装程序将把 default full-text language 选项设置为服务器的语言(如果存在合适的匹配项)。对于 SQL Server 的非本地化版本,default full-text language 选项为“英语”。
创建或修改全文索引时,可以为每个全文索引列指定不同的语言。如果未指定列的语言,默认值是配置选项 default full-text language 的值。
有关详细信息,请参阅 default full-text language 选项。
注意 |
---|
在单个全文查询函数子句中列出的所有列必须使用同一语言,除非在查询中指定了 LANGUAGE 选项。所查询的用于全文索引列的语言确定了对全文查询谓词(CONTAINS 和 FREETEXT)和函数(CONTAINSTABLE 和 FREETEXTTABLE)的参数执行的语言分析。 |
对列创建全文索引时选择语言
创建全文索引时,建议为每个索引列都指定一种语言。如果未为列指定语言,则将使用系统默认语言。某列的语言确定使用什么断字符和词干分析器对该列创建索引。另外,该语言的同义词库文件将由针对相应列的全文查询使用。
如果要选择用于创建全文索引的列语言,有几个事项需要注意。这些注意事项均与全文引擎如何对文本进行词汇切分再编制其索引有关。有关详细信息,请参阅创建全文索引时选择语言的最佳实践。
查看列的断字符语言
sys.fulltext_index_columns (Transact-SQL)
SELECT 'language_id' AS "LCID" FROM sys.fulltext_index_columns;
SQL Server 2008 中新断字符的影响
SQL Server 2008 包括 50 多种不同语言的断字符,其中的 23 种也存在于 SQL Server 2005 中。只有英语、朝鲜语、泰语和中文(所有形式)的断字符保持不变。对于其他语言,SQL Server 2008 引入了新一代断字符,这些断字符与早期断字符相比具有更好的语言规则并且更加准确。新断字符的行为可能与导入的 SQL Server 2005 全文索引中的断字符行为稍有不同。如果全文目录是在 SQL Server 2005 数据库升级到 SQL Server 2008 时导入的,这一点将非常重要。该全文目录中全文索引使用的一种或多种语言现在可能与新断字符关联。有关详细信息,请参阅全文搜索升级。
SQL Server 2005 中支持的语言的断字符版本
只有英语、朝鲜语、泰语和中文(所有形式)的断字符保持不变。下表列出了存在于 SQL Server 2005 中的断字符,并指示在 SQL Server 2008 中是否已更新这些断字符。有关所有 SQL Server 2008 断字符的完整列表,请参阅 sys.fulltext_languages (Transact-SQL)。
注意 |
---|
默认情况下,已为大多数语言注册了断字符。但是,在默认情况下会禁用许多经过许可的第三方断字符。有关这些语言以及如何注册这些断字符的信息,请参阅如何加载经过许可的第三方断字符。 |
语言 |
LCID |
断字符 |
---|---|---|
巴西语 |
1046 |
新 |
中文(中华人民共和国香港特别行政区) |
3076 |
不变 |
中文(中华人民共和国澳门特别行政区) |
5124 |
不变 |
中文(新加坡) |
4100 |
不变 |
丹麦语(默认情况下禁用) |
1030 |
不变 |
荷兰语 |
1043 |
新 |
英语 |
1033 |
不变 |
英语(英国) |
2057 |
不变 |
法语 |
1036 |
新 |
德语 |
1031 |
新 |
意大利语 |
1040 |
新 |
日语 |
1041 |
新 |
朝鲜语 |
1042 |
不变 |
非特定语言 |
0 |
新 |
波兰语(默认情况下禁用) |
1045 |
不变 |
葡萄牙语 |
2070 |
新 |
俄语 |
1049 |
新 |
简体中文 |
2052 |
不变 |
西班牙语 |
3082 |
新 |
瑞典语 |
1053 |
新 |
泰语 |
1054 |
不变 |
繁体中文 |
1028 |
不变 |
土耳其语(默认情况下禁用) |
1055 |
不变 |
有关支持的语言的完整列表,请参阅 sys.fulltext_languages (Transact-SQL)。
获取有关断字符的信息
查看断字符、同义词库和非索引字表组合的词汇切分结果
返回有关已注册断字符的信息