数据库程序设计——SQLServer2000数据库程序设计第1章SQLServer概述第2章创建和管理数据库第3章创建数据类型和表第4章实现数据完整性第5章Transact-SQL介绍第6章使用Transact-SQL查询工具第7章检索数据第8章数据分组与汇总第9章多表联接第10章子查询第11章修改数据第12章全文索引查询第13章规划索引第14章创建和维护索引第15章实现视图第16章实现存储过程第17章实现用户定义函数第18章实现触发器第19章多服务器编程第20章优化查询性能第21章分析查询第22章管理事务和锁第12章全文索引查询MicrosoftSearch服务介绍MicrosoftSearch服务组件获取全文索引的信息编写全文查询推荐操作MicrosoftSearch服务介绍在SQLServer中提供基于文本的非结构数据搜索基于文本数据,能够查询词和词组比LIKE操作符和通配符功能更强主要用于各种搜索引擎(网站)含MicrosoftSearch服务组件的其他微软产品MicrosoftIndexingServiceMicrosoftExchange2000MicrosoftCommerceServer12.1MicrosoftSearch服务介绍第12章全文索引查询MicrosoftSearch服务介绍MicrosoftSearch服务组件获取全文索引的信息编写全文查询推荐操作MicrosoftSearch服务组件MicrosoftSearch服务结构全文索引跟踪并搜索一个表中有意义的词语需要惟一键列或主键全文检索目录是全文索引的集合MicrosoftSearch服务功能为具有全文索引的表创建和维护全文索引处理全文搜索查询12.2MicrosoftSearch服务组件注意事项一个表只能有一个全文本检索。被检索的表必须有单列的唯一索引。全文本的索引存储在文件系统中,而非数据库中。更新全文本索引的过程比常规索引要耗时,而且也不象常规索引那样可以由数据库系统立即更新。全文本索引包含在全文本目录(Full-TextCatalog)中,每个数据库可以包含一个或多个目录,但一个目录不能属于多个数据库。全文本检索只能在真正的表上创建,不能是视图,系统表,临时表。全文本检索会忽略某些噪音字或者叫干扰词(noisewords),比如英文的a,the,and,中文的'和','是'等等。如果在查询中包含noisewords,就会引发错误,在应用程序中应去除这些noisewords。第12章全文索引查询MicrosoftSearch服务介绍MicrosoftSearch服务组件获取全文索引的信息编写全文查询推荐操作配置全文搜索功能在进行全文检索之前,启动全文检索服务。方法A:在企业管理器中打开“支持服务文件夹”,在“全文检索”的右键菜单中选择启动。方法B:在SQLServer服务管理器的Services下拉列表中选择MicrosoftSearch,并单击Start/Continue按钮。方法C:使用netstartmssearch的命令行方式。方法D:execsp_fulltext_database'enable'建立全文索引在进行全文检索之前,必须先建立和填充数据库全文索引。在进行全文检索之前,必须先建立和填充数据库全文索引。为了支持全文索引操作,SQLServer新增了一些存储过程和Transact-SQL语句。使用这些存储过程创建全文索引的具体步骤如下(括号内为调用的存储过程名称):1.启动数据库的全文处理功能(sp_fulltext_database);;2.建立全文检索目录(sp_fulltext_catalog);使用的全文目录的命名规则是:SQL+dbid+catalogID目录ID从00005开始,并且每新建一个目录就递增1。3.在全文检索目录中注册需要全文索引的表(sp_fulltext_table);4.指出表中需要全文检索的列名(sp_fulltext_column);;5.为表创建全文索引(sp_fulltext_table);;6.填充全文检索目录(sp_fulltext_catalog)。获取全文索引的信息使用系统存储过程sp_help_fulltext_catalogs返回全文索引表的ID、名称、根目录、状态和数目sp_help_fulltext_tables返回可以进行全文索引的表的列表sp_help_fulltext_columns返回可以进行全文索引的表的列使用Transact-SQL函数使用Transact-SQL来获取全文属性的值。12.3获取全文索引的信息USEnorthwindSELECTDATABASEPROPERTY('Northwind','IsFullTextEnabled')GO第12章全文索引查询MicrosoftSearch服务介绍MicrosoftSearch服务组件获取全文索引的信息编写全文查询推荐操作编写全文查询CONTAINS谓词FREETEXT谓词CONTAINSTABLE和FREETEXTTABLE函数使用全文关键字12.4编写全文查询CONTAINS谓词CONTAINS谓词支持合成语法来搜索基于字符的列一个指定词的词形变换形式以指定字母开始的词或词组一个挨着其他词或词组的词或词组一个或多个指定的词或词组带有权值的词或词组12.4.1CONTAINS谓词SELECTplant_id,common_name,priceFROMplantsWHERECONTAINS(*,'EnglishThyme')GO示例FREETEXT谓词使用FREETEXT谓词,可以输入任何词或词组,甚至一个句子比CONTAINS谓词精确性要差12.4.2FREETEXT谓词SELECT*FROMnews_tableWHEREFREETEXT(description,'TheFultonCountyGrandJurysaidFridayaninvestigationofAtlanta‘srecentprimaryelectionproducednoevidencethatanyirregularitiestookplace.')GOCONTAINSTABLE和FREETEXTTABLE函数使用CONTAINSTABLE和FREETEXTTABLE函数返回一个表,必须在FROM子句中指定返回包含了全文关键值的列top_n_by_rank参数指定只有n个最前面的记录按递减的顺序被返回选择使用哪一个全文搜索方法可以在任何搜索条件中使用CONTAINS和FREETEXT只能在FROM子句中使用CONTAINSTABLE和FREETEXTTABLE函数12.4.3CONTAINSTABLE和FREETEXTTABLE函数使用全文关键字12.4.4使用全文关键字可以把CONTAINS和FREETEXT与任何Transact-SQL谓词连接起来可以在子查询中使用CONTAINS和FREETEXT谓词USEnorthwindSELECTDescriptionFROMCategoriesWHERECategoryName'Seafood‘ANDCONTAINS(Description,'saucesANDseasonings')GOUSEpubsSELECTT.title,P.pub_nameFROMpublishersASPINNERJOINtitlesASTONP.pub_id=I.pub_idWHEREP.pub_id=(SELECTpub_idFROMpub_infoWHERECONTAINS(pr_info,'moonbeamANDontarioANDflyingsaucer'))GO示例1示例2第12章全文索引查询MicrosoftSearch服务介绍MicrosoftSearch服务组件获取全文索引的信息编写全文查询推荐操作在CHAR、NCHAR、VARCHAR、NVARCHAR、TEXT、NTEXT和IMAGE数据类型上使用全文索引使用全文索引和目录属性来解决问题使用top_n_by_rank参数来限制结果集的大小推荐操作12.5推荐操作实验全文索引查询练习1获得关于全文索引的信息练习2编写全文查询回顾学习完本章后,将能够:描述MicrosoftSearch的函数和模块获得全文索引的信息编写全文查询语句