Margaret Li(程序经理,数据访问组)和 Frank Pellow(程序经理,SQL Server 关系
摘要
Microsoft SQL Server 7.0 版引入了各种功能,支持对驻留在 SQL Server 本身中的数
本白皮书介绍这些功能中的第一个功能,即支持对 SQL Server 表内的数据进行文本查询
。我们从介绍全文检索的概念开始,讲述全文检索查询将采取的形式和通过这样的查询所能检
索信息的类型。然后向读者提供有关全文检索系统的内部设计和体系结构的相当清楚的技术表
述,接着介绍如何通过存储过程和/或 SQL Server Enterprise Manager 所提供的图形用户界
阅读本白皮书可以对 SQL Server 7.0 全文支持的功能有一个总的认识,并能很好地把握
各种子组件如何交互作用以便提供这种支持。
有关对文件系统中的数据进行文本查询的支持是另一本书的主题。
引言
当今,以数字形式储存的信息的很大一部分仍然采取非结构化数据的形式(主要是文本)
。虽然大部分文本数据储存在文件系统中,但一些公司已经开始通过将数据储存在关系数据库
中,以基于字符的列(如 VARCHAR 和 TEXT)来管理这些数据。这就意味着关系数据库用户现
在需要一个能从数据库本身有效检索文本数据的机制。传统的 RDBMS(如 Microsoft SQL
Server 6.5)不是为进行有效的全文检索而设计的。例如,虽然 SQL Server 6.5 有一些基于
模式匹配来检索文本的功能,但它不能处理相互接近单词和短语的搜索。
文本查询有两种主要类型:
属性搜索:对文档应用筛选以便提取如作者、主题、类型、字数、打印的页数之类的属性
全文检索:创建文档的所有非干扰词的索引,然后使用这些索引来支持语言搜索和近似搜
由于不能将文本查询功能与关系数据库集成,许多用户不得不使用第三方产品来满足这些
需要。这些解决方案通常包括通过网桥或网关将数据从数据库中提出,然后将其作为文件存储
在文件系统中以便能够应用全文索引。这并不能向用户提供将全文查询与常规的结构关系查询
一些关系数据库产品目前向用户提供一种功能,允许用户将关系检索条件和全文检索条件
无缝集成到相同查询中。我们将介绍如何来指定这类查询。假定一组纯文本文档的内容驻留在
名为“doc_collection”的表的 DocText 列中,并且表还包含 StorName、Size 和
SELECT Q.StorName, Q.Size, Q.DocAuthor, W.Citizenship
FROM doc_collection as Q,
writers as W
WHERE CONTAINS(DocText, @# "SQL Server" NEAR() text@#)
AND Q.DocAuthor = W.writer_name
以便获取:
所有文档的名称、大小和作者
条件是文档中包含与“text”接近的短语“SQL Server”
并与“writers”表联接以获取作者的国籍。