配置和管理用于搜索的分词器和词干提取器

分词器和词干分析器对所有全文索引数据执行语言分析。 语言分析涉及查找单词边界(断字)和串联谓词(词干)。 分词器和词干提取器是特定于语言的,不同语言的语言分析规则各不相同。 对于给定语言, 断字符 通过根据语言的词法规则确定单词边界是否存在来标识各个单词。 每个单词(也称为 令牌)都插入到全文索引中,使用压缩表示形式来减小其大小。 词干分析器根据该语言的规则生成特定单词的词形变化(例如,“running”、“ran”和“runner”是单词“run”的各种形式)。

使用特定于语言的断字符可使生成的字词更准确。 如果语言系列有断字符,但不适用于特定子语言,则使用主要语言。 例如,法语断字符用于处理加拿大法语文本。 如果没有可用于特定语言的断字符,则使用中性断字符。 使用中性断字符时,单词在非特定字符(如空格和标点符号)处中断。

注册分词器

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

SELECT * FROM sys.fulltext_languages

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

设置默认 Full-Text 语言选项

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

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

注释

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

选择索引列的语言

创建全文索引时,建议为每个索引列指定一种语言。 如果未为列指定语言,则使用系统默认语言。 列的语言决定该列索引时使用的分词器和词干分析器。 此外,该语言的同义词库文件将在列的全文查询中使用。

选择用于创建全文索引的列语言时,需要考虑一些事项。 这些注意事项与文本的标记化方式以及 Full-Text 引擎编制索引的方式相关。 有关详细信息,请参阅 创建 Full-Text 索引时选择语言

查看列的分词语言

获取有关分词器的信息

查看分词器、同义词库和停用词表组合的标记化结果

返回有关已注册分词器的信息

排查 Word-Breaking 超时错误

在各种情况下,可能会出现断字超时错误。 有关这些情况以及如何在每个情况下做出响应的信息,请参阅 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)
为 Full-Text 搜索配置和管理停用词和停用词列表
升级 Full-Text 搜索