对全文搜索的行为更改
本主题介绍全文搜索中的行为更改。 与早期版本的 SQL Server 相比,SQL Server 2012 中的功能的工作或交互方式会受到行为更改的影响。
SQL Server 2012 中全文搜索的行为更改
SQL Server 2012 为美国英语 (LCID 1033) 和英国英语 (LCID 2057) 安装了新版本的断字符和词干分析器。 但是,如果您想要保留这些组件的以前行为,您可以切换到其早期版本。 有关详细信息,请参阅更改用于美国英语和英国英语的断字符。
安装了新的断字符和词干分析器
SQL Server 2012 更新全文搜索和语义搜索所使用的所有断字符和词干分析器。 为了保持索引内容和查询结果之间的一致性,建议您重新填充现有全文索引。
英语已有了新的断字符。 如果您必须保留先前行为,请参阅更改用于美国英语和英国英语的断字符。
SQL Server 的先前版本附带的丹麦语、波兰语和土耳其语的第三方断字符已替换为 Microsoft 组件。 默认情况下启用这些新组件。
捷克语和希腊语已有了新的断字符。 先前版本的 SQL Server 全文搜索不包括对这两种语言的支持。
新断字符和词干分析器的行为更改
在填充和查询全文索引时,新组件可能返回不同于旧组件的结果。 下表说明在英语结果中一些可以预计的差异。
如果您必须保持断字符和词干分析器的以前的行为,请参阅以下主题:
在某些情况下,新组件返回更多结果:
字词 |
先前断字符和词干分析器的结果 |
新断字符和词干分析器的结果 |
---|---|---|
cat-dog |
cat dog |
cat cat-dog dog |
cat@dog.com |
cat com dog |
cat cat@dog.com com dog |
12/11/2011 (其中此字词表示日期) |
12/11/2011 dd20111211 |
11 12 12/11/2011 2011 dd20111211 |
在某些情况下,新组件返回类似结果:
字词 |
先前断字符和词干分析器的结果 |
新断字符和词干分析器的结果 |
---|---|---|
100$ |
100$ nn100$ |
100$ nn100usd |
022 |
022 nn022 |
022 nn22 |
10:49AM (其中此字词表示时间) |
10:49am tt1049 |
10:49am tt24104900 |
在某些情况下,新组件返回较少结果或返回应用程序可能无法预期的结果:
字词 |
先前断字符和词干分析器的结果 |
新断字符和词干分析器的结果 |
---|---|---|
jěˊÿqℭžl (其中字词为无效英文字符) |
‘jěˊÿqℭžl’ |
je yq zl |
table's |
table’s table |
table’s |
cat- |
cat cat- |
cat |
v z(其中,v 和 z 为干扰词) |
(无结果) |
v-z |
$100 000 USD |
$100 000 nn000 nn100$ USD |
$100 000 usd nn100000usd |
beautiful U.S land |
beautiful land u.s us |
beautiful land |
Mt. Kent and Mt Challenger |
challenger kent mt mt. |
mt kent challenger |
SQL Server 2008 中全文搜索的行为更改
在 SQL Server 2008 和更高版本中,全文引擎作为数据库服务集成到关系数据库中,作为服务器查询和存储引擎基础结构的一部分。 新的全文搜索体系结构可实现以下目的:
集成的存储和管理 - 全文搜索现在与 SQL Server 的固有存储和管理功能直接集成,并且 MSFTESQL 服务已不存在。
全文索引存储在数据库文件组内部,而不是在文件系统中。 对数据库执行管理操作(如创建备份)会自动影响其全文索引。
现在,全文目录是虚拟对象,并不属于任何文件组;它是表示一组全文索引的逻辑概念。 因此,许多目录管理功能已不推荐使用,继而也就引发了某些功能的重大更改。 有关详细信息,请参阅 SQL Server 2012 中不推荐使用的数据库引擎功能和对全文搜索的重大更改。
注意 指定全文目录的 SQL Server 2005 Transact-SQL DDL 语句可正常运行。
集成的查询处理 - 新的全文搜索查询处理器是数据库引擎的一部分,并与 SQL Server 查询处理器完全集成。 这表示查询优化器将识别全文查询谓词,并尽可能高效地自动执行它们。
增强的管理和故障排除 - 集成的全文搜索提供的工具可以帮助您分析搜索结构,例如全文索引、给定断字符的输出和非索引字配置等。
非索引字和非索引字表已替代干扰词和干扰词文件。 非索引字表是一种数据库对象,有助于简化非索引字的可管理性任务,并提高不同服务器实例和环境之间的完整性的一个数据库对象。 有关详细信息,请参阅为全文搜索配置和管理非索引字和非索引字表。
SQL Server 2008 和更高版本包括 SQL Server 2005 中存在的许多语言的新断字符。 只有英语、朝鲜语、泰语和中文(所有形式)的断字符保持不变。 对于其他语言,如果全文目录是在将 SQL Server 2005 数据库升级到 SQL Server 2008 或更高版本时导入的,则该全文目录中全文索引使用的一种或多种语言现在可能与新断字符关联,这些新断字符的行为与导入的断字符的行为稍有不同。 有关如何确保查询和全文索引内容之间的一致性的详细信息,请参阅从 SQL Server 2005 升级全文搜索。
已添加一个新的 FDHOST 启动器 (MSSQLFDLauncher) 服务。 有关详细信息,请参阅全文搜索入门。
全文索引功能处理 FILESTREAM 列的方式与其处理 varbinary(max) 列的方式相同。 FILESTREAM 表必须有一列包含每个 FILESTREAM BLOB 的文件扩展名。 有关详细信息,请参阅 使用全文搜索查询、配置和管理搜索筛选器和 sys.fulltext_document_types (Transact-SQL)。
全文引擎会对 FILESTREAM BLOB 的内容进行索引。 对诸如图像之类的文件进行索引可能没有用。 更新 FILESTREAM BLOB 时,会重新对其进行索引。