SQL Server 2000 的Standard Edition 和Enterprise Edition 版本提供了对表数据中字符串的复杂检索功能---全文检索(Full-Text Searches)。此功能需要在安装时通过自定义安装选项来添加。10.7.1 全文索引和目录全文检索是通过使用全文索引(Full-Text Index)来实现的。一个全文索引中存储了表的数据中有确切含义的字符串以及其在表的列中的位置等信息。全文检索就是利用全文索引中的信息查找含有特定字符串的数据行。全文索引包含在全文索引目录中(Full-Text Catalogs),通常是由同一数据库中的一个或多个表的全文索引构成一个全文索引目录。一个表只能有一个全文索引,因此每个有全文索引的表只隶属于一个全文索引目录。一个数据库可以包含一个或多个全文索引目录,但一个全文索引目录也只能隶属于一个数据库。全文索引目录和全文索引尽管是由SQL Server 来管理,但是并不存放在数据库文件中,而是与Microsoft Search 服务相关的操作系统文件。在使用全文索引查询时,SQL Server 将检索条件发送给Microsoft Search 服务。MicrosoftSearch 服务将找出所有符合全文检索条件的值,并将它们返送给SQL Server SQL Server就根据这些值来决定将处理表的哪些数据行。因此,必须启动Microsoft Search 服务才能使SQL Server 具有全文检索的功能。启动Microsoft Search 服务的方法有两种:(1) 用Enterprise Manager 启动在Enterprise Manager 的Support Services 目录树文件夹中用右键单击“Full-TextSearch”,从快捷菜单中选择“Start”项,即可启动。启动后如图10-1 所示。
(2) 用操作系统控制面板中的服务管理程序启动在Win2000 Server 和Windows NT 确认中都可以从控制面板的“管理工具Administrative Tools”下的“服务”界面中右键单击所要启动的服务“Microsoft Search”,从快捷菜单中选择“启动”选项,就会启动Microsoft Search 服务,启动后画面如图10-2所示。10.7.2 创建全文索引目录在企业管理器中创建全文索引目录的步骤如下:(1) 在企业管理器的目录树中选择要创建全文索引目录的数据库,将其展开,右键单击“Full-Text Catalogs” 对象从快捷菜单中选取“New Full-Text Catalogs”,则会出现如图10-3 所示的新建全文索引目录对话框。(2) 在图10-3 所示的对话框中输入要创建的全文索引目录名称和文件存放位置SQLServer 默认的存放目录是“安装目录\MSSQL\FTDATA”,在此目录下将为每个全文索引目录单独创建一个目录,目录名称与图10-3 中指定的名称不同,是由系统生成的。单击“Schedules” 页框,则会出现如图10-4 所示的全文索引目录计划对话框。(3) 在图10-4 中可以创建、编辑全文索引目录执行计划。单击“确定”按钮,则创建全文索引目录。图10-4 创建全文索引目录计划对话框10.7.3 创建全文索引创建全文索引的步骤如下:(1) 在企业管理器中选择要创建全文索引的数据库,或表单击右键,从快捷菜单中选择“New Full-Text Indexes”, 则会出现如图10-5 所示的全文索引创建向导界面。(2) 单击“下一步”按钮,出现如图10-6 所示的选择要创建全文索引的表对话框。(3) 单击“下一步”按钮,出现如图10-7 所示的选择表中的惟一索引对话框。(4) 单击“下一步”按钮,出现如图10-8 所示的选择组成索引的列的对话框。(5) 单击“下一步”按钮,出现如图10-9 所示的选择或新建全文索引目录对话框。(6) 单击“下一步”按钮,出现如图10-10 所示的选择或新建编辑全文索引目录。执行计划或表计划对话框。单击“New Catalog Schedule” 按钮,则出现如图10-11 所示的新建全文索引目录执行计划对话框。其它编辑、新建执行计划对话框与此类似。图10-8 选择组建全文索引的列的对话框 图10-11 新建全文索引目录执行计划对话框(7) 单击“下一步”按钮,出现如图10-12 所示的结束全文索引创建向导对话框。单击“完成”按钮,则SQL Server 开始在后台运行程序,定义全文索引,程序完成后显示如图10-13 所示的定义全文索引成功对话框。此对话框告诉用户全文索引已经定义,但是还没有植入键值。(8) 单击“OK” 按钮。在企业管理器中选取所创建的全文索引所在的全文索引目录,单击右键,从快捷菜单中选取“Start Full Population” 选项,完成全文索引的创建过程。注意:全文索引与一般的索引不同,它不会随着数据的更新而更新,因此必须经常或使用执行计划去更新它,其更新会占用许多系统资源和时间。图10-13 定义全文索引成功对话框10.7.4 全文检索查询在一个表中创建了全文索引后,才可以对表中的数据进行全文检索。进行全文检索需要在SELECT 命令的WHERE 字句中使用两个Transact-SQL 谓词:CONTAINS 和FRETEXT。(1) CONTAINSCONTAINS 谓词的语法如下CONTAINS ( { column_name | * } , '< contains_search_condition >' )< contains_search_condition > ::={ < simple_term >| < prefix_term >| < generation_term >| < proximity_term >| < weighted_term >}| { ( < contains_search_condition > ){ AND | AND NOT | OR } < contains_search_condition > [ ...n ]}
其含义是检索列中包含有符合< contains_search_condition >检索条件的信息。其中“column_name” 必须是包含在全文索引中的列,“*” 表示检索条件应用到所有包含在全文索引中的列上。CONTAINS 谓词的含义与LIKE 谓词相似,但CONTAINS 谓词的功能更强大,支持更多的查询方,式且对大小写不敏感。
本章小结本章的大部分内容都在讲述SELECT 语句的应用。精通SELECT 语句等于攻克了SQL语言的半壁江山。如果再能将下一章“数据库更新”中的语句熟练运用,那么就基本掌握了SQL 语言。