本主题详细介绍全文搜索中的重大变更。 这些更改可能导致基于 SQL Server的早期版本的应用程序、脚本或功能无法继续使用。 在进行升级时可能会遇到这些问题。 有关详细信息,请参阅 使用升级顾问准备升级。
SQL Server 2014 中 Full-Text 搜索的重大更改
信息将在稍后提供。
SQL Server 2012 中 Full-Text 搜索的重大更改
sys.fulltext_languages中名称列的排序规则已更改
目录视图中语言 名称 列 sys.fulltext_languages(Transact-SQL) 中的排序规则已从资源数据库的固定排序规则更改为为 SQL Server 实例选择的默认排序规则。 此更改使你能够将 sys.syslanguages (Transact-SQL) 视图与 sys.fulltext_languages 联接时,比较名称列中的值。 例如,可以查询默认全文语言不同于默认数据库语言的所有数据库。
SQL Server 2008 中 Full-Text 搜索的重大变更
以下重大更改适用于 SQL Server 2005 和 SQL Server 2008 及更高版本之间的 Full-Text 搜索。
| 功能 / 特点 | 情景 | SQL Server 2005 | SQL Server 2008 及更高版本 |
|---|---|---|---|
| 包含用户定义的类型的 CONTAINSTABLE (UDT) | 全文键是 SQL Server 用户定义的类型,例如 MyType = char(1)。 |
返回的键属于用户定义的类型。 在此示例中,这将是 char(1)。 |
返回的键是用户定义的类型。 在此示例中,这将是 MyType。 |
| top_n_by_rank 参数(CONTAINSTABLE 和 FREETEXTTABLETransact-SQL 语句) | 使用0作为参数的top_n_by_rank查询。 | 失败并显示一条错误消息,指出必须使用大于零的值。 | 成功,返回零行。 |
| CONTAINSTABLE 和 ItemCount | 在将更改推送到 MSSearch 之前,请从基表中删除行。 | CONTAINSTABLE 返回幽灵记录。 ItemCount 未更改。 | CONTAINSTABLE 不返回任何虚影记录。 |
| ItemCount | 表包含空文档或类型列。 | 除了索引文档之外,在 ItemCount 值中对 null 或具有 null 类型的文档进行计数。 | 仅索引文档会计入ItemCount值中。 |
| 目录 ItemCount | 具有 NULL 扩展的 Blob 列。 | 它被计入目录的ItemCount中 | 它不会在 目录的 ItemCount 中计数。 |
| UniqueKeyCount | 从目录查询唯一键计数,例如,两个表(table1 和 table2)分别包含三个单词:word1、word2 和 word3。 |
UniqueKeyCount = 9。 下表总结了如何实现此值: table1 = 3 表1的全文索引的EOF=1 table2 = 3 表 2 的全文索引的 EOF = 1 全文索引 = 1 |
对于每个表,UniqueKeyCount 是唯一关键字数 + 1(0xFF)。 这不会将 > 1 文档中的单词视为新的唯一键。 对于目录,UniqueKeyCount 是目录下每个表的 UniqueKeyCount 的总和。 不同表中的相同单词被视为唯一键。 在这种情况下,唯一键计数为 8。 |
| 预计算排名 服务器级别选项 | FREETEXTTABLE 查询的性能优化。 | 如果选项设置为 1,则通过 top_n_by_rank 指定的 FREETEXTTABLE 查询使用存储在全文目录中的预计算排名数据。 | 不被支持。 |
| 更新键列时调用sp_fulltext_pendingchanges | 更新由两行构成的表格中的一行的全文键列,并运行 sp_fulltext_pendingchanges。 | 这两行都会出现。 | 仅显示一行。 |
| 内联函数 | 具有全文运算符的内联函数 | 返回错误消息。 | 返回相关行。 |
| sp_fulltext_database | 使用sp_fulltext_database启用或禁用全文搜索。 | 全文查询不返回任何结果。 如果为数据库禁用全文,则无法执行全文操作。 | 返回全文查询的结果,允许进行全文操作,即使数据库已禁用全文检索功能。 |
| 特定于区域设置的停用词 | 在父语言的本地特定变体中进行查询,例如比利时法语和加拿大法语。 | 在查询中,本地化变体由其父语言组件(分词器、词干分析器和停用词)进行处理。 例如,法国(法国)组件用于解析比利时法语。 | 必须为每个区域设置标识符(LCID)显式添加停用词。 例如,需要为比利时、加拿大和法国指定 LCID。 |
| 同义词库词干处理过程 | 使用同义词库和词形变化(词干提取)。 | 同义词在扩展后会自动进行词干提取。 | 如果想在扩展中包含词干形式,就需要明确添加该词干形式。 |
| 全文目录路径和文件组 | 使用全文目录。 | 每个全文目录都有一个物理路径,属于文件组。 它被视为数据库文件。 | 全文目录是虚拟对象,不属于任何文件组。 全文目录是引用一组全文索引的逻辑概念。 注意:指定全文目录的 SQL Server 2005Transact-SQL DDL 语句正常工作。 |
| sys.fulltext_catalogs | 使用此目录视图的路径、data_space_id和file_id。 | 这些列返回特定值。 | 这些列返回 NULL,因为全文目录不再位于文件系统中。 |
| sys.sysfulltextcatalogs | 使用此已弃用的系统表的路径列。 | 返回全文目录的文件系统路径。 | 返回 NULL,因为全文目录不再位于文件系统中。 |
|
sp_help_fulltext_catalogs sp_help_fulltext_catalogs_cursor |
使用这些已弃用存储过程的 PATH 列。 | 返回全文目录的文件系统路径。 | 返回 NULL,因为全文目录不再位于文件系统中。 |
| sp_help_fulltext_catalog_components | 使用此存储过程sp_help_fulltext_catalog_components。 | 返回用于当前数据库中所有全文目录的所有组件(筛选器、断字符和协议处理程序)的列表。 | 返回空行。 |
| DATABASEPROPERTYEX | 使用 IsFullTextEnabled 属性。 | IsFullTextEnabled 设置指示是否在给定数据库中启用全文搜索。 | 此列的值不起作用。 用户数据库始终启用全文搜索。 |