SQL2005全文索引,如何才能查IMAGE类型中的文字?
网上说:把文以流的形式存进IMAGE类型的字段中,
仍然可以用全文索引查出来,可是我试了一天都没成功
希望高人们给一个例子
和指点迷津,特别是关键的地方

解决方案 »

  1.   

    去大力博客看看
    MS   SQL   Server2000全文索引image列全攻略 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