使用sql server中的全文索引

原创 2004年09月11日 15:06:00

Author:David Euler.

Date:2004/09/11

Email:de_euler-david@yahoo.com.cn

有任何问题,请与我联系:)

一般情况,使用sql server中的全文索引,经过大体4个步骤:

1).安装full text search全文索引服务;

2).为数据表建立full text catalog全文索引目录;

3).进行full text catalog的population操作(使全文索引与数据表内容同步);

4).使用全文索引进行查询。

为了在数据表内容更新时全文索引数据库的内容也保持最新,可以通过第5步建立full text catalog 的Population自动操作Schedule.

1.sql server默认不安装full text search service,需要安装时选择装上才可以使用。如果安装了full text search service,那么Sql Server Enterprise manager(企业管理器)中,展开一个数据库,会有一个Full Text Catalogs;选中一个数据库,右键菜单的“新建“中有一个New Full Text CataLog.并且选中任意一个表格,点右键,会有一个Full-text Index Table(全文索引表)的菜单可以使用。如果full text search service没有安装,那么这个菜单是灰色的。

2.为表建立full text catalog.假设数据库CoreDB中有一个表myBBS,这个表存储的是一个论坛所有帖子的ID,标题(title),作者(author),内容(content)等。我们选中表myBBS,点右键,New Full Text Catalog,选择content作为全文索引的字段,建立新的Full Text Catalog,取名为content.

3.到这个时候,只是建立了full text catalog,并不能使用全文索引。需要使全文目录中的内容与数据库索引表的内容相一致,这一步通过Full Population或Incremental Population来实现:企业管理器中展开数据库CoreDB,双击Full-Text Catalog,会看到有一个名为content的全文目录,选中右击,点Start Full Population或Start Incremental Population,此时即可使用索引功能。

4.使用索引功能:

select * from mybbs where Contains(content,'"windows"');

此语句在mybbs表的全文索引content中,查询含有windows字符串的记录。

5.以后数据库中的索引表有更新时,都需要进行Population同步操作,全文查询的内容才是新的数据表中的内容。因此我们可以设定sql server自动进行Population操作:右击名为content的full text catalog,Schedules,New Catalog Schedules,输入名字,选中Enabled选项,可以设置计划任务的执行频率,可设置每次启动SQL server agent的时候启动,也可以设置执行一次,或者设置重复执行,重复执行里面可以设置执行频率为月,周,日,可以设置每天若干小时执行一次。(这样只要Service里面启动了sql server agent,population同步计划都会自动执行)

总结一下,通过安装全文索引服务,建立数据表的全文索引目录,同步全文索引数据库之后,即可开始使用全文索引查询。可通过建立full text catalog的自动population schedule来自动同步索引数据库。

参考资料:sql server自带的帮助文档“sql server Books online“.

Full-Text Catalogs and Indexes

Full-text Indexes

Full-text Search

Microsoft Search Service

Full-Text Querying Support

SqlServer 全文索引创建及测试

-- 创建测试表 -- DROP TABLE FullTextIndexing CREATE TABLE FullTextIndexing ( ID INT IDENTITY(1,1) NOT NU...
  • kk185800961
  • kk185800961
  • 2015年04月13日 09:22
  • 6758

针对SQL2008全文索引查不到数据的…

在网上查了很多关于全文索引查不到数据的问题。 上面说是干扰词的问题,需要修改相应的文件,但是SQL2008的文件又和SQL2005版本的位置什么的不一样,需要用SQL语句进行修改,但是用SQL语句提示...
  • lovejesuslove
  • lovejesuslove
  • 2016年03月21日 10:54
  • 590

关于SQLSERVER的全文目录跟全文索引的区别

 看这篇文章之前请先看一下下面我摘抄的全文搜索的MSDN资料,基本上MSDN上关于全文搜索的资料的我都copy下来了 并且非常认真地阅读和试验了一次,并且补充了一些SQL语句,这篇文章本人抽取...
  • cxzhq2002
  • cxzhq2002
  • 2016年02月15日 19:42
  • 1081

mysql全文索引使用方法

一、设置全文索引: 添加:ALTER TABLE table_name ADD FULLTEXT ( column); 删除:DROP INDEX index_name ON table_na...
  • zhangpeng_123456
  • zhangpeng_123456
  • 2016年08月11日 15:06
  • 4638

SQL Server全文索引使用实例

开启SQL全文搜索提升查询性能,本文示范如何使用SQL全文索引的方法。 本文示范完整的SQL SERVER数据库全文索引以pubs数据库为例 首先,介绍利用系统存储过程创建全文索引的具体步...
  • xiaogechengxuyuan
  • xiaogechengxuyuan
  • 2013年07月14日 00:13
  • 379

SQL SERVER 2008 R2使用索引技巧

T1表 10000000万条数据,(插入时间36分钟,count(*)查询19秒,空间占用670M左右)   1.真正充分的利用索引 比如like '张%' 就是符合SARG(符合扫描参...
  • wangzhen209
  • wangzhen209
  • 2016年07月06日 17:31
  • 577

在sqlserver 2008中编写自定义全文检索字典

原文出处:https://blogs.msdn.microsoft.com/sqlfts/2009/12/03/creating-custom-dictionaries-for-special-ter...
  • superwfei
  • superwfei
  • 2016年11月17日 11:30
  • 649

SQL Server 全文索引的硬伤

 SQL Server全文索引、CONTAINS、FREETEXT、CONTAINSTABLE、FREETEXTTABLE等谓词。   想象这样一个场景:在DataBase_name.dbo...
  • moonpure
  • moonpure
  • 2014年08月21日 13:18
  • 234

SQL Server 全文索引的硬伤

想象这样一个场景:在DataBase_name.dbo.Table_name中有一个名为Title(标题)和Contents(内容)的字段,现在需要查询在Title或者Contents中包括“qq”字...
  • gukehui2012
  • gukehui2012
  • 2017年05月25日 22:41
  • 424

SQL Server全文索引的用法

SQL Server全文索引相信大家都有一定的了解,下面就为您介绍SQL Server全文索引的用法及相关的语句,希望可以让您对SQL Server全文索引能有更深的认识。   --1、为数据库启...
  • xiaogechengxuyuan
  • xiaogechengxuyuan
  • 2013年07月14日 00:26
  • 668
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用sql server中的全文索引
举报原因:
原因补充:

(最多只允许输入30个字)