SQL SERVER中全文检索的创建与应用

      全文搜索的核心引擎建立在Microsoft Full-Text Engine for SQL Server (MSFTESQL) 服务提供支持
      面对海量的数据,如何才能找到我需要的?对数百万行文本数据执行的LIKE 查询可能需要花费几分钟时间才能返回结果;但对同样的数据,全文查询只需要几秒或更少的时间,具体取决于返回的行数,全文检索提供了一种便捷的方式,轻松地让所需数据手到擒来。

下面介绍全文搜索的创建与应用:

1、全文检索的创建

use test
exec sp_fulltext_database 'enable'

--  FullTextName是保存索引文件的文件夹(数据库上体现是:全文目录名)
--  create表示创建
--  E:/SQL2005FullText表示FullTextName文件夹的根路径
exec sp_fulltext_catalog 'FullTextName', 'create', 'E:/SQL2005FullText'


--  对News表创建全文搜索
--  PK_News是表的有效索引(一般用主键索引名)
exec sp_fulltext_table 'News', 'create', 'FullTextName','PK_News'   --在已有的表上根据已有的索引创建全文索引


-- NewsContent是要创建全文搜索的列名
-- 0x0804代表简体中文的local ID
exec sp_fulltext_column 'News', 'NewsContent', 'add',0x0804   
exec sp_fulltext_column 'News', 'NewsTitle', 'add',0x0804


--  表启动完全填充(一般用于第一次生成全文检索时应用)
exec sp_fulltext_table 'News', 'start_full'


2、一旦设置好全文检索,你需要自己来维护全文索引的更新工作,这是因为全文目录的更新不是自动进行的。


--  增量填充(表中必须有一个时间戳字段,否则它将转换为完全填充)
--  可以使用SQL Server的Agent制定一个更新的计划,定时对索引做增量填充
EXEC sp_fulltext_catalog 'FullTextName','start_incremental'

--  启动更改跟踪填充
exec sp_fulltext_table 'News','start_change_tracking'
exec sp_fulltext_table 'News','Start_background_updateindex'


创建完全文检索后,就可以用四个CONTAINS, FREETEXT,CONTAINSTABLE, FREETEXTTABLE谓词进行查询


3、性能

     全文检索的填充和查询都需要花费系统开销,使用全文检索,你需要考虑性能上的问题,某一种方法比另外一种方法好并没有一个绝对的评判标准。你需要根据具体情况自己来对比不同方法的优劣。不过还是有一些建议:
     设置全文索引时的考虑如果要检索的记录数比较少,如少于100万条。那么可以考虑为多个表保存在一个全文目录中;如果表的记录数非常大,超过100万条。那么可以考虑单独为这个大表创建一个全文目录。
      索引填充时候的考虑:无论你是用什么样的填充(完全填充、增量填充还是更改跟踪填充),你安排填充的时间最好是在数据库处于非高峰活动期间来进行。
      全文检索时的考虑:CONTAINS谓词查询返回的数据相对比FREETEXT少,精确度也高。如果你更多的考虑速度,那么FREETEXT可能是你的选择,它的检索速度一般比CONTAINS快,但是FREETEXT占用的CPU 资源也要比CONTAINS高。关于全文检索的性能和优化,Microsoft站点有一篇很好的文章《使用Microsoft SQL Server 2000的全文搜索功能构建Web搜索应用程序》,见参考书目。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值