5-8万年薪顶级嵌入式,京沪深就业地 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

全文索引image列,全攻略!

楼主pengdali()2003-03-30 00:38:21 在 MS-SQL Server / 疑难问题 提问

今天“百年不遇”的停电了,看了一天书。晚上搞了一下全文索引,决定把心得贴出来,我尽量写的详细,大家共同学习,欢迎指正!  
   
  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 问题点数:300、回复次数:54Top

1 楼jiezhi(风满袖)回复于 2003-03-30 01:40:08 得分 5

no.1Top

2 楼jiezhi(风满袖)回复于 2003-03-30 01:41:23 得分 5

建议还是去研究oracle和db2吧  
  嘻嘻嘻Top

3 楼jiezhi(风满袖)回复于 2003-03-30 01:41:39 得分 0

:)Top

4 楼zqllyh(学习Stupid As Pig中...)回复于 2003-03-30 19:34:47 得分 10

大力的做法值得尊敬Top

5 楼happydreamer(www.sz.js.cn,www.gyxk.com)回复于 2003-03-30 19:37:34 得分 10

好   我也不太熟悉   学习了Top

6 楼jiezhi(风满袖)回复于 2003-03-30 20:27:27 得分 0

http://www.csdn.net/develop/read_article.asp?id=17137Top

7 楼nik_Amis(...)回复于 2003-03-30 20:44:35 得分 10

upTop

8 楼mengfan8868(独孤求败)回复于 2003-03-30 21:30:45 得分 10

学习了Top

9 楼j9988(j9988)回复于 2003-03-30 21:40:43 得分 10

学习学习Top

10 楼sysu(死树)回复于 2003-03-30 23:00:53 得分 10

studyTop

11 楼ToUpdate(老六)回复于 2003-03-31 00:23:03 得分 10

太厉害了...Top

12 楼yoki(小马哥--鬓微霜,又何妨)回复于 2003-03-31 08:58:16 得分 10

学习中,勿扰!Top

13 楼renzhm(戴尔飞)回复于 2003-03-31 09:02:09 得分 5

感谢!学习...Top

14 楼chpeng(海鸥)回复于 2003-03-31 09:04:32 得分 5

学习Top

15 楼yingzhi110(水樱花)回复于 2003-03-31 11:36:01 得分 5

问个愚蠢的问题:SQLServer2K是指什么?Windows2Kas又是什么?和win2000和sql   server   2000不同吗?  
  Top

16 楼leimin(黄山光明顶)回复于 2003-03-31 11:48:50 得分 10

GOOD   !STUDYTop

17 楼newdongkui(孤独的老乌鸦)回复于 2003-03-31 11:52:49 得分 5

大力真是好人,我要认真学习以及大力的精神Top

18 楼chpong(海鸥)回复于 2003-03-31 11:53:19 得分 5

very   good,学习Top

19 楼DJMPH(冷开水)回复于 2003-03-31 12:02:09 得分 5

鼓励。Top

20 楼CrazyFor(冬眠的鼹鼠)回复于 2003-03-31 12:46:20 得分 10

学习!!  
   
   
  有空再好好看看。:)Top

21 楼teaism()回复于 2003-03-31 12:48:13 得分 5

MARK!Top

22 楼gengwei80(书生)回复于 2003-03-31 12:57:36 得分 5

学习!!Top

23 楼huxin1012(fox)回复于 2003-03-31 12:58:24 得分 5

学习!!Top

24 楼zzhuz(大件)回复于 2003-03-31 12:59:58 得分 5

学习Top

25 楼wenhao676(zzc)回复于 2003-03-31 13:42:14 得分 5

good   good   study   on   csdn     day   day   up    
  stu.....ingTop

26 楼hjhing(winding)回复于 2003-03-31 16:26:29 得分 10

收藏先!Top

27 楼covis(烂Covis冒充程序员)回复于 2003-03-31 16:29:49 得分 5

学习!!  
  收藏!!!  
  Top

28 楼tj_dns(愉快的登山者)回复于 2003-03-31 17:13:36 得分 10

收藏。Top

29 楼pengdali()回复于 2003-03-31 17:32:12 得分 0

这里改一下:  
  declare   @Key   sysname   ;   select   @Key=c.name   from   syscolumns   a,sysconstraints   b,sysobjects   c   where   a.id=object_id('dali')   and   a.name='ID'   and   a.id=b.id   and   b.constid=c.id   and   c.name   like   'PK%'     ---找到索引的名字  
  exec   sp_fulltext_table   'dali','create','My_FullDir',@Key     ----这两句是为全文索引,对表进行标记Top

30 楼wgy2008(北极光)回复于 2003-03-31 18:34:26 得分 5

学习!Top

31 楼defender(铜墙铁壁)回复于 2003-03-31 18:37:58 得分 5

upTop

32 楼gaobochina(皮皮)回复于 2003-03-31 18:45:18 得分 5

帅!!!多来几次  
  Top

33 楼Haiwer(海阔天空)回复于 2003-04-01 08:21:06 得分 10

学习!!  
  收藏!!  
   
  Top

34 楼mmkk()回复于 2003-04-01 09:39:39 得分 5

Got   it!Top

35 楼henryzc(hoho)回复于 2003-04-01 10:31:03 得分 5

upupupupupupupTop

36 楼Chiff(~o~)回复于 2003-04-01 10:49:16 得分 10

郁闷,我的版本没有全文索引...Top

37 楼Chiff(~o~)回复于 2003-04-01 10:51:11 得分 5

向大力学习.Top

38 楼andyzq(小强)回复于 2003-04-01 15:09:56 得分 5

收藏!  
  Top

39 楼ben988211(???)回复于 2003-04-01 15:12:35 得分 5

收藏!Top

40 楼lizongqi(英雄啊)回复于 2003-04-01 15:25:07 得分 5

收藏ing...Top

41 楼linday(林)回复于 2003-04-01 16:38:05 得分 5

强人。。。Top

42 楼caiyunxia(夏才云)回复于 2003-04-01 19:15:31 得分 5

致敬!!!!!  
  希望多几个大力!!!  
  收藏Top

43 楼benxie(结婚是幸福的!为了老婆努力赚钱!)回复于 2003-04-02 06:33:00 得分 5

不错呀。  
  难得大力有时间。  
   
  謝了。收藏。Top

44 楼dongquestion(书山有路勤为径)回复于 2003-04-02 09:22:52 得分 5

先保存,后收藏Top

45 楼Napoleo(Leo)回复于 2003-04-02 09:55:38 得分 5

纷纷Top

46 楼happydreamer(www.sz.js.cn,www.gyxk.com)回复于 2003-04-02 10:44:14 得分 5

试了一下,不错      
   
  有几个问题:  
  1   好像那个noise.chs文件没起到什么作用  
  2   如果对文件进行了更改,   希望再用全文索引查询,   需要重新导入表中  
  3   image类型还是有长度限制,我用textcopy导入一个大的doc文件时提示出错,只能分割放入  
  4   我的一个文档Doc1   里面只有字段   '数据库'  
    另一个文档Doc2     500多K   里面有很多'数据库'字段   ,其中一些经过了排版,有的用了黑体,   加下划线  
   
  用select   *   from   dali   where   contains(MyImage,'数据库')只能查出Doc1,Doc2没有显示出来  
   
  而我在dali表中只存放Doc2一条记录时也未能检索出记录,是不是和文档格式有关系Top

47 楼weixiao51(4fen)回复于 2003-04-02 11:19:31 得分 5

向大力学习Top

48 楼chyich()回复于 2003-04-03 20:27:01 得分 5

up,学习!!Top

49 楼happydreamer(www.sz.js.cn,www.gyxk.com)回复于 2003-04-04 10:10:08 得分 5

To   dali  
   
  Doc2的问题解决了,又试了几个xls文件处理,都没有问题,可以查出不同工作表里的数据和经过公式运算的数据  
  Top

50 楼glboy(星毅)回复于 2003-04-26 21:57:29 得分 0

mark,好久没过来了,:)Top

51 楼flyinger(风往北吹)回复于 2003-06-07 18:06:12 得分 0

告诉你们!  
  我希望大力天天停电!  
  呵呵!Top

52 楼baijie1130(兔子)回复于 2003-07-09 14:48:52 得分 0

非常感谢大力!!向大力多学习!!Top

53 楼gho(李逍遥)回复于 2003-08-02 09:58:33 得分 0

hiTop

54 楼vikingleo(云风^NET)回复于 2003-08-09 09:30:50 得分 0

MARKTop

相关问题

  • 在SQL SERVER 2000不能为image类型的列配置全文索引
  • 全文索引
  • sql7.0中的全文索引
  • 全文索引的疑惑
  • 全文索引问题
  • 全文索引的问题
  • mysql全文索引求助!
  • 全文索引的问题
  • 全文索引问题?
  • 创建全文索引的错误

关键词

  • 文件
  • 数据库
  • 文档
  • 数据
  • dali
  • 全文索引
  • fulldir
  • textcopy
  • 扩展名
  • noise

得分解答快速导航

  • 帖主:pengdali
  • jiezhi
  • jiezhi
  • zqllyh
  • happydreamer
  • nik_Amis
  • mengfan8868
  • j9988
  • sysu
  • ToUpdate
  • yoki
  • renzhm
  • chpeng
  • yingzhi110
  • leimin
  • newdongkui
  • chpong
  • DJMPH
  • CrazyFor
  • teaism
  • gengwei80
  • huxin1012
  • zzhuz
  • wenhao676
  • hjhing
  • covis
  • tj_dns
  • wgy2008
  • defender
  • gaobochina
  • Haiwer
  • mmkk
  • henryzc
  • Chiff
  • Chiff
  • andyzq
  • ben988211
  • lizongqi
  • linday
  • caiyunxia
  • benxie
  • dongquestion
  • Napoleo
  • happydreamer
  • weixiao51
  • chyich
  • happydreamer

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
x 提问