第八步,如果以后对表Papers进行任何的修改(包括添加、删除记录和对原记录进行编辑),都要重复第六步的操作。这一步是为了保证全文索引库能够与表Papers的修改同步。
以上是建立全文索引的全过程。完成建立后,即可以使用标准的T—SQL语句对其进行全文检索。
'P>
2.2 在WEB平台上进行全文检索'P>
虽然使用T—SQL语句可以很方便地进行全文检索,但笔者考虑到不是所有的用户都掌握了T—SQL语句,因此为方便用户检索,笔者建立了一个基于WEB界面的全文检索平台。用户只需将检索词提交给WEB服务器,服务器使用ASP调用ADO控件来对SQL SERVER2000数据库进行查询,并将检索结果以WEB页面的方式返回给用户。
ASP(ACTIVE SERVER PAGES)是微软公司建立的一套服务器端脚本环境。设计人员可以结合HTML、ASP指令和ACTIVEX控件建立动态、交互且高效的WEB服务器应用程序。由于所有的程序都嵌入HTML中且在服务器端执行,因此不必担心客户端的浏览器能否运行程序。同时,它还具有简单、易开发、兼容性好等优点。ADO(ACTIVEX DATA OBJECT,ACTIVEX数据对象)是一个ASP内置的ACTIVEX服务器组件(ACTIVEX SERVER COMPONENT),用于数据库访问,可把它与ASP结合起来,建立提供数据库信息的网页内容,对数据库进行查询、插入、更新、删除等操作。ADO对象可以操作所有ODBC驱动程序存取的数据源格式。同时,ADO还具有简单易用、速度快等优点。
SQL SERVER 2000的全文检索服务可以支持布尔检索和加权检索等高级检索。用ASP可以实现这些检索功能。
3 全文检索语句CONTAINS和FREETEXT的使用
全文检索使用户可以高效检索存储在数据库的CHAR、VARCHAR、TEXT、NTEXT、NCHAR、NVARCHAR等数据类型列中的文本数据。在进行全文检索之前,应建立和填充数据库全文索引。
3.1 全文索引
为了支持全文索引操作,SQL SERVER 7.0新增了一些新的存储过程和TRANSACT-SQL语句。使用这些存储过程创建全文索引的具体步骤如下(括号内为每步所调用的存储过程名称):
(1)启动数据库的全文处理功能(SP_FULLTEXLDATABASE);
(2)建立全文目录(SP_FULHEXLCATALOG);
(3)在全文目录中注册需要全文索引的表(SP_FULLTEXT TABLE);
(4)指出表中需要全文检索的列名(SP_FULL—TEXLEOLUMN);
(5)为表创建全文索引(SP_FULLTEXLTABLE);
(6)填充全文目录(SP_FULLTEXT_CATALOG)。
下面举例说明:
在本例中,对TEST数据库BOOK表中TITLE列和NOTES列建立全文索引。
//首先先启动SQL SERVER的全文搜索服务。
USE TEST //打开数据库
GO
//打开全文索引支持
EXECUTE SP_FULLTEXT_DATABASE ‘ENABLE’
//建立全文目录FT_PUBS
EXECUTE SP_FULLTEXT_CATALOG ‘FT_TEST’,‘CREATE’
//为TITLES表建立全文索引数据元,PK_TITLE为BOOK表中由主键所建立的唯一索引,此参数必须。
EXECUTE SP_FULLTEXT_TABLE ‘BOOK’,‘CREATE’,‘FT_TEST’,‘PK_TITLE’
//设置全文索引列名
EXECUTE SP_FULLTEXT_EOLUMN ‘BOOK’,‘TITLE’,‘ ADD’
EXECUTE SP_FULLTEXT_ COLUMN ‘BOOK’,‘NOTES’,‘ADD’
//建立全文索引
EXECUTE SP_FULLTEXLTABLE ‘BOOK’,‘ACTIVATE’
//填充全文索引目录
EXECUTE SP_FULLTEXT_ CATALOG ‘FT_TEST’,‘START_ FULL’
GO
至此,全文索引建立完毕。
3.2 全文检索
SQL SERVER 2000提供的全文检索语句主要有CONTAINS和FREETEXT。CONTAINS语句的功能是在表所有列或指定列中搜索:
●一个字或短语;
●一个字或短语的前缀;
●与一个字相近的另一个字;
●一个字的派生字;
●一个重复出现的字。
CONTAINS语句的语法格式为:
CONTAINS({COLUMN *}),‘’) 其中,COLUMN说明被搜索列,使用时说明对表中所有全文索引列莲行搜索
