配置和管理断字符和词干分析器以便搜索

断字符和词干分析器用于对所有全文索引数据执行语言分析。 语言分析将涉及到查找词边界(断字)和组合动词(词干分析)。 断字符和词干分析器是特定于语言的,并且各语言的语言分析规则也各不相同。 对于给定语言,“断字符” 通过根据语言的词法规则确定词的边界位置来标识各个词。 每个词(也称为标记)使用压缩表示形式插入全文索引以减少其大小。 词干分析器根据该语言的规则生成特定词的变形形式(例如,“running”、“ran”和“runner”是单词“run”的不同形式)。

使用特定于语言的断字符,能够使得为该语言生成的词更加准确。 如果断字符用于整个语系而不是特定的子语言,将使用该语系中的主要语言。 例如,使用法语断字符来处理加拿大法语文本。 如果某一特定语言没有可用的断字符,将使用非特定语言断字符。 使用非特定语言断字符时,词将在非特定语言字符(如空格和标点符号)处断开。

注册断字符

要想使用某种语言的断字符,就必须为其进行注册。 对于已注册的断字符,关联的语言资源词干分析器、干扰词 (非索引词) 和同义词库文件-也可用于全文索引和查询操作。 若要查看当前向 SQL Server 注册了断字符的语言的列表,请使用以下 Transact-SQL 语句:

SELECT * FROM sys.fulltext_languages

如果您添加、删除或更改了断字符,则需要刷新为全文索引和查询而支持的 Microsoft Windows 区域设置标识符 (LCID) 列表。 有关详细信息,请参阅 查看或更改注册的筛选器和断字符

设置默认全文语言选项

对于SQL Server的本地化版本,SQL Server安装程序会将 选项设置为default full-text language服务器的语言(如果存在适当的匹配项)。 对于非本地化版本的 SQL Server,选项default full-text language为英语。

创建或修改全文索引时,可以为每个全文索引列指定不同的语言。 如果未指定列的语言,默认值是配置选项 default full-text language 的值。

注意

在单个全文查询函数子句中列出的所有列必须使用同一语言,除非在查询中指定了 LANGUAGE 选项。 所查询的用于全文索引列的语言确定了对全文查询谓词(CONTAINSFREETEXT)以及函数(CONTAINSTABLEFREETEXTTABLE)的参数执行的语言分析。

为索引列选择语言

创建全文索引时,建议为每个索引列都指定一种语言。 如果未为列指定语言,则将使用系统默认语言。 某列的语言确定使用什么断字符和词干分析器对该列创建索引。 另外,该语言的同义词库文件将由针对相应列的全文查询使用。

如果要选择用于创建全文索引的列语言,有几个事项需要注意。 这些注意事项均与全文引擎如何对文本进行词汇切分再编制其索引有关。 有关详细信息,请参阅 创建全文索引时选择语言

查看列的断字符语言

获取有关断字符的信息

查看断字符、同义词库和非索引字表组合的词汇切分结果

返回有关已注册断字符的信息

排除断字超时错误

在许多情况下可能会出现断字超时错误。 有关这些情况及如何针对每种情况做出反应的信息,请参阅 MSSQLSERVER_30053

理解新断字符的影响

每个版本的SQL Server通常包括具有更好语言规则且比早期断字符更准确的新断字符。 新断字符的行为可能与从以前版本的 SQL Server 导入的全文索引中的断字符略有不同。 如果在数据库升级到当前版本的 SQL Server 时导入了全文目录,则这一点非常重要。 该全文目录中全文索引使用的一种或多种语言现在可能与新断字符关联。 有关详细信息,请参阅 全文搜索升级

有关所有断字符的完整列表,请参阅 sys.fulltext_languages (Transact-SQL)

另请参阅

ALTER FULLTEXT INDEX (Transact-SQL)
CREATE FULLTEXT INDEX (Transact-SQL)
sp_fulltext_service (Transact-SQL)
sys.fulltext_languages (Transact-SQL)
为全文搜索配置和管理非索引字和非索引字表
升级全文搜索