SQL Server 2000 程序设计学习笔记--第十二章 创建全文索引

12.1创建全文检索

SQL Server2000所提供的全文检索包含了两个功能,一是查询字符数据的功能,另一个则是创建和维护基本索引的功能
开始创建全文检索功能之前,必须要先激活Microsoft Search的服务
为什么要激活Microsoft Search服务呢?这是因为全文检索功能必须要使用到这项服务才可以具有全文检索的功能

激活Microsoft Search服务功能
确认Microsoft Search服务已经激活?在win2000中在[管理工具]--[服务]--Micorosoft Search选项
通过DOS模式激活
net start mssearch

检查是否已激活全文检索
T-SQL语句DatabaseProperty
假如在pubs数据库中要执行全文检索功能却无法执行时,您可以下达如下所示的T-SQL语句:
SELECT DatabaseProperty ('pubs','IsFulltextEnabled')
返回值如果是1,则表示已经激活全文检索功能,如果是0则表示尚未激活全文检索功能

12.2创建全文检索及全文目录--使用T-SQL语句

在SQL-Server中,可以创建全文检索的数据库对象有:数据库,表格以及列,因为您可以分别针对数据库,表格以及列等3种数据库对象来创建全文检索功能

创建,激活,删除数据库的全文检索功能

激活全文检索以及创建全文目录功能的系统存储工程sp_fulltext_database及sp_fulltext_catalog
sp_fulltext_database用在假如数据库都没有激活全文检索功能时,您可以使用此系统存储过程来激活全文检索功能而sp_fulltext_catalog系统存储过程则是用来创建全文目录功能的

使用sp_fulltext_database系统存储过程
sp_fulltext_database系统存储过程可以用来激活全文检索或自目前所在的数据库内删除所有全文检索功能
语法:
sp_fulltext_database [@action=] 'action'
[@action=]'action'用来指定系统存储过程要执行的操作。sp_fulltext_database系统存储过程可以执行的操作有enable及disable两种
返回值为1是表示激活失败,0表示激活成功
范例
--激活pubs数据库的全文检索功能
use pubs
exec sp_fulltext_database 'enable'
go
--删除pubs数据库的全文检索功能
use pubs
exec sp_fulltext_database 'disable'
go

创建 删除全文目录

sp_fulltext_catalog系统存储过程可以创建,删除全文目录以及激活和停止数据库目录的索引操作的功能
语法
sp_fulltext_catalog [@ftcat=] 'fulltext_catalog_name',[@action=]'action'[,[@path=]'root_directory]
返回值1表示创建全文目录的功能失败,0表示创建全文目录的功能成功

创建 删除表格的全文检索功能

sp_fulltext_table系统存储过程可以用自目前所在的数据库内将其表格激活,删除所有全文检索的功能

语法
sp_fulltext_table [@tabname=]'qualified_table_name',[@action=] 'action' [,[@ftcat=]'fulltext_catalog_name'],[@keyname=] 'unique_index_name']

[@tabname=]'qualified_table_name'要创建全文检索功能的表格名称,并且此表格必须在数据库中已经存在时才可以指定

返回值为1是表示所指定的表格全文检索功能失败,0时表示创建您所指定的表格的全文检索功能成功

范例
--激活pubs数据库的全文检索功能
use pubs
exec sp_fulltext_database 'enable'
go
--创建表格sales的全文检索功能,并将全文检索名称设置为fulltext_doc
exec sp_fulltext_table 'sales','create','fulltext_doc'
go

创建 删除列的全文检索功能

sp_fulltext_column系统存储过程可以用自目前所在的表格内将其列激活,删除所有全文检索的功能
返回值1时表示创建检索失败,返回0时,表示创建全文检索功能成功

12.3 创建全文目录--使用企业管理器

在数据库中只能存在一个包含有全文索引的全文目录,而此目录内的每一个目录都可以满足数据库中一个或多个表格索引的请求。
全文目录必须位于与SQL Server实例相关联的本地硬盘中,而抽取式磁盘驱动器,软盘及网络磁盘驱动器并未支持此项功能
他在每一台服务器中,最多只可以创建256个全文目录

当您将全文目录创建完毕后,再将数据加入全文索引的操作就称为扩展。

方法:右键数据库--新建--新建全文目录

12.4 创建全文索引--使用全文索引向导来创建
选中数据库--菜单工具--全文索引--重新填充所有目录
或者直接选中单个表右键--全文索引表--在表上定义全文索引--重新填充所有目录(此方法可能无效)

12.5 使用全文检索来搜索数据
SQL Server提供了两个关键词(CONTAINS及FREETEXT)以及二个函数(CONTAINSTABLE及FREETEXTTABLE)等四种方式来让您进行搜索数据的操作
FREETEXT关键词进行全文检索查询的结果比使用CONTAINS关键词进行搜索的结果较为不精确,如果想查询出较精确的结果时,您可以使用CONTAINS关键词进行搜索

使用CONTAINS来进行数据搜索

范例
找出在payterms列中,其内容包含有"ON invoice"文字的行
use pubs
go
select * from sales where qty=20 and CONTAINS(payterms,'ON invoice')
go

范例
找出在authors表内其au_lname列中包含有B开头文字的行
select * from authors where CONTAINS(au_lname,' "B*" ')
go

范例
找出在authors表格中,其au_lname列中包含is单字所衍生出来的单字
select * from authors where CONTAINS(au_lname,' FORMSOF(INFLECTIONAL,is) ')
go

范例
想要在au_lname列中找出以B1为开头,以Halls为结尾的行
select * from authors where CONTAINS(au_lname,' "B1" NEAR "Halls" ')
go

使用FREETEXT来进行数据搜索

FREETEXT关键词搜索时,他会将您所指定的搜索条件文字拆成独立的单字来进行搜索

语法:FREETEXT ({column|*},'freetext_string')

范例
select * from authors where FREETEXT(au_lname,'Halls Bennet')
go

使用CONTAINSTABLE函数来进行数据搜索
CONTAINSTABLE函数会返回符合条件记录的笔数,CONTAINSTABLE函数会创建一个只包含KEY及RANK两个字段的表格。

范例
由CONTAINSTABLE函数创建mytable1,并列出au_id字段值与RANK值相同的列
select au_lname,au_lname,mytable1.[key],mytable1.rank from authors inner join CONTAINSTABLE(authors,au_lname,' "Ben" NEAR "Halls"') as mytable1 ON au_id=mytable1.[key]
go

使用FREETEXTTABLE函数来进行数据搜索
FREETEXTTABLE函数与CONTAINSTABLE函数一样,都会返回KEY和RANK字段,其语法的使用方式与FREETEXT相似
语法
FREETEXTTABLE(table,{column|*},'freetext_string' [ ,top_n_by_rank])

范例
select au_lname,au_lname,mytable1.[key],mytable1.rank from authors inner join FREETEXTTABLE(authors,au_lname,' "Ben" NEAR "Halls" ') as mytable1 ON au_id=mytable1.[key]
go

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值