在什么情况下使用全文索引呢?

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

1、启动 Microsoft Search 服务

开始菜单--SQL程序组--服务管理器--下拉筐--Microsoft Search 服务--启动它

2、..\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目录里建一个非空noise.chs文件

非空noise.chs文件,也有人说是空的noise.chs文件,但我每次都往里写几个没用的字母。

3、建立环境

打开查询分析器--执行下列脚本:

--------------------------------------------

create database test ---创建test数据库

use test

---选择test数据库

create table

dali (ID int not null primary key,MyImage image,FileType varchar(255),FileNmae varchar(255)) ---创建dali表

--dali表中 Id,MyImage,FileType 三列是必须的,因为要对image列索引的话,必须要有一个主键列,一个image列,一个存放文件类型的列

--我们知道在windows系统中文件类型是靠扩展名来区分的所以FileType列也就是用来放 文件的扩展名

--------------------------------------------

sp_fulltext_database 'enable' --为全文索引启用数据库

sp_fulltext_catalog 'My_FullDir', 'create'

---创建一个叫My_FullDif的全文目录

declare @Key sysname ; select @Key=c.name from syscolumns a,sysconstraints b,sysobjects c where a.id=object_id('dali') and a.name='ID' and a.id=b.id and b.constid=c.id and c.name like 'PK%'

exec sp_fulltext_table 'dali','create','My_FullDir',@Key

----这两句是为全文索引,对表进行标记

sp_fulltext_column 'dali','MyImage','add',0x0804,'FileType'

---这句是指定MyImage列为全文索引列,FileType是类型列

------------------------------------------------

4、在c盘下放一个扩展名为doc的word文件,一个扩展名为xls的excel文件,一个扩展名为htm的网页文件,个扩展名为bmp的图片

共4个,大家可根据实际情况放入!

5、插入数据

建立下面这个存储过程

--------------------------------------------------

CREATE PROCEDURE sp_textcopy

@srvname

varchar (30),

@login

varchar (30),

@password

varchar (30),

@dbname

varchar (30),

@tbname

varchar (30),

@colname

varchar (30),

@filename

varchar (30),

@whereclause varchar (40),

@direction

char(1)

AS

/* 这是使用textcopy工具将文件插入到数据库中,如果有前台工具可以用前台开发工具将文件插入,这里为了演示 */

DECLARE @exec_str varchar (255)

SELECT @exec_str='textcopy /S '+@srvname+' /U '+@login+' /P '+@password+' /D '+@dbname+' /T'+@tbname+' /C '+@colname+' /W"'+@whereclause+'" /F"'+@filename+'" /'+@direction

EXEC master..xp_cmdshell @exec_str

----------------------------------------------------

insert dali values(1,0x,'doc','大力的doc') ---其中第二列是 0x 它是一个16进制数对应image列,是必须的,不要写null,第三列是文件类型,既扩展名

sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\大力的doc.doc','where ID=1','I'

-------依次参数是:实例名,用户名,密码,数据库名,表名,image列名,路径及文件名,条件(你必须保证它只选择一行),I

---------------------------------------------------------------------------------------------------------------------

insert dali values(2,0x,'bmp','图片')

sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\图片.bmp','where ID=2','I' --注意条件是 ID=2

insert dali values(3,0x,'xls','Excel文件')

sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\Excel文件.xls','where ID=3','I' --注意条件是 ID=3

insert dali values(4,0x,'htm','网页')

sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\网页.htm','where ID=4','I' --注意条件是 ID=4

----------上面的语句,要保证类型一样,路径正确,条件唯一正确应该就可以了

6、填充全文索引

sp_fulltext_table 'dali','start_full' ---第一个参数是表名,第二个参数是启动表的全文索引的完全填充

7、可以开始你的实验了

select * from dali where contains(MyImage,'J老师')

select * from dali where contains(MyImage,'海老师')

------END----------

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航