电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

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


发布日期:2021/3/13
 

启动 Microsoft Search 服务

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

\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目录里建一个非空noisechs文件

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

建立环境

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

create database test 创建test数据库

use test 选择test数据库

create tabledali (ID int not null primary keyMyImage imageFileType varchar()FileNmae varchar()) 创建dali表

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

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

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

sp_fulltext_catalog My_FullDir create创建一个叫My_FullDif的全文目录

declare @Key sysname ; select @Key=cname from syscolumns asysconstraints bsysobjects c where aid=object_id(dali) and aname=ID and aid=bid and nstid=cid and cname like PK%

exec sp_fulltext_table dalicreateMy_FullDir@Key这两句是为全文索引对表进行标记

sp_fulltext_column daliMyImageaddxFileType这句是指定MyImage列为全文索引列FileType是类型列

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

大家可根据实际情况放入!

插入数据

建立下面这个存储过程

CREATE PROCEDURE sp_textcopy

@srvnamevarchar ()

@loginvarchar ()

@passwordvarchar ()

@dbnamevarchar ()

@tbnamevarchar ()

@colnamevarchar ()

@filenamevarchar ()

@whereclause varchar ()

@directionchar()

AS

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

DECLARE @exec_str varchar ()

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

EXEC masterxp_cmdshell @exec_str

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

sp_textcopy 你的服务器名sa你的密码testdaliMyImagec:\大力的docdocwhere ID=I

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

insert dali values(xbmp图片)

sp_textcopy 你的服务器名sa你的密码testdaliMyImagec:\图片bmpwhere ID=I 注意条件是 ID=

insert dali values(xxlsExcel文件)

sp_textcopy 你的服务器名sa你的密码testdaliMyImagec:\Excel文件xlswhere ID=I 注意条件是 ID=

insert dali values(xhtm网页)

sp_textcopy 你的服务器名sa你的密码testdaliMyImagec:\网where ID=I 注意条件是 ID=

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

填充全文索引

sp_fulltext_table dalistart_full 第一个参数是表名第二个参数是启动表的全文索引的完全填充

可以开始你的实验了

select * from dali where contains(MyImageJ老师)

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

END

上一篇:Windows XP/2003中EFS的新特

下一篇:Windows7自带屏幕录制功能