SQL Server 全文检索技术 1

来源:互联网 发布:网站源码下载 带采集 编辑:程序博客网 时间:2024/06/10 02:21
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  
 
 
原创粉丝点击