如何使用sql的全文检索功能


    
    
  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  

转载于:https://www.cnblogs.com/iclotus/archive/2007/06/11/779433.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值