博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

索引使用大全

Posted on 2010-09-23 22:49  moss_tan_jun  阅读(271)  评论(0编辑  收藏  举报

 

 

Sql2005 全文索

 

1.前言.......................................................................................................................................... 2

14.1  全文索引的介绍...............................................................................................................3

14.2  全文索引中常用的术语.................................................................................................. 3

14.3  全文索引的体系结构.......................................................................................................4

14.4  全文目录管理...................................................................................................................6

14.4.1  创建全文目录........................................................................................................6

14.4.2  查看与修改全文目录........................................................................................... 7

14.4.3  删除全文目录........................................................................................................8

14.5  全文索引管理...................................................................................................................9

14.5.1  创建全文索引的注意事项................................................................................... 9

14.5.2  创建全文索引........................................................................................................9

14.5.3  查看与修改全文索引......................................................................................... 13

14.5.4  启用和禁用全文索引......................................................................................... 15

14.5.5  删除全文索引......................................................................................................15

14.6  填充全文索引.........................................................................................................15

14.6.1  填充全文索引的方式......................................................................................... 15

14.6.2  填充全文索引......................................................................................................16

14.6.3  定时填充全文索引............................................................................................. 17

14.7  使用全文搜索查询.........................................................................................................21

14.7.1  使用 CONTAINS 搜索....................................................................................... 21

14.7.2  使用 FREETEXT 搜索....................................................................................... 27

14.7.3  使用 CONTAINSTABL E 搜索...........................................................................28

14.7.4  使用 FREETEXTTABL E 搜索...........................................................................31

14.7.5  搜索 image 字段..................................................................................................32

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

14.8.1  创建全文目录......................................................................................................33

14.8.2  更改全文目录属性............................................................................................. 34

14.8.3  创建全文索引......................................................................................................34

14.8.4  更改全文索引属性............................................................................................. 36

14.8.5  删除全文索引......................................................................................................37

14.8.6  删除全文目录......................................................................................................37

14.9  小结.................................................................................................................................38

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

1.前言

 

 

本章包括:

全文索引的介绍

 

全文索引中的术语

 

全文索引的体系结构

 

全文目录的管理

 

全文索引的管理

 

填充全文索引

 

使用全文搜索查询数据

 

在数据库中快速搜索数据使用索引可以提高搜索速度而索引一般是建立在数字型

 

或长度比较短的文本型字段上的,比如说编号、姓名等字段,如果建立在长度比较长的文本

 

型字段上新索引将会花销很多的时间在文章内容字段里用 lik e 语句搜索一个关键字 ,

 

当数据表里的内容很多时,这个时间可能会让人难以忍受。

 

SQL Server 中提供了一种名为全文索引的技术,可以大大提高从长字符串里搜索数

 

据的速度,在本章里,将会对全文索引进行详细的介绍。

 

 

14.1  的介绍

 

 

全文索引与普通的索引不同,普通的索引是以 B-tree 结构来维护的,而全文索引是一

 

种特殊类型的基于标记的功能性索引是由 Microsoft SQL Server 全文引擎服务创建和维护

 

的。

 

使用全文索引可以快速、灵活地为存储在 SQL Server 数据库中的文本数据创建基于关

 

键字查询的索引,与 lik e 语句不同lik e 语句的搜索是适用于字符模式的查询而全文

 

是根据特定语言的规则对词和短语的搜索,是针对语言的搜索。

 

在对大量的文本数据进行查询时文索引可以大大地提高查询的性能对于几百万

 

条记录的文本数据进行 lik e 查询可能要花几分钟才能返回结果使用全文索引则只要几秒

 

钟甚至更少的时间就可以返回结果了。

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

14.2  中常

 

 

由于全文索引中使用了较多的新的术语,在此先介绍这些术语:

 

l  全文索引:一种特殊的索引,能在给定的列中存储有关重要的词及位置的信息,

 

使用这些信息可以快速进行全文查询,搜索包括特定词或词组的行。

 

l  全文目录:全文目录是存储全文索引的地方,全文目录必须驻留在与 SQL Serve

 

r 实例相关联的本地硬盘上每个全文目录可用于满足数据库内的一个或多个表的

 

索引需求。

 

l  断字符与词干分析器字符与词干分析器都是用于对全文索引的数据进行语言

 

分析的言分析通常都会涉及到查找词的边界和组合动词两个方面中要查找

 

词的边界,也就是确定哪几个字符是,称之为断字。组合动词也就是词干分

 

,用于分析词根据语言的不同,语言分析规则也不尽相同由此可以为每个全

 

文索引列指定不同的语言。每种语言的断字符能够使得访问语言生成的词更为准

 

确。

 

l  标记:由断字符标识的词或字符串。

 

l  筛选器:用于从存储在 varbinary(max)image 列中的文件内提取指定的文本

 

类型的文本。当 varbinary(max)image 列中包含带有特定文件扩展名的文档时,

 

全文搜索会使用筛选器来解释二进制数据选器会从文档中提取文本化信息并用

 

于建立索引。

 

l  填充(爬网):创建维护全文索引的过程叫填充,也叫爬网。

 

l  干扰词:经常出现但又不是要搜索的词。为了精简全文索引,这些词通常会被

 

忽略。

 

 

14.3  的体结构

 

 

SQL Server 的全文索引是由 SQL Server FullText Search 服务来维护的该服务可以在

 

W indows 操作系统的【管理工具】à【服务】里找到,如图 14.1 所示,在此可以启动、停

 

止、暂停、恢复和重新启动该服务。只有 SQL Server FullText Search 服务在启动状态时,

 

才能使用全文索引。

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.1 SQL Server FullText Search 服务

 

SQL Server FullText Search 服务由两个部分组件支持一个是 Microsoft Full-Text Eng

 

ine for SQL ServerMSFTESQL),也就是 SQL Server 全文搜索引擎;另一个是 Microsoft

 

Full-Text Engine Filt er DeamonMSFTEFD ),也就是全文搜索引擎过滤器。

 

Microsoft Full-Text Engine for SQL Server 的作用是填充全文索引、管理全文索引和全

 

 

文目录帮助对 SQL Server 数据库中的数据表进行全文搜索Microsoft Full-Text Engine F

 

ilt er Deamon 包含筛选器议处理程序和断字符三个组件,其作用是负责从数据表中访问

 

和筛选数据以及进行断字和词干分析。其,筛选器的作用是从文档中提取文本信息,并

 

非文本信息和格式化信息(如换行符字体大小等信息)删然后生成文本字符串和属性

 

的对应,并将它们传递给索引引擎;协议处理程序用于从指定数据库中的表内访问数据

 

字符用于在查询或抓取的文档中确定字符边界位置。

 

全文索引组件负责对全文索引的初始填充以及当全文索引表中的数据被修改时的更新。

 

当全文填充(爬网)开始后,数据库引擎会将大量的数据存储到内存里,并通知 Microsoft

 

Full-Text Engine for SQL ServerMSFTESQL)开始进行索引。当 MSFTESQL 服务接到进

 

行索引的通知后,使用协议处理程序组件从内存中取得数据进行处理后生成全文索引MSF

 

TESQL 服务会将数据表中的某一列或几列中的字符和二进制数据编制成索引在对 varbin a

 

ry(max)image 列中的数据编制索引时筛选器会将基于为该数据指定的文件格式来提取

 

文本。在处理索引的过程中 MSFTESQL 服务通过断字符来将收集到的文本数据分隔成各个

 

单独的标记或关键字。这个过程就是全文索引的过程。

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

由于全文索引与普通的索引不同文索引并不是存储在数据表中是存储在全文目

 

录中,所以在使用全文索引来搜索数据时,其运行的流程和普通索引也不一样。

 

如图 14.2 所示,当 SQL Server 发出全文搜索的请求后,会将搜索的条件传递给全文搜

 

索引擎过滤器经过 MSFTEFD 处理后,将数据提供给 MSFTESQL再由 MSFTESQL 从全文

 

目录中找到符合要求的数据,再返回给 SQL Server 进行后续操作。这就是进行全文搜索的

 

过程。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.2 全文搜索流程

 

 

 

14.4  管理

 

 

在前面章节里提到文目录的作用是存储全文索引以要创建全文索引必须先创建

 

全文目录。

 

 

14.4.1  创建全文目录

 

 

创建全文目录的方法如下:

 

1)启动【SQL Server Management Studio 】,连接到本地默认实例,在【对象资源

 

管理器】窗口里,选择本地数据库实例à【数据库àNorthwindà【存储à【全文目录

 

2)右击【全文目录】,在弹出的快捷菜单里选择【新建全文目录】选项。

 

3)弹出如图 14.3 所示的【新建全文目录】对话框,在该对话框的【全文目录名称】

 

文本框内可以输入全文目录的名称目录位置本框内可以输入全文目录的存储路径 ,

 

单击其后按钮可以选择路径,如果不输入的话默认存储在Program Files\Micros o

 

ft SQL Server\MSSQL.1\MSSQL\FTData目录下;【文件组】下拉列表框里可以选择全文

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

目录所属的文件组;在【所有者文本框里可以输入全文目录的所有者【设置为默认

 

目录】复选框可以将此目录设置为全文目录的默认目录区分重音单选框用于指明目录

 

是否区分标注字符。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.3 【新建全文目录】对话框

 

4)设置完毕后单击【确定】按钮完成操作。

 

 

14.4.2  查看与修改全文目录

 

 

全文目录添加完毕之后可以在【对象资源管理器窗口【全文目录树下看到新建

 

的全文目录击该全文目录,或右击该全文目录弹出的快捷菜单里选属性】选项 ,

 

将会弹出如图 14.4 所示【全文目录属性】对话框,在该对话框里可以查看全文目录的属性

 

内容。

 

【全文目录属性】对话框里有三个标签:【常规选项卡里可以查看和修改全文目录

 

的设置;【表/视图】选项里可以查看和修改为全文目录分配的表和视图;【填充计划】选

 

项项里可以添加或修改确定何时填充或重新填充全文目录的计划。

 

 

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

在如图 14.4 所示的【全文目录属性】对话框里,可以看到全文目录所属的文件组、名

 

上次填充的时间项计数填充状态目录大小唯一键计数的内容这些内容是不能

 

修改的。可以修改项为:【默认目录】、【所有者】和【区分重音】三个选项内容。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.4 查看全文目录属性

 

【目录操作区域有三个单选按钮【无表示不执行优化目录、重新生成目

 

录和重新填充目录操作;选择【优化目录】选项将会优化目录的空间利用率提高搜索结果

 

相关排名的准确性,从而提高查询性能择【重新生成目录选项将会删除并重新生成全

 

文目录,如果对全文目录的属性进行了更改,则必须执行该操作,例如在本对话框中修改了

 

区分重音选择目录作区域会自动变成灰色统自动重新生成全文目录【重

 

新填充目录选项将会使用数据的最新更改来更新目录。修改完毕之后【确定按钮

 

完成操作。

 

 

14.4.3  删除全文目录

 

 

当全文目录不再需要使用时,可以将其删除,删除方式如下:

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

1)启动【SQL Server Management Studio 】,连接到本地默认实例,在【对象资源

 

管理器】窗口里,选择本地数据库实例à【数据库àNorthwindà【存储à【全文目录

 

2)右击要删除的全文目录名,在弹出的快捷菜单里选择【删除】选项。

 

3)在弹出的【对象删除】对话框中单击【确定】按钮完成操作。

 

如果要一次性删除多个全文目录,可以先【对象资源管理器】窗口中定位【全文目

 

,在【摘要对话框里选择多个全文目录然后单击鼠标右键在弹出的快捷菜单里

 

选择【删除】选项。在弹出的【对象删除】对话框中单击【确定】按钮完成操作。

 

 

14.5  管理

 

 

在创建完全文目录之后,可以动手创建全文索引了,下面将介绍如何创建、编辑和删除

 

全文索引。

 

 

14.5.1  创建全文索引的注意

 

 

在创建全文索引之前,先介绍创建全文索引要注意的事项:

 

l  全文索引是针对数据表的能对数据表创建全文索引能对数据库创建全文

 

索引。

 

l  在一个数据库中可以创建多个全文目录个全文目录都可以存储一个或多个全

 

文索引是每一个数据表只能够创建一个全文索引个全文索引中可以包含多

 

个字段。

 

l  要创建全文索引的数据表必须要有一个唯一的针对单列的非空索引,也就是说,

 

必须要有主键者是具备唯一性的非空索引且这个主键或具有唯一性的非空

 

索引只能是一个字段,不能是多字段的组合。

 

l  包含在全文索引里的字段只能是字符型的或 image 型的字段。

 

 

14.5.2  创建全文索引

 

 

下面以 Northwind 数据的文章表为例,介绍如何创建全文索引:

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

1)启动【SQL Server Management Studio 】,连接到本地默认实例,在【对象资源

 

管理器】窗口里,选择本地数据库实例à【数据库】àNorthwindà【表】à【文章】。

 

2【文章数据表在弹出的快捷菜单里选【全文索引à【定义全文索引

 

3弹出如图 14.5 【全文索引向导】对话框此对话框中显示的是全文索引

 

的介绍,单击【下一步】按钮。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.5 【全文索引向导】对话框

 

4弹出如图 14.6 所示【选择索引】对话框此时可以选择要创建全文索引的

 

表的唯一索引使用该索引作为全文索引的唯一索引。在【唯一索引下拉列表框里列出

 

该表中所有的唯一索引。在该对话框里选择唯一索引后,单击【下一步】按钮。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

14.6 【选择索引】对话框

 

5)弹出如图 14.7 所示【选择表列】对话框,此时可以选择要加入全文索引的字段。

 

在该对话框里可以选择一个或多个字段加入全文索引SQL Server 2005 可以对存储在 imag

 

e 类型的字段中的文件进行全文搜索。image 类型的字段中可以存入各种文件,但是 SQL S

 

erver 2005 只支持 WordExcelPowerPoint、网页和纯文本文件类型。如果要对 image

 

类型的字段里的文件进行全文搜索须还要有一个字符串类型的字段用于指明存储在 im a

 

ge 字段中的文件的扩展名如图 14.7 中的文件字段如果要对其创建全文索引必须还要

 

指定类型列。选择完毕后单击【下一步】按钮。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.7 【选择表列】对话框

 

6)弹出【选择更改跟踪】对话框,在该对话框里可以定义全文索引的更新方式,一

 

共有三种更新方式:

 

l  【自动】:选中此单选按钮后,当基础数据发生更改时,全文索引将自动更新;

 

l  【手动】:如果不希望基础数据发生更改时自动更新全文索引,请选中此单选按

 

。对基础数据的更改将保留下来不过,若要将更改应用到全文索引必须手动

 

启动或安排此进程;

 

l  【不跟踪更改】:如果不希望使用基础数据的更改对全文索引进行更新,请选中

 

此单选按钮。

 

设置完毕后单击【下一步】按钮。

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.8 【选择更改跟踪】对话框

 

7弹出如图 14.9 所示【选择目录】对话框在此可以选择全文索引所存储的

 

目录。如果没有要选择的全文目录,也可以在此新建一个全文目录。创建全文目录的方法与

 

 

 

上节中所说的一样。选择完毕后单击【下一步】按钮。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.9 【选择目录】对话框

 

8)弹出如图 14.10 所示的【定义填充计划】对话框,在此可以创建全文索引和全文

 

目录的填充计划,也可以单击【下一步】,在创建完全文索引后再创建填充计划。

 

 

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.10 【定义填充计划】对话框

 

9)弹出如图 14.11 所示的【全文索引向导说明】对话框,在该对话框里可以看到全

 

 

 

文索引要完成的工作说明果有不正确的设置以单上一步钮返回去重新设置 ,

 

如果完全正确则单击【完成】按钮完成操作。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.11 【全文索引向导说明】对话框

 

 

14.5.3  查看与修改全文索引

 

 

在创建完全文索引之后右击数据表,在弹出的快捷菜单里选【全文索引à【属性】

 

可以查看全文索引的设置,如图 14.12 所示。

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.12 【全文索引属性】常规信息对话框

 

在图 14.12 中可以看到全文索引的目前设置情况该对话框中可以修改是否启用全文

 

索引和全文索引的更改跟踪信息。单击【列】标打开如图 14.13 所示的全文索引的列信

 

 

 

息,在此可以修改全文索引所包含的列信息。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

14.13 【列】选项卡

 

 

 

14.5.4  启用和禁用全文索引

 

 

全文索引创建完毕之后,不会立即自动启用,所以需要手动启用全文索引。启动全文索

 

引的方法如下:

 

1)在【对象资源管理器】窗口里展开树形目录,定位到要启用全文索引的数据表。

 

2)右击要启用全文索引的数据表,在弹出的快捷菜单中选择【全文索引】à【启用

 

全文索引】。

 

如果要禁用全文索引,也可以采取以下的方法来禁用全文索引:

 

1)在【对象资源管理器】窗口里展开树形目录,定位到要启用全文索引的数据表。

 

2)右击要禁用全文索引的数据表,在弹出的快捷菜单中选择【全文索引】à【禁用

 

全文索引】。

 

 

14.5.5  删除全文索引

 

 

当全文索引不再使用时,可以将其删除,删除方法如下:

 

1)右击要删除全文索引的数据表,在弹出的快捷菜单里选择【全文索引】à【删除

 

全文索引】。

 

2)在弹出的【删除全文索引】对话框里单击【确定】按钮完成操作。

 

 

14.6  索引

 

 

填充全文索引实质上就是更新全文索引目的是让全文索引可能够反映最新的数据表

 

内容。

 

 

14.6.1  填充全文索引的方式

 

 

填充全文索引一共有三种方式:

 

 

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

l  完全填充全填充方式通常发生在首次填充全文目录或全文索引时前一节

 

中所说到的启用全文索引,就已经对全文索引进行了一次完全填充,以

 

以使用基于更改跟踪的填充和基于增量时间戳的填充来维护全文索引。

 

l  基于更改跟踪方式的填充:SQL Server 会记录设置了全文索引的数据表中修改

 

的行,这些记录存储在日志中,在某个适当时机时将这些更改填入到全文索引中。

 

l  基于增量时间戳方式的填充就是增量填充全文索引中更新上次填充之后

 

更新的行。增量填充要求索引表中必须有 timestamp 数据类型的字段,如果没有

 

该类型的字段无法执行增量填充统将会以完全填充的方式来取代增量填充

 

方式进行填充。

 

 

14.6.2  填充全文索引

 

 

由于填充全文索引有三种不同的方式以填充全文索引的方法也不相同果要以完

 

全填充或增量填充方式来填充全文索引只要右击全文索引所在的数据表弹出的快捷

 

菜单里选择【全文索引】à【启动完全填充】或【启动增量填充】选项即可。如图 14.14

 

示。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.14 填充全文索引

 

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

更改跟踪方式填充全文索引分为手动和自动两种方法默认情况下是自动填充

 

要更改为手动方式以右击全文索引所在的数据表弹出的快捷菜单里选全文索引 】

 

à【手动跟踪更改】选项,如图 14.14 所示。

 

选择完毕之后,SQL Server 会自动跟踪数据表中的数据更改情况,但并不将其更新到

 

全文索引中,只有在需要将这些更新反应到全文索引上时,右击全文索引所在的数据表

 

弹出的快捷菜单里选择【全文索引】à【应用跟踪的更改】选项后,才会将更新反应到全文

 

索引上。

 

如果在图 14.14 所示界面里选择了【自动跟踪更改】选项,则由 SQL Server 自动将记

 

录的数据表的更改更新到全文索引中,不再需要人工进行填充。

 

如果在数据库中有多个数据表创建了全文索引以使用重新生成索引目录的方法将所

 

有的全文索引进行完全填充,其方法如下:

 

1)在【对象资源管理器】窗口里展开树形目录,定位到【服务器】à【数据库】à

 

Northwind à【存储】à【全文目录】。

 

2)右击【全文目录】,在弹出的快捷菜单中选择【全部重新生成】选项。

 

3)在弹出的【重新生成所有全文目录】对话框里单击【确定】按钮完成操作。

 

 

14.6.3  定时填充全文索引

 

 

SQL Server 2005 以为填充全文索引设置计划系统自动定时填充全文索引 ,

 

其方法如下:

 

1)右击全文索引所在的数据表,在弹出的快捷菜单里选择【全文索引】à  

 

来查看全文索引的设置,如图 14.12 所示,在该图中选择【计划】选项。

 

2弹出如图 14.15 所示全文索引填充计划对话框在该对话框中单击【新建按钮。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.15 全文索引填充计划对话框

 

3)弹出如图 14.16 所示的【新建全文索引表计划】对话框。

 

l  在【名称】文本框里可以输入该计划名称。

 

l  【计划类型下拉列表框里可选项有SQL Server 代理启动时自动启动也就是在 S

 

QL Server 代理启动时自动填充全文索引CPU 空闲时启动也就是当 CPU 空闲时填充全

 

文索引;执行一次:在指定时间时填充全文索引,只填充一次重复执行:可以设定多

 

次填充全文索引的方式。

 

l  如果选中【已启用】复选框,则启用该填充全文索引的计划。

 

l  在【执行一次】区域里,可以设置计划类型为执行一次的执行时间,在到达该时间时,

 

自动填充全文索引。

 

l  【频率】区域里可以设置计划类型重复执行的执行频率在【执行下拉列表框

 

里可选择项为每天每周每月,分别用于指定每天、每周和每月执行填充计划的频

 

率。

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

l  在【持续时间域里可以设置该计划的开始日期与结束日期,其中结束日期可以设置为

 

无结束日期,也就是永远执行下去。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.16 【新建全文索引表计划】对话框

 

4)设置完毕后单击【确定】按钮完成计划设计,返回如图 14.17 所示对话框。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.17 全文索引填充计划对话框

 

5)在如图 14.17 所示对话框里,可以选择全文索引填充计划所要执行的填充方式,

 

设置完毕后单击【确定】按钮完成操作。

 

注意:如果单击【确定】按钮之后出现如图 14.18 所示的失败对话框,请先安装 SQL

 

Server 2005 SP1(下载地址为http://www.m icrosoft.com/downloads/det ails.aspx?displa

 

ylang=zh-cn&

 

Family ID=cb6c71ea-d649-47ff-9176-e7cac58fd4bc),然后再安装版本为 9.0.2153 SQL

 

Server 2005 累积修补程序下载地址为http://support.microsoft.com/kb/918222/zh-c

 

n)。

 

 

 

 

 

 

 

 

 

 

14.18 添加计划失败对话框

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

使用类似的方法也可以定时填充全文目录:

 

1)右击全文目录名,在弹出的快捷菜单里选择【属性】选项。

 

2)在弹出的如图 14.4 所示的【全文目录属性】对话框里选择【填充计划】选项。

 

3)弹出与 14-15 所示的填充计划对话框,其添加计划的步骤与创建全文索引的填充

 

计划几乎相同,在此就不再赘述了。

 

 

14.7  使搜索

 

 

设置完全文索引并填充完毕之后可以通过全文搜索来查询数据了使用全文搜索来

 

查询数据所用到的 T-SQL 语句也是 SELECT 语句是在设置查询条件时和前面所说过的 S

 

ELECT 语句的查询条件设置有些不同T-SQL 语言中以在 SELECT 语句的 WHERE

 

句里设置全文搜索的查询条件,也可以在 FROM 子句里设置查询条件,此时将返回结果作

 

FROM 子句中的表格来使用。

 

如果要在 WHERE 子句里设置全文搜索的查询条件以使用 CONTAINS FREETEXT

 

两个谓词;如果要在 FROM 子句里设置全文搜索的查询条件 ,可以使用 CONTAINS TABLE

 

FREETEXTTABLE 两个行集值函数。

 

 

14.7.1  使CONTAINS 搜索

 

 

CONTAINS 用于 SELECT 语句的 WHERE 子句中,可以支持使用复杂的语法在字符列中

 

搜索词、子句、衍生字或位置相近的字符串。使用 CONTAINS 谓词可以在数据表中使用以

 

下五种形式搜索数据:

 

l  简单词就是可以搜索一个或多个特定的词或短语可以包括一个或多个字

 

,中间没有空格或标点。短语可以是由空格分隔的多个词组成,但词之间可以有

 

标点也可以没标点。

 

l  派生词:也就是可以搜索特定词的变形,一般是指英语中的单词,其有过去式、

 

现在式、将来式等不同的形式。派生词是指可以包含该单词的所有其他形式。

 

l  前缀词:也就是可以搜索指定文本开头的词或短语般也用于英文单词中

 

以指定一个英文单词的前几个字母来作为搜索条件。

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

l  加权词:也就是可以给多个搜索条件加上权值,加权值越高的记录排在越前面。

 

l  邻近词:也就是可以搜索与另一个词或短语相邻近的词或短语。

 

下面分别介绍如何使用这些不同的方式来搜索数据。

14.7.1.1  CONTAINS 的语法

CONTAINS 的语法代码如下:

 

CONTAINS

 

( { column_name | (column_list ) | * }                                                    --列名

 

, '< contains_search_condition >'                                             --搜索语

 

 

[ , LANGUAGE language_term ]                                --发出查询时所用

 

的语言

 

)

 

 

 

 

< contains_search_condition > ::=

 

{ < simple_term >                                                          --简单词搜索方式

 

| < prefix_term >                                                           --前缀词搜索方式

 

| < generation_term >                                                       --派生词搜索方式

 

| < proximity_term >                                                        --邻近词搜索方式

 

| < weight ed_term >                                                        --权重词搜索方式

 

}

 

| { ( < contains_search_condition > )                                                --搜索语句

 

[ { AND | & | AND NOT | & ! | OR | | } ]                                                     --条件

 

< contains_search_condition > [ ...n ]                                               --搜索语句

 

}

 

< simple_term > ::=                                                       --简单词搜索方式语法块

 

word | " phrase "

 

< prefix term > ::=                                                        --前缀词搜索方式语法块

 

{ "word * " | "phrase *" }

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

< generation_term > ::=                                                   --派生词搜索方式语法块

 

FORMSOF (

 

{ INFLECTIONAL                                                    --指定词干分析器

 

| THESAURUS } ,                                                      --指定同义词库

 

< simple_term > [ ,...n ] )

 

< proximity_term > ::=                                                     --邻近词搜索方式语法块

 

{ < simple_term > | < prefix_term > }

 

{ { NEAR | ~ }

 

{ < simple_term > | < prefix_term > }

 

} [ ...n ]

 

< weight ed_term > ::=                                                     --权重词搜索方式语法块

 

ISABOUT

 

( { {

 

< simple_ term >

 

| < prefix_term >

 

| < generation_term >

 

| < proximity_term >

 

}

 

[ WEIGHT ( weight_value ) ]                                                         --指定权重

 

} [ ,...n ]

 

)

 

其中常用的参数为:

 

l  column_name:字段名

 

l  column_list :字段名列表

 

l  *:所有字段

 

l  LANGUAGE language_term :用于设置查询时所用的语言。例如在 image 字段

 

里可能会存储了多种语言的文档参数允许用户指定搜索使用的语言而提高

 

匹配率。

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

l  INFLECTIONAL 用于指定使用与语言相关的词干分析器词干分析器用于根据

 

每种具体语言的判断词干。

 

l  THESAURUS:用于指定同义词库。

 

14.7.1.2  简单词的搜索方式

 

简单词的搜索方式就是搜索一个或多个特定的词或短语。

 

例一、搜索文章表的标题中含有上海的记录,其代码如下:

 

SELECT * FROM 文章

 

WHERE CONTAINS( 标题,'上海')

 

例二、搜索文章表的内容中含有上海广州的记录,其代码如下:

 

SELECT * FROM 文章

 

WHERE CONTAINS( 内容,' "上海" OR "广州"')

 

注意例二与例一的不同,在 CONTAINS 谓词的第二个参数里,将上海OR 广州””

 

为一个字符串传递给 CONTAINS 。使用以下代码将会出错:

 

 

SELECT * FROM 文章

 

WHERE CONTAINS( 内容,' 上海OR  广州')

 

14.7.1.3  派生词的搜索方式

 

派生词的搜索方式主要用在英文当中,因为英文单词中含有现在式、过去式、将来式、

 

单复数等不同的形式使派生词的搜索方式可以将字段中包括该单词的所有形式的记录都搜

 

索出来。例如使用派生词方式搜索包含单词 download 的记录,则会把包含 downloaddow

 

nloadin g 等派生词的记录都搜索出来。

 

例三、搜索文章表中内容中含有 download 及其派生词的记录,其代码如下:

 

SELECT * FROM 文章

 

WHERE CONTAINS( 内容,'FORMSOF(INFLEC TIONAL,download)')

 

注意 CONTAINS 谓词的不同处,运行结果如图 14.19 所示。

 

 

 

 

 

 

14.19 运行结果

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

在图 14.19 中可以看到只查询到一条记录,而并未将 download 的派生词也搜索进来,

 

这是因为从一开始设置全文索引时,所采用的是数据库默认的断字符语言,即简体中文

 

在中文中没有派生词以使用派生词方式搜索数据是起不到其作用的时可以通过修改

 

全文索引的断字符语言来达到搜索效果。修改方式如下:

 

1)右击全文索引所在的数据表,在弹出的快捷菜单中选择【全文索引】à  

 

弹出如图 14.12 所示【全文索引属性】对话框。

 

2)在【全文索引属性】对话框里选择【列】选项,弹出如图 14.20 所示对话框,修

 

改【内容】字段的【断字符语言】为English

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.20 修改断字符语言

 

3)单击【确定】按钮完成操作。

 

再次运行例三中的代码,其运行结果如图 14.21 所示。

 

 

 

 

 

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

14.21 正确的运行结果

 

14.7.1.4  前缀词的搜索方式

 

前缀词的搜索方式主要也是用在搜索英文中例如搜索以do”开头的单词则可以将 d

 

octordocumentdownload 等单词都搜索出来。

 

例四、搜索文章表中内容中含有do开头的单词的记录,其代码如下:

 

SELECT * FROM 文章

 

WHERE CONTAINS( 内容,' "do*" ')

 

此方式有点类似与 lik e 子句的通配符方式,但只能使用*,并且只能放在英文字母之

 

后,如*do*do*都是错误的表达方式。

 

14.7.1.5  加权词的搜索方式

 

当以多个字符串作为搜索条件搜索记录时以为不同的字符串加上一个加权值

 

加权值是介于 0 1 之间的数值,加权值越高的记录排在越前面。

 

例五、搜索文章表中内容中含有download 上海山西的记录,并为不同的条件

 

加上加权值,其代码如下:

 

SELECT * FROM 文章

 

WHERE CONTAINS( 内容,

 

'ISABOUT ("download" weight(0.9),

 

"上海"  weight(0.6),

 

"山西"  weight(0.5))')

 

 

SELECT * FROM 文章

 

WHERE CONTAINS( 内容,

 

'ISABOUT (download weight(0.9),

 

上海 weight(0.6),

 

山西 weight(0.5))')

 

事实上在该 SELECT 语句的返回结果集里,并没有按加权值的大小来排序因为 WEIG

 

HT 不影响 CONTAINS 查询的结果,只会影响 CONTAINS TABLE 查询中的排序。

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

说明:使用本例时最好将内容字段的断字符语言改回简体中文,否则会影响中文

 

的搜索结果。

 

14.7.1.6  邻近词的搜索方式

 

邻近词的搜索方式可以搜索记录中位置相近的两个字符,例如要搜索文章标题为教育

 

部拟取消教师资格终身制实行定期认证的文章整的标题名记不清楚了教育部

 

资格,则可以以邻近词的搜索方式进行查询。

 

例六、搜索文章内容中与教育部表示相关的记录,其代码如下:

 

SELECT * FROM 文章

 

WHERE CONTAINS( 内容,' "教育部" NEAR "表示"')

 

 

14.7.2  使FR EETEX T 搜索

 

 

FREETEXT 搜索方式与 CONTAINS 搜索方式相比,其搜索结果表现都十分不精确,因

 

FREETEXT 的搜索方式是将一个句子中的每个单字拆分开进行搜索的:如果使用 C

 

ONTAINS 搜索方式搜索条件为教育部的记录,那么搜索出来的将是记录里包含教育部

 

三个字符串的记录。如果使用 FREETEXT 搜索方式搜索条件为教育部的记录,那么搜索出

 

来的将是记录里包含的记录。如果搜索的是英文字符串SQL Server 200

 

5,则拆分为SQLServer2005来进行搜索,只要满足其中一个条件都算搜索成功。

 

FREETEXT 的语法代码为:

 

FREETEXT ( { column_name | (column_list ) | * }

 

, 'freetext_string' [ , LANGUAGE language_term ] )

 

其中:

 

l  column_name:为字段名。

 

l  column_list :为字段列表。

 

l  *:代码所有字段。

 

l  'freetext_string':搜索的字符串。

 

l  LANGUAGE language_term :用于单词断字词干分析、同义词库查询以及干扰

 

词删除的特定的语言。

 

FREETEXT 的搜索方式没有 CONTAINS 复杂,下面举例说明:

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

例七、用 CONTAINS FREETEXT 两种方式来搜索教育部字符串,其代码如下:

 

SELECT * FROM 文章

 

WHERE FREETEXT(内容,'教育部')

 

SELECT * FROM 文章

 

WHERE CONTAINS (内容,'教育部')

 

其运行结果如图 14.22 所示,使用 CONTAINS 查询结果要比使用 FREETEXT 的查询结

 

 

果记录数要多得多。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.22 CONTAINS FREETEXT 的查询结果

 

 

14.7.3  使CONTAINSTA BLE 搜索

 

 

CONTAINS TABLE 函数与 CONTAINS 谓词类似,其可以返回符合条件的多条记录,但

 

是返回的记录是作为数据表出现在 SELECT 语句的 FROM 子句中个数据表里只包含两个

 

字段一个字段名为KEY该字段显示的是全文索引的唯一索引键的内容也就是图 14.6

 

所示界面中所创建的索引列;另一个字段名为RANK,该字段是排名值字段,其排名值是

 

由系统依查询符合的程度自动生成的。CONTAINS TABLE 的语法代码为:

 

CONTAINS TABLE ( table , { column_name | (column_list ) | * } , ' < contains_searc

 

h_condit ion > '

 

[ , LANGUAGE language_term]

 

[ ,top_n_by_rank ]

 

)

 

< contains_search_condition > ::=

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

{ < simple_term >

 

| < prefix_term >

 

| < generation_term >

 

| < proximity_term >

 

|  < weight ed_term >

 

}

 

| { ( < contains_search_condition > )

 

{ { AND | & } | { AND NOT | &! } | { OR | | } }

 

< contains_search_condition > [ ...n ]

 

}

 

< simple_term > ::=

 

word | " phrase "

 

< prefix term > ::=

 

{ "word * " | "phrase *" }

 

< generation_term > ::=

 

FORMSOF ( { INFLECTIONAL | THESAURUS } , < simple_term > [ ,...n ] )

 

< proximity_term > ::=

 

{ < simple_term > | < prefix_term > }

 

{ { NEAR | ~ } { < simple_ term > | < prefix_term > } } [ ...n ]

 

< weight ed_term > ::=

 

ISABOUT

 

( { {

 

< simple_ term >

 

| < prefix_term >

 

| < generation_term >

 

| < proximity_term >

 

}

 

[ WEIGHT ( weight_value ) ]

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

} [ ,...n ]

 

)

 

从以上代码可以看得出,CONTAINS TABLE CONTAINS 的搜索条件一样分为五类,

 

其形式也几乎一样,只是增加了 table top_n_by_rank 两个参数:

 

l  table:全文索引所在的数据表名。

 

l  top_n_by_rank:返回的记录数,相当于 SELECT 语句中的 top n

 

下面举几个例子说明 CONTAINS TABLE CONTAINS 在用法上不同的地方。

 

例八、查看文章表中内容含有教育部的记录的编号,其代码如下:

 

SELECT * FROM

 

CONTAINS TABLE( 文章,内容,'教育部') as table1

 

在本例中可以看到CONTAINS TABLE 返回的结果是作为数据表的形式出现在 FROM

 

句中。其运行结果如图 14.23 所示,查询的结果也就是 CONTAINS TABLE 返回的数据表的

 

结果,只有两个字段。

 

 

 

 

 

 

 

 

 

14.23 例八的运行结果

 

例九看文章表中内容含有教育部表示的前十条记录按查询符合程度排序 ,

 

其代码如下:

 

SELECT * FROM 文章 JOIN

 

CONTAINS TABLE( 文章,内容,' "教育部" NEAR "表示" ',10) as table1

 

ON 文章.编号= table1.[KEY]

 

ORDER BY table1.RANK DESC

 

其运行结果如图 14.24 所示,在本例中,将 CONTAINS TABLE 函数返回的数据表与文

 

章表 JOIN 起来进行联合查询,就好像一个真实的数据表一样由于 KEY 是关键字,所

 

本例当中用方括号将 KEY 括起来。

 

 

 

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

14.24 例九的运行结果

 

例十、搜索文章表中内容中含有download 上海山西的记录,并为不同的条件

 

加上加权值,然后按权值排序。其代码如下:

 

SELECT * FROM 文章 JOIN

 

CONTAINS TABLE( 文章,内容,

 

'ISABOUT ("download" weight(0.9),

 

"上海"  weight(0.6),

 

 

"山西"  weight(0.1))') AS TABLE1

 

ON 文章.编号 = TABLE1.[KEY]

 

ORDER BY TABLE1.RANK DESC

 

其运行结果如图 14.25 所示RANK 字段是依符合程度生成的数据再加上权值后的结 

 

 

 

 

 

 

 

14.25 例十的运行结果

 

 

14.7.4  使FR EETEX TTABLE 搜索

 

 

CONTAINS TABLE   FREETEXTTABLE 函数也是返回拥有 KEY RANK 两个字段

 

的表,该表可以和数据库中的数据表一样使用。FREETEXTTABLE 的语法代码如下所示:

 

FREETEXTTABLE (table , { column_name | (column_list ) | * }

 

, 'freetext_string'

 

[ ,LANGUAGE language_term ]

 

[ ,top_n_by_rank ] )

 

由以上代码可以看出 FREETEXTTABLE 函数与 FREETEXT 谓词的语法代码相似是多

 

table top_n_by_rank 两个参数。

 

例十一、查看文章表中内容字段含有教育部的前十条记录,其代码如下:

 

SELECT 文章.内容,TABLE1.* FROM 文章 JOIN

 

FREETEXTTABLE(文章,内容,'教育部',8) AS TABLE1

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

ON 文章.编号= TABLE1.[KEY]

 

运行结果如图 14.26 所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

14.26 例十一的运行结果

 

 

 

14.7.5  image 字段

 

 

SQL Server 2005 image 类型的字段里,不仅仅是可以存储图形文件,还可以存

 

储如可执行文件、音乐文件、文本文件等众多文件类型SQL Server 2005 支持对存储在 im

 

age 类型的字段里的一些文件的内容进行全文搜索在创建全文索引时必须指明存储在 im

 

age 字段里的文件的类型。如图 14.7 所示。

 

SQL Server 2005 支持对存储在 image 中的纯文本文件网页文件、Word 文件Excel

 

文件和 PowerPoint 文件的内容进行查询,其扩展名字段必须分别为 txthtmdocxls

 

ppt。全文索引创建完毕后,对 image 字段里的文件内容进行查询的方法与其他字段的查询

 

方法是一样的:

 

例十二、查询存储在文章表的文件字段里的内容包含数据库的文件,其代码如下:

 

SELECT 编号,标题,文件,扩展名 FROM 文章

 

WHERE CONTAINS( 文件,'数据库')

 

 

14.8  2005 全文相关 T-SQL 语句

 

 

SQL Server 2005 以前的版本中,创建与管理全文目录文索引主要是使用存储过

 

程来完成。从 SQL Server 2005 开始新增加了一些与全文索引相关的 T-SQL 语句,可以用

 

来创建与管理全文目录和全文索引。

 

 

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

14.8.1  创建全文目录

 

 

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

 

CREATE FULLTEXT CATALOG catalog_name

 

[ON FILEGROUP filegroup ]

 

[IN PATH 'rootpath']

 

[W ITH <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 语句代码如下:

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

ALTER FULLTEXT CATALOG catalog_name

 

{ REBUILD [ W ITH ACCENT_SENSITIVITY = { ON | OFF } ]

 

| REORGANIZE

 

| AS DEFAULT

 

}

 

其中参数说明如下:

 

l  catalog_name:全文目录名称

 

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

 

l  W ITH 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 fullt ext_catalog_name]

 

[W ITH

 

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

 

]

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

其中参数说明如下:

 

l  table_name:数据表名。

 

l  column_name全文索引中包括的一列或多列的名称只能对类型为 charvar

 

charncharnvarchartextntextimage xml varbinary 的列进行全文索

 

引。

 

l  TYPE COLUMN type_column_name:用于存储 column_name 的文档类型的数

 

据表中的列名。

 

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

 

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

 

l  ON fullt ext_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 }

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

| ADD ( column_name

 

[ TYPE COLUMN type_column_name ]

 

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

 

[ W ITH NO POPULATION ]

 

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

 

[W ITH 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  W ITH NO POPULATION :指定添加过删除全文索引列之后不填充全文索引。

 

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

 

l  STARTPOPULATION:开始填充全文索引。

 

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

 

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

 

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

 

处理。

 

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

 

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

 

ALTER FULLTEXT INDEX ON 文章

 

DISABLE

 

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

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

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 谓词不同,全文查询将根据特定语言的规则对词和短语

 

进行操作,从而针对此数据执行语言搜索。

 

 

 

 

 

深圳三原色设计整理                                                   www.szr gb.net


 

MS SQL 2005 索引相关知识                                      http://blog.s zr gb.net

 

 

全文索引是由 SQL Server FullText Search 服务来维护的,必须选启动该服务才能使用

 

全文索引。填充全文索引有三种方式:完全填充、增量填充和更改跟踪。

 

在全文索引中概念与术语比较多全文索引、全文目录字符干分析器、标记 、

 

筛选器填充、干扰词等了解怎么创建全文目录怎么创建全文索引怎么进行全文索引

 

的填充,怎么使用调度让全文索引自动填充。

 

使用 CONTAINS FREETEXT 两个谓词和 CONTAINS TABLE FREETEXTTABLE 两个行

 

集值函数可以用来进行全文搜索其中 CONTAINS FREETEXT 用在 WHERE 子句中CON

 

TAINS TABLE FREETEXTTABLE 用在 FROM 子句中。CONTAINS 搜索有简单词、派生词、

 

前缀词加权词和邻近词五种搜索方式FREETEXT 只有一种搜索方式但是其将一个句子

 

中的每个单字拆分开进行搜索。

 

SQL Server 2005 可以对存储在 image 类型字段里的文件进行全文搜索搜索的

 

是必须要有一个字段指明 image 类型字段里存储的文件是什么类型。当为 image 类型字段

 

设置好全文索引后,可以像其他字段一样地进行全文搜索。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(请您对文章做出评价)
« 上一篇:网站整合discuz!nt论坛 -从论坛同步到网站的应用-同步注册/登录/退出/修改登录密码

posted @ 2010-09-21 19:13 glaivelee 阅读(15) 评论(0) 编辑 收藏 所属分类: DataBase-SQL