全文搜索的行为更改
本主题介绍全文搜索中的行为更改。 与早期版本的 SQL Server 相比,行为更改会影响 SQL Server 2014 中功能的工作方式或交互方式。
将很快提供相关信息。
SQL Server 2012 为美国英语 (LCID 1033) 和英国英语 (LCID 2057) 安装新版本的断字符和词干分析器。 但是,如果您想要保留这些组件的以前行为,您可以切换到其早期版本。 有关详细信息,请参阅 更改用于美国英语和英国英语的断字符。
SQL Server 2012 更新Full-Text搜索和语义搜索使用的所有断字符和词干分析器。 为了保持索引内容和查询结果之间的一致性,建议您重新填充现有全文索引。
英语已有了新的断字符。 如果您必须保留先前行为,请参阅 Change the Word Breaker Used for US English and UK English。
以前版本的 SQL Server 中包含的丹麦语、波兰语和土耳其语的第三方断字符已替换为 Microsoft 组件。 默认情况下启用这些新组件。
捷克语和希腊语已有了新的断字符。 以前版本的 SQL Server Full-Text 搜索不包括对这两种语言的支持。
在填充和查询全文索引时,新组件可能返回不同于旧组件的结果。 下表说明在英语结果中一些可以预计的差异。
如果您必须保持断字符和词干分析器的以前的行为,请参阅以下主题:
在某些情况下,新组件返回 更多 结果:
条款 | 先前断字符和词干分析器的结果 | 新断字符和词干分析器的结果 |
---|---|---|
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оˊÿqCžl (其中字词为无效英文字符) |
'jоˊÿqCžl' | je yq zl |
table's | table's 表 |
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 及更高版本中,Full-Text引擎作为数据库服务集成到关系数据库中,作为服务器查询和存储引擎基础结构的一部分。 新的全文搜索体系结构可实现以下目的:
集成存储和管理 - 全文搜索现在直接与SQL Server的固有存储和管理功能集成,MSFTESQL 服务不再存在。
全文索引存储在数据库文件组内部,而不是在文件系统中。 对数据库执行管理操作(如创建备份)会自动影响其全文索引。
现在,全文目录是虚拟对象,并不属于任何文件组;它是表示一组全文索引的逻辑概念。 因此,许多目录管理功能已不推荐使用,继而也就引发了某些功能的重大更改。 有关详细信息,请参阅 SQL Server 2014 中弃用的数据库引擎功能和对Full-Text搜索的重大更改。
备注
SQL Server指定全文目录的 2005 Transact-SQL DDL 语句正常工作。
集成查询处理 - 新的全文搜索查询处理器是数据库引擎的一部分,与SQL Server查询处理器完全集成。 这表示查询优化器将识别全文查询谓词,并尽可能高效地自动执行它们。
增强的管理和故障排除 - 集成的全文搜索提供的工具可帮助你分析搜索结构,例如全文索引、给定断字符的输出、非索引字配置等。
非索引字和非索引字表已替代干扰词和干扰词文件。 非索引字表是一种数据库对象,有助于简化非索引字的可管理性任务,并提高不同服务器实例和环境之间的完整性的一个数据库对象。 有关详细信息,请参阅 为全文搜索配置和管理非索引字和非索引字表。
SQL Server 2008 及更高版本包括SQL Server 2005 中存在的许多语言的新断字符。 只有英语、朝鲜语、泰语和中文(所有形式)的断字符保持不变。 对于其他语言,如果在将 SQL Server 2005 数据库升级到 SQL Server 2008 或更高版本时导入了全文目录,则全文目录中全文索引使用的一个或多个语言现在可能与与导入的断字符的行为略有不同的新断字符相关联。 有关如何确保查询与全文索引内容之间的一致性的详细信息,请参阅 升级Full-Text搜索。
已添加一个新的 FDHOST 启动器 (MSSQLFDLauncher) 服务。 有关详细信息,请参阅 Full-Text搜索入门。
全文索引处理 FILESTREAM 列的方式与处理
varbinary(max)
列的方式相同。 FILESTREAM 表必须有一列包含每个 FILESTREAM BLOB 的文件扩展名。 有关详细信息,请参阅 使用 Full-Text 搜索进行查询、配置和管理搜索筛选器以及 sys.fulltext_document_types (Transact-SQL) 。全文引擎会对 FILESTREAM BLOB 的内容进行索引。 对诸如图像之类的文件进行索引可能没有用。 更新 FILESTREAM BLOB 时,会重新对其进行索引。