对全文搜索的重大更改
本主题介绍全文搜索的重大更改。 这些更改可能导致基于 SQL Server的早期版本的应用程序、脚本或功能无法继续使用。 在进行升级时可能会遇到这些问题。 有关详细信息,请参阅 Use Upgrade Advisor to Prepare for Upgrades。
2014 SQL Server 中Full-Text搜索的重大更改
将很快提供相关信息。
2012 SQL Server 中Full-Text搜索的重大更改
sys.fulltext_languages 中名称列的排序规则已更改
目录视图中语言名称列sys.fulltext_languages (Transact-SQL) 的排序规则已从 Resource 数据库的固定排序规则更改为为 SQL Server 实例选择的默认排序规则。 通过此更改,可以在将 sys.syslanguages (Transact-SQL) 视图中的值与 sys.fulltext_languages 相比较。 例如,您可以查询默认全文语言不同于默认数据库语言的所有数据库。
SQL Server 2008 中全文搜索的重大更改
以下重大更改适用于 SQL Server 2005 和 SQL Server 2008 及更高版本之间的Full-Text搜索。
功能 | 方案 | SQL Server 2005 | SQL Server 2008 及更高版本 |
---|---|---|---|
包含用户定义的类型的 CONTAINSTABLE (UDT) | 全文键是用户定义的SQL Server类型,例如 MyType = char(1) 。 |
返回键的类型是为用户定义类型指定的类型。 在本示例中,这将是 char (1) 。 |
返回键的类型是用户定义类型。 在本示例中,这将是 MyType。 |
CONTAINSTABLE 和 FREETEXTTABLETransact-SQL 语句的top_n_by_rank参数 () | top_n_by_rank 使用 0 作为参数的查询。 | 失败并显示一个错误消息,说明您必须使用一个大于零的值。 | 成功,返回零行。 |
CONTAINSTABLE 和 ItemCount | 在它将更改推入 MSSearch 之前从基表中删除行。 | CONTAINSTABLE 返回虚影记录。 ItemCount 未更改。 | CONTAINSTABLE 不返回任何虚影记录。 |
ItemCount | 表包含 Null 文档或类型列。 | 除索引文档外,为 null 或具有 null 类型的文档将计入 ItemCount 值。 | ItemCount 值中仅计入索引文档。 |
Catalog ItemCount | 扩展名为 NULL 的 Blob 列。 | 它在目录的 ItemCount 中计数 | 它不计入目录的 ItemCount 。 |
UniqueKeyCount | 从目录查询唯一键计数,例如,有两个表(table1 和 table2),每个表都包含三个单词:word1、word2 和 word3。 | UniqueKeyCount = 9。 下表总结了如何得出此值: table1 = 3 table1 全文索引的 EOF = 1 table2 = 3 Table2 全文索引的 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 | 使用此目录视图的 path、data_space_id 和 file_id。 | 这些列都返回一个特定值。 | 由于全文目录已不再位于文件系统中,因而这些列均返回 NULL。 |
sys.sysfulltextcatalogs | 使用此不推荐使用的系统表的 path 列。 | 返回全文目录的文件系统路径。 | 由于全文目录已不再位于文件系统中,因而返回 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 设置指示是否在给定数据库中启用全文搜索。 | 此列的值没有任何效果。 用户数据库始终启用全文搜索。 |