您的位置:首页 > 数据库

SQL Server 学习笔记--全文搜索(1)

2007-04-08 22:43 183 查看
使用全文检索的步骤:

1、如果要给某个表创建一个全文索引,必须先给它建立一个唯一性索引

2、创建全文索引。

全文索引使用SQL Server Management Stadio之类的工具来创建,但它们是作为独立于数据库的文件存储在磁盘上的,而且由MSFTESQL服务来维护。编目(catalog)是用来组织索引的,可以创建任意多个编目来组织索引,但是这些编目不能横跨数据库。

3、组装索引

当全文索引刚建成的时候,它们是无价值的。由于索引由MSFTESQL服务管理,所以必须明确命令该服务给全文索引填充要搜索的那些text型字段的信息。全文索引的这种填充称为组装索引(Populating index)。当数据随着时间的推移而发生变化时,将需要命令MSFTESQL服务重建全文索引以匹配变化了的数据,这个过程称为重组装。

4、执行全文搜索

全文搜索功能其实就是使用全文操作符的SELECT查询。查找全文索引的全文操作符有4个:

CONTAINS和CONTIANSTABLE 用于从文本列中取出准确与近似的单词和短语。近似的意思是如果查找cook,则也可以找到cooks、cooked、cooking等。

FREETEXT 和FREETEXTTABLE 不如CONTAINS操作那么精确;例如,如果查找字符串“SQL is a database server",则会接收到包含SQL 、database、server及其派生词的结果。

CONTAINS/FREETEXT 和CONTIANSTABLE /FREETEXTTABLE的区别在于,后者不返回正常的结果集,而是创建一个供搜索的新表。 CONTIANSTABLE /FREETEXTTABLE通常用在要求连接原始表和新表的复杂查询中。

5、管理全文搜索

最重要的工作是重新组装全文索引,可以在最初创建编目时计划这项任务。在“对象资源管理器”中右击被索引的表,选择“全文索引”->“属性”->“计划”选项卡,可以修改现有的任务计划或创建新的任务计划。

管理全文搜索的另一项任务就是备份索引本身。虽然全文索引通过SQL Server Management Studio来管理,但它们实际上不是SQL Server数据库的一部分。事实上,它们存放在SQL Server外面的一个独立目录中,该目录由MSFTESQL管理。要备份这些索引,必须先停止MSFTESQL服务,然后才能对含有索引的数据库执行完全备份。SQL Server将自动把这些索引文件包含在该备份中。

建立全文索引的步骤详解:
在Modify Table界面中,鼠标右键,选择Index/Keys...



在Columns中选择字段,Type选择Unique Key。



接下来就可以定义全文检索了,如下图选择Define Full-Text Index...



接下来就是向导界面了,按照向导一步一步做,就不会错了!



选择刚才定义的Unique Index。



选择你要用来全文检索的字段。



这个设置控制索引在数据发送变化时是否更新,是自动还是手动重新组装索引。



选择用来存放索引的目录。



创建用来自动重新组装索引的执行计划。如果数据经常更新,则需要经常重新组装全文索引,也许一天一次。可以将重新组装计划成每次对单个表或整个编目发生。



向导的最后一个屏幕上显示选项的汇总信息,点击Finish创建索引。



开始建立。



完全填充全文索引





相关的SQL语句:

1、查看当前数据库的状态
SELECT DATABASEPROPERTY ('pubs','IsFulltextEnabled')

2、打开FullText功能
sp_fulltext_databse 'enable'

关闭此功能
sp_fulltext_databse 'disable'

3、链接服务器

当要检索的数据分布在多个服务器上时,需要链接服务器并执行链接服务器查询。有两种链接服务器查询:永久和特别。

对于经常性链接服务器查询,需要使用sp_addlinkedserver存储过程永久地链接服务器,使登陆到本地服务器的用户登录到远程服务器并保持登录状态。如链接到一个名为washington的SQL Server服务器:

sp_addlinkedserver ' washington' ,'SQL Server'

要查询远程服务器上的数据库,只要给SELECT查询添加上服务器名就可以了,如:

SELECT * FROM washington.Adventureworks..HumanResources.Employee

链接到一台名为Marketing的Access计算机,要访问的数据库为Northwind:

sp_addlinkedserver 'Marketing' , 'Microsoft.Jet.OLEDB.4.0' , 'OLE DB Provider for Jet', 'C:/MSOFFICE/Access/Samples/Northwind.mdb'

SELECT * FROM Marketing.Northwind..Employee

执行特别链接服务器查询涉及到OPENROWSET命令,该命令创建一个临时表,每次查询完毕后,链接自动断开。例如用特别查询访问数据库Northwind:

SELECT Access.*
FROM OPENROWSET( 'Microsoft.Jet.OLEDB.4.0' , 'C:/MSOFFICE/Access/Samples/Northwind.mdb','admin','mypwd',Orders) AS Access
GO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: