ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » MS SQL Server » 关于SQLServer2000的全文检索使用心得

标题: [原创] 关于SQLServer2000的全文检索使用心得
离线 bq_wang
我想飞得更高!


精华贴数 18
个人空间 2403
技术积分 17546 (53)
社区积分 49801 (11)
注册日期 2002-2-7
论坛徽章:15
现任管理团队成员ITPUB元老授权会员生肖徽章2007版:牛ITPUB新首页上线纪念徽章 
      

发表于 2008-6-28 15:17 
关于SQLServer2000的全文检索使用心得

关于SQLServer2000的全文检索使用心得



之前曾经指导SQLServer2000的全文检索功能,不过不太清楚它的实际操作步骤和功能,现特地作了一次完整的实验,对SQLServer2000的该功能,做了一番了解。


  --验证全文检索服务是否安装
  --通过储存过程FULLTEXTSERVICEPROPERTY(返回有关全文服务级别属性的信息)来验证搜索服务(全文组件)是否安装。
  -- Select fulltextserviceproperty ('IsFullTextInstalled')
  --返回1表示已安装全文组件;
  --返回0表示未安装全文组件;
  --返回Null表示输入无效或发生错误。

  Select fulltextserviceproperty  ('IsFullTextInstalled')
   
  --选一个数据库进行全文检索
  use fulltexttest
  go
   
  --从数据库中删除所有目录:
  Exec sp_fulltext_database 'disable'
   
  --打开数据库全文索引的支持
  execute sp_fulltext_database 'enable'
  go
   
  --建立全文目录ft_news,新闻库
  --使用不同参数进行全文目录的创建、重建、填充、删除
  --create
创建
  --rebuild
填充
  --start_full
启动填充
  --stop
删除
  --以下执行新闻目录的创建
  execute sp_fulltext_catalog 'ft_news',  'create'
  go
   
  --titles表建立全文索引数据元,PK_dtlmb,PK_dtxxb是主键所建立的唯一索引,可由sp_help titles得知
  --sp_fulltext_table [ @tabname = ]  'qualified_table_name'
  --
, [ @action = ] 'action'
  --
[ , [ @ftcat = ] 'fulltext_catalog_name'
  --
, [ @keyname = ] 'unique_index_name' ]
  --为以下数据表分别创建主键
  --alter table dtlmb add CONSTRAINT  PK_dtlmb PRIMARY KEY CLUSTERED (t_dtlmb_ID)
  --alter table dtxxb add CONSTRAINT  PK_dtxxb PRIMARY KEY CLUSTERED (GUID)
  --为全文索引对表进行标记
  execute sp_fulltext_table  'dtlmb','create', 'ft_news', 'PK_dtlmb'
  go
  execute sp_fulltext_table  'dtxxb','create', 'ft_news', 'PK_dtxxb'
  go
   
  --设置全文索引列名
  exec sp_fulltext_column 'dtlmb',  'dtlmlx', 'add'
  go
  exec sp_fulltext_column 'dtlmb', 'zt',  'add'
  go
  exec sp_fulltext_column 'dtlmb', 'cc',  'add'
  go
  exec sp_fulltext_column 'dtxxb',  'dtxxlmlx', 'add'
  go
  exec sp_fulltext_column 'dtxxb', 'zt',  'add'
  go
  exec sp_fulltext_column 'dtxxb', 'cc',  'add'
  go
   
  --激活全文索引
  exec sp_fulltext_table 'dtlmb',  'activate'
  go
  exec sp_fulltext_table 'dtxxb',  'activate'
  go
   
  --填充全文索引目录
  exec sp_fulltext_catalog 'ft_news',  'start_full'
  GO
  --检查全文目录填充情况,一共两张表36条记录花了33分钟
  WHILE  FulltextCatalogProperty('ft_news','PopulateStatus')<>0
  BEGIN
  
--如果全文目录正处于填充状态,则等待30秒后再检测一次
  
WAITFOR DELAY '0:0:30'
  END
  --全文目录填充完成后,使用全文目录检索
   
  --使用containsfreetext
  select zt,cc from dtlmb
  
where contains(zt, 'xxx')
  go
  select zt,cc from dtlmb
  
where contains(*, '"xxx"')
  go
  select dtxxlmlx,zt,cc from dtxxb
  
where freetext(zt, 'xxx')
  go
  select dtxxlmlx,zt,cc from dtxxb
  
where freetext (*, '"xxx"')
  go
   
  Select * from dtxxb where zt like ‘%xxx%’
  --与全文检索相比,从网络统计信息->所接收的字节数/时间统计信息->服务器应答累计等待时间,时间相差一个数据量级
   
  --增量填充,即激活并传播跟踪更改
  --当更改发生时,下面的示例激活并启动将所跟踪的更改传播到全文索引。
  --如果表不包含 timestamp
列,则只能执行完全填充或更改跟踪填充
  EXEC sp_fulltext_table dtlmb,  'Start_change_tracking' --启动全文索引的增量填充
  EXEC sp_fulltext_table dtlmb,  'Start_background_updateindex' --在变化发生时,开始将跟踪的变化传播到全文索引。
   
  --更改一条记录,大约过一分钟之后,便可通过全文检索查询到
  

SQLServer2000企业管理器中关于全文检索部分的功能和步骤
1、
从表上定义全文检索,即通过向导的方式,选择相应的全文目录和待查询的全文检索字段,系统会通过该表有无主键判断该表是否能够建立全文索引,同时也可实现对全文检索的调度。
2、
编辑全文检索,功能同上,对一个已经存在的全文索引进行修改。
3、
从表中删除全文索引,这个就不用说了
4、
启动完全填充,全文检索建立之后,系统并不会自动填充索引内容,需要执行该任务或者脚本。
如果为全文目录请求完全填充,则为该目录所涉及的所有表中的所有行生成索引项。如果为表请求完全填充,则为该表中的所有行生成索引项。完全填充通常发生在当首先填充目录或索引,然后使用更改跟踪或增量填充来维护索引时。
5、
启动增量填充
6、
停止填充,停止当前的填充任务,不管是完全还是增量。
7、
更改跟踪
维护在系统表中已修改的行的记录,并将更改传播到全文索引。通过执行sp_fulltext_table
启动更改跟踪并为 @action 参数指定 start_change_tracking。使用更改跟踪时,也指定从历史表取得更改并在全文索引中填充更改的时间
8、
更新后台中的索引
9、
更新索引
10、
调度,建立一个调度任务指定时间对数据进行全文检索更新





__________________
鸿图霸业谈笑中,不胜人生一场醉。厌倦江湖萌退意,不辞长作天涯人。
-------------------------------
MSN:baoqiangwang@hotmail.com
Mail:windboy@vip.sina.com  QQ:326444779
-------------------------------

-------------------------------




只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问