服务器 频道

MS SQL Server2000全文索引image列全攻略

  【IT168 服务器学院】今天“百年不遇”的停电了,看了一天书。晚上搞了一下全文索引,决定把心得贴出来,我尽量写的详细,大家共同学习,欢迎指正!
  
  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(''a'') and a.name=''a'' 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----------
  --调试环境:SQLServer2K、Windows2Kas
  
0
相关文章