使用SQL语句为SQL Server 2005创建全文索引

下面以表TArticle为例,为BiaoTi、NeiRong两个字段建立全文索引。

开始创建全文目录了:

-- SQL语句:
create fulltext catalog FTArticle in path “D:\DataBase\FullText“
-- 存储过程:
spfulltextcatalog FTArticle, “create“, “D:\Database\FullText“

注意:对应的目录必须在服务器上已经建好了。

然后,在TArticle表上创建全文索引并加入BiaoTi、NeiRong字段。

-- SQL语句:
create fulltext
        index on TArticle
        (
                BiaoTi, NeiRong
        )
        key index pkTArticle
        on FTArticle
-- 存储过程:
spfulltexttable “TArticle“, “create“, “FTArticle“, “pkTArticle“
spfulltextcolumn TArticle, “BiaoTi“, “add“
spfulltextcolumn TArticle, “NeiRong“, “add“

注意:pkTArticle请使用PKtableName的方式,否则会提示错误。

使用全文检索:

select * from TArticle where contains(NeiRong, “div“)
select * from TArticle where freetext(NeiRong, “div“)


查看全文检索的配置情况:

sphelpfulltextcatalogs -- 检查数据库有哪些全文目录
sphelpfulltexttables FTArticle -- 查看哪些表把全文索引建立在FTArticle下
sphelpfulltextcolumns TArticle -- 查看TArticle表哪些字段配置了全文索引


删除全文索引必须与创建的时候倒过来一步一步操作:

drop fulltext index on TArticle -- 撤销T-Article上的全文检索

drop fulltext catalog FTArticle -- 撤销全文目录FTArticle


存储过程实例:

Use myDATA--打开数据库 
GO

--检查pubs是否支持全文检索,若不支持则使用sp_fulltext_database打开此功能 
if (select databaseProperty('myDATA','isfulltextEnabled'))=0
	Begin 
		execute sp_fulltext_database 'enable'
	end
--建立全文目录FT_pubs 
execute sp_fulltext_catalog 'TE_CI_Class_10134','create','E:\MSFTESQL'
--为title表建立全文索引数据元 
execute sp_fulltext_table 'TE_CI_Class_10134','create','TE_CI_Class_10134','PK_TE_CI_Class_10134' 
--设置全文索引列名 
execute sp_fulltext_column 'TE_CI_Class_10134','CI_SearchKey','add' 
--execute sp_fulltext_column'TE_CI_Class_10134','CI_CorpName','add' 
--建立全文索引 
execute sp_fulltext_table 'TE_CI_Class_10134','activate' 
--填充全文索引目录 
execute sp_fulltext_catalog 'TE_CI_Class_10134','start_full' 
GO 

--检测全文索引目录 
while FulltextCatalogProperty('PK_TE_CI_Class_10134','PopulateStatus') <> 0 
	Begin 
	--若全文索引正处在填充状态,则等待30面后再检测 
	waitfor delay  '0:0:30' 
	end

--设置自动跟踪更新
ALTER FULLTEXT INDEX ON TE_CI_ChargeLevel_6 SET CHANGE_TRACKING AUTO

格式文档帮助:

14.8  2005新增:与全文索引相关的T-SQL语句

SQL Server 2005以前的版本中,创建与管理全文目录、全文索引主要是使用存储过程来完成。从SQL Server 2005开始新增加了一些与全文索引相关的T-SQL语句,可以用来创建与管理全文目录和全文索引。

14.8.1  创建全文目录

创建全文目录的T-SQL语句为:

CREATE FULLTEXT CATALOG catalog_name

     [ON FILEGROUP filegroup ]

     [IN PATH 'rootpath']

     [WITH <catalog_option>]

     [AS DEFAULT]

     [AUTHORIZATION owner_name ]

<catalog_option>::=

     ACCENT_SENSITIVITY = {ON|OFF}

其中参数说明如下:

