查询 varbinary(max) 和 xml 列(全文搜索)

如果 varbinary(max)、varbinary 或 xml 列是全文索引列,则与任何其他全文索引列一样,可以使用全文谓词(CONTAINS 和 FREETEXT)以及函数(CONTAINSTABLE 和 FREETEXTTABLE)来查询该列。

重要说明重要提示

全文搜索还可以用于图像列。然而,在 SQL Server 将来的版本中将删除 image 数据类型。请避免在新的开发工作中使用此数据类型,并计划修改当前使用此数据类型的应用程序。请改为使用 varbinary(max) 数据类型。

varbinary(max) 或 varbinary 数据

单个 varbinary(max) 或 varbinary 列可以存储多种类型的文档。SQL Server 2008 支持安装了相应筛选器并且在操作系统中可用的任何文档类型。每个文档的文档类型由该文档的文件扩展名标识。例如,对于 .doc 文件扩展名,全文搜索将使用支持 Microsoft Word 文档的筛选器。有关可用文档类型的列表,请查询 sys.fulltext_document_types 目录视图。

请注意,全文引擎可以利用操作系统中安装的现有筛选器。在您可以使用操作系统筛选器、断字符和词干分析器之前,您必须将它们加载到服务器实例中,如下所示:

EXEC sp_fulltext_service @action='load_os_resources', @value=1;

若要对 varbinary(max) 列创建全文索引,全文引擎需要访问 varbinary(max) 列中文档的文件扩展名。此信息必须存储在一个称为“类型列”的表列中,该列必须与全文索引中的 varbinary(max) 列相关联。在为文档创建索引时,全文引擎将使用类型列中的文件扩展名来标识要使用的筛选器。

xml 数据

xml 数据类型列仅存储 XML 文档和片段,并且只有 XML 筛选器用于此类文档。因此,无需类型列。在 xml 列上,全文索引会为 XML 元素的内容创建索引,但会忽略 XML 标记。不为数值的属性值都会进行全文索引。元素标记用作标记边界。支持包含多种语言的格式正确的 XML 或 HTML 文档和片段。

有关对 xml 列进行查询的详细信息,请参阅 XML 列的全文索引