l  catalog_name:全文目录名称。

l  ON FILEGROUP filegroup:包含全文目录的文件组名。

l  IN PATH 'rootpath':全文目录的路径。

l  AS DEFAULT:指定该全文目录为默认目录。

l  AUTHORIZATION owner_name:将全文目录的所有者设为数据库用户名或角色的名称。

l  ACCENT_SENSITIVITY:设置该全文目录的全文索引是否区分重音。

例十三、在Northwind数据库中创建一个名为“TSQL全文目录全文目录,其代码如下:

CREATE FULLTEXT CATALOG TSQL全文目录

         ON FILEGROUP [PRIMARY]

         IN PATH 'E:"book"SQL Server 2005大全"数据库"第十四章"运行后数据库'

         AS DEFAULT

14.8.2  更改全文目录属性

创建完全文目录之后,如果发现其设置有不如意之处,可以用T-SQL语句对其进行修改。更改全文目录属性的T-SQL语句代码如下:

ALTER FULLTEXT CATALOG catalog_name

{ REBUILD [ WITH ACCENT_SENSITIVITY = { ON | OFF } ]

| REORGANIZE

| AS DEFAULT

}

其中参数说明如下:

l  catalog_name:全文目录名称

l  REBUILD:重新生成全文目录。

l  WITH ACCENT_SENSITIVITY:设置该全文目录的全文索引是否区分重音。

l  REORGANIZE:执行主合并索引以便将在索引过程中创建的各个较小的索引合并成一个大索引。

l  AS DEFAULT:指定该全文目录为默认目录。

例十四、重新生成“TSQL全文目录,其代码如下:

ALTER FULLTEXT CATALOG TSQL全文目录

         REBUILD

14.8.3  创建全文索引

有了全文目录后,可以在全文目录里创建全文索引。一个全文目录里可以包含多个全文索引,但一个全文索引只能属于一个全文目录。每个数据表只能有一个全文索引。创建全文索引的T-SQL语句代码如下:

CREATE FULLTEXT INDEX ON table_name

     [(column_name [TYPE COLUMN type_column_name]

          [LANGUAGE language_term] [,...n])]

     KEY INDEX index_name

          [ON fulltext_catalog_name]

     [WITH

          {CHANGE_TRACKING {MANUAL | AUTO | OFF [, NO POPULATION]}}

     ]

其中参数说明如下:

l  table_name:数据表名。

l  column_name:全文索引中包括的一列或多列的名称。只能对类型为charvarcharncharnvarchartextntextimagexmlvarbinary的列进行全文索引。

l  TYPE COLUMN type_column_name:用于存储column_name的文档类型的数据表中的列名。

l  LANGUAGE language_term:存储在column_name中的数据所用的语言。

l  KEY INDEX index_name:数据表中唯一键索引的字段名。

l  ON fulltext_catalog_name:全文目录名。

l  MANUAL:指定是使用SQL Server代理还是手动传播跟踪日志。

l  AUTO:当关联的数据表中修改了数据时,SQL Server自动更新全文索引。

l  OFF[,NO POPULATION]:不保留对索引数据的更改列表。

例十五、为文章表的标题内容文件三个字段创建全文索引,其代码如下:

CREATE FULLTEXT INDEX

         ON 文章(标题,内容,文件 TYPE COLUMN 扩展名)

         KEY INDEX PK_文章

         ON TSQL全文目录

注意:由于在前面的章节里已经为文章表创建了全文索引,因此在运行本例之前要先把原来创建的全文索引删除。

14.8.4  更改全文索引属性

创建完全文索引之后,如果发现其设置有不如意之处,可以用T-SQL语句对其进行修改。更改全文索引属性的T-SQL语句代码如下:

ALTER FULLTEXT INDEX ON table_name

   { ENABLE

   | DISABLE

   | SET CHANGE_TRACKING { MANUAL | AUTO | OFF }

   | ADD ( column_name

     [ TYPE COLUMN type_column_name ]

     [ LANGUAGE language_term ] [,...n] )

     [ WITH NO POPULATION ]

   | DROP ( column_name [,...n] )

     [WITH NO POPULATION ]

   | START { FULL | INCREMENTAL | UPDATE } POPULATION

   | STOP POPULATION

   }

其中一些参数说明如下:

l  table_name:数据表名。

l  ENABLE | DISABLE:启用或禁用全文索引。

l  MANUAL:指定是使用SQL Server代理还是手动传播跟踪日志。

l  AUTO:当关联的数据表中修改了数据时,SQL Server自动更新全文索引。

l  OFF:不保留对索引数据的更改列表。

l  ADD:指定在全文索引中添加列。

l  WITH NO POPULATION:指定添加过删除全文索引列之后不填充全文索引。

l  DROP:指定在全文索引中删除列。

l  START……POPULATION:开始填充全文索引。

l  FULL:指定填充所有全文索引。

l  INCREMENTAL:指定对上次填充以来修改过的行进行填充。

l  UPDATE :指定对自上次更新更改跟踪索引以来的所有插入、更新或删除进行处理。

l  STOP POPULATION:停止正在进行的填充。

例十六、禁用文章表的全文索引,其代码如下:

ALTER FULLTEXT INDEX ON 文章

         DISABLE

例十七、启用文章表的全文索引,其代码如下:

ALTER FULLTEXT INDEX ON 文章

         ENABLE

例十八、将文章表里的文件字段从全文索引里删除,其代码如下:

ALTER FULLTEXT INDEX ON 文章

         DROP (文件)

例十九、填充文章表的全文索引,其代码如下:

ALTER FULLTEXT INDEX ON 文章

         START FULL POPULATION

14.8.5  删除全文索引

删除全文索引的T-SQL的语法代码比较简单,如下所示:

DROP FULLTEXT INDEX ON table_name

例二十、删除文章表里的全文索引,其代码如下:

DROP FULLTEXT INDEX ON 文章

14.8.6  删除全文目录

删除全文目录的T-SQL的语法代码比较简单,如下所示:

DROP FULLTEXT CATALOG catalog_name

例二十一、删除文章表里的全文索引,其代码如下:

DROP FULLTEXT CATALOG TSQL全文目录

注意:要删除全文目录必须为空,即不能包含有全文索引。

14.9  小结

使用全文搜索可以快速、灵活地为存储在数据库中的文本数据的基于关键字的查询创建索引。与仅适用于字符模式的LIKE谓词不同,全文查询将根据特定语言的规则对词和短语进行操作,从而针对此数据执行语言搜索。

全文索引是由SQL Server FullText Search服务来维护的,必须选启动该服务才能使用全文索引。填充全文索引有三种方式:完全填充、增量填充和更改跟踪。

在全文索引中概念与术语比较多,如全文索引、全文目录、断字符、词干分析器、标记、筛选器、填充、干扰词等。了解怎么创建全文目录,怎么创建全文索引,怎么进行全文索引的填充,怎么使用调度让全文索引自动填充。

使用CONTAINSFREETEXT两个谓词和CONTAINSTABLEFREETEXTTABLE两个行集值函数可以用来进行全文搜索,其中CONTAINSFREETEXT用在WHERE子句中,CONTAINSTABLEFREETEXTTABLE用在FROM子句中。CONTAINS搜索有简单词、派生词、前缀词、加权词和邻近词五种搜索方式。FREETEXT只有一种搜索方式,但是其将一个句子中的每个单字拆分开进行搜索。

SQL Server 2005可以对存储在image类型字段里的文件进行全文搜索。其搜索的前提是必须要有一个字段指明image类型字段里存储的文件是什么类型。当为image类型字段设置好全文索引后,可以像其他字段一样地进行全文搜索。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值