详解Sql2005 全文索引创建及应用(1)

来源:互联网 发布:8进4出音频矩阵 编辑:程序博客网 时间:2024/04/29 12:59

1.前言

14.1  全文索引的介绍

14.2  全文索引中常用的术语

14.3  全文索引的体系结构

14.4  全文目录管理

14.4.1  创建全文目录

14.4.2  查看与修改全文目录

14.4.3  删除全文目录

14.5  全文索引管理

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

14.5.2  创建全文索引

14.5.3  查看与修改全文索引

14.5.4  启用和禁用全文索引

14.5.5  删除全文索引

14.6  填充全文索引

14.6.1  填充全文索引的方式

14.6.2  填充全文索引

14.6.3  定时填充全文索引

14.7  使用全文搜索查询

14.7.1  使用CONTAINS搜索

 

1.前言

本章包括:

全文索引的介绍

全文索引中的术语

全文索引的体系结构

全文目录的管理

全文索引的管理

填充全文索引

使用全文搜索查询数据

在数据库中快速搜索数据,使用索引可以提高搜索速度,然而索引一般是建立在数字型或长度比较短的文本型字段上的,比如说编号、姓名等字段,如果建立在长度比较长的文本型字段上,更新索引将会花销很多的时间。如在文章内容字段里用like语句搜索一个关键字,当数据表里的内容很多时,这个时间可能会让人难以忍受。

SQL Server中提供了一种名为全文索引的技术,可以大大提高从长字符串里搜索数据的速度,在本章里,将会对全文索引进行详细的介绍。

14.1  全文索引的介绍

全文索引与普通的索引不同,普通的索引是以B-tree结构来维护的,而全文索引是一种特殊类型的基于标记的功能性索引,是由Microsoft SQL Server全文引擎服务创建和维护的。

使用全文索引可以快速、灵活地为存储在SQL Server数据库中的文本数据创建基于关键字查询的索引,与like语句不同,like语句的搜索是适用于字符模式的查询,而全文索引是根据特定语言的规则对词和短语的搜索,是针对语言的搜索。

在对大量的文本数据进行查询时,全文索引可以大大地提高查询的性能,如对于几百万条记录的文本数据进行like查询可能要花几分钟才能返回结果,而使用全文索引则只要几秒钟甚至更少的时间就可以返回结果了。

14.2  全文索引中常用的术语

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

全文索引:一种特殊的索引,能在给定的列中存储有关重要的词及位置的信息,使用这些信息可以快速进行全文查询,搜索包括特定词或词组的行。

全文目录:全文目录是存储全文索引的地方,全文目录必须驻留在与SQL Server实例相关联的本地硬盘上,每个全文目录可用于满足数据库内的一个或多个表的索引需求。

断字符与词干分析器:断字符与词干分析器都是用于对全文索引的数据进行语言分析的。语言分析通常都会涉及到查找词的边界和组合动词两个方面,其中要查找词的边界,也就是确定哪几个字符是,称之为断字。组合动词也就是词干分析,用于分析词。根据语言的不同,语言分析规则也不尽相同,由此可以为每个全文索引列指定不同的语言。每种语言的断字符能够使得访问语言生成的词更为准确。

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

筛选器:用于从存储在varbinary(max)image列中的文件内提取指定的文本类型的文本。当varbinary(max)image列中包含带有特定文件扩展名的文档时,全文搜索会使用筛选器来解释二进制数据,筛选器会从文档中提取文本化信息并用于建立索引。

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

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

14.3  全文索引的体系结构

SQL Server的全文索引是由SQL Server FullText Search服务来维护的,该服务可以在Windows操作系统的【管理工具】à【服务】里找到,如图14.1所示,在此可以启动、停止、暂停、恢复和重新启动该服务。只有SQL Server FullText Search服务在启动状态时,才能使用全文索引。

 

14.1 SQL Server FullText Search服务

SQL Server FullText Search服务由两个部分组件支持:一个是Microsoft Full-Text Engine for SQL ServerMSFTESQL),也就是SQL Server全文搜索引擎;另一个是Microsoft Full-Text Engine Filter DeamonMSFTEFD),也就是全文搜索引擎过滤器。

Microsoft Full-Text Engine for SQL Server的作用是填充全文索引、管理全文索引和全文目录、帮助对SQL Server数据库中的数据表进行全文搜索。Microsoft Full-Text Engine Filter Deamon包含筛选器、协议处理程序和断字符三个组件,其作用是负责从数据表中访问和筛选数据以及进行断字和词干分析。其中,筛选器的作用是从文档中提取文本信息,并将非文本信息和格式化信息(如换行符、字体大小等信息)删除,然后生成文本字符串和属性的对应,并将它们传递给索引引擎;协议处理程序用于从指定数据库中的表内访问数据;断字符用于在查询或抓取的文档中确定字符边界位置。

全文索引组件负责对全文索引的初始填充以及当全文索引表中的数据被修改时的更新。当全文填充(爬网)开始后,数据库引擎会将大量的数据存储到内存里,并通知Microsoft Full-Text Engine for SQL ServerMSFTESQL)开始进行索引。当MSFTESQL服务接到进行索引的通知后,使用协议处理程序组件从内存中取得数据进行处理后生成全文索引。MSFTESQL服务会将数据表中的某一列或几列中的字符和二进制数据编制成索引。在对varbinary(max)image列中的数据编制索引时,筛选器会将基于为该数据指定的文件格式来提取文本。在处理索引的过程中MSFTESQL服务通过断字符来将收集到的文本数据分隔成各个单独的标记或关键字。这个过程就是全文索引的过程。

由于全文索引与普通的索引不同,全文索引并不是存储在数据表中,而是存储在全文目录中,所以在使用全文索引来搜索数据时,其运行的流程和普通索引也不一样。

如图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"Microsoft SQL Server"MSSQL.1"MSSQL"FTData”目录下;在【文件组】下拉列表框里可以选择全文目录所属的文件组;在【所有者】文本框里可以输入全文目录的所有者;选中【设置为默认目录】复选框可以将此目录设置为全文目录的默认目录;【区分重音】单选框用于指明目录是否区分标注字符。

 

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

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

14.4.2  查看与修改全文目录

全文目录添加完毕之后,可以在【对象资源管理器】窗口的【全文目录】树下看到新建的全文目录。双击该全文目录,或右击该全文目录,在弹出的快捷菜单里选择【属性】选项,将会弹出如图14.4所示【全文目录属性】对话框,在该对话框里可以查看全文目录的属性内容。

在【全文目录属性】对话框里有三个标签:【常规】选项卡里可以查看和修改全文目录的设置;【表/视图】选项里可以查看和修改为全文目录分配的表和视图;【填充计划】选项项里可以添加或修改确定何时填充或重新填充全文目录的计划。

在如图14.4所示的【全文目录属性】对话框里,可以看到全文目录所属的文件组、名称、上次填充的时间、项计数、填充状态、目录大小、唯一键计数的内容,这些内容是不能修改的。可以修改项为:【默认目录】、【所有者】和【区分重音】三个选项内容。

 

14.4 查看全文目录属性

在【目录】操作区域,有三个单选按钮,其中【无】表示不执行优化目录、重新生成目录和重新填充目录操作;选择【优化目录】选项将会优化目录的空间利用率、提高搜索结果相关排名的准确性,从而提高查询性能;选择【重新生成目录】选项将会删除并重新生成全文目录,如果对全文目录的属性进行了更改,则必须执行该操作,例如在本对话框中修改了区分重音选择,则【目录】操作区域会自动变成灰色,系统自动重新生成全文目录;选择【重新填充目录】选项将会使用数据的最新更改来更新目录。修改完毕之后,单击【确定】按钮完成操作。

14.4.3  删除全文目录

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

1)启动【SQL Server Management Studio】,连接到本地默认实例,在【对象资源管理器】窗口里,选择本地数据库实例à【数据库】àNorthwindà【存储】à【全文目录】。

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

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

如果要一次性删除多个全文目录,可以先在【对象资源管理器】窗口中定位到【全文目录】树,在【摘要】对话框里选择多个全文目录,然后单击鼠标右键,在弹出的快捷菜单里选择【删除】选项。在弹出的【对象删除】对话框中单击【确定】按钮完成操作。

14.5  全文索引管理

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

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

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

全文索引是针对数据表的,只能对数据表创建全文索引,不能对数据库创建全文索引。

在一个数据库中可以创建多个全文目录,每个全文目录都可以存储一个或多个全文索引,但是每一个数据表只能够创建一个全文索引,一个全文索引中可以包含多个字段。

要创建全文索引的数据表必须要有一个唯一的针对单列的非空索引,也就是说,必须要有主键,或者是具备唯一性的非空索引,并且这个主键或具有唯一性的非空索引只能是一个字段,不能是多字段的组合。

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

14.5.2  创建全文索引

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

1)启动【SQL Server Management Studio】,连接到本地默认实例,在【对象资源管理器】窗口里,选择本地数据库实例à【数据库】àNorthwindà【表】à【文章】。

2)右击【文章】数据表,在弹出的快捷菜单里选择【全文索引】à【定义全文索引】。

  • 详解Sql2005 全文索引创建及应用(1)
  • 详解Sql2005 全文索引创建及应用(2)
  • Sql2005 全文索引详解
  • Sql2005 全文索引详解
  • Sql2005 全文索引详解
  • Sql2005 全文索引详解
  • 学习 SQL2005 全文索引
  • Sql2005 全文索引(一)
  • Sql2005 全文索引(二)
  • Sql2005 全文索引(三)
  • Sql2005 全文索引(四)
  • Sql2005 全文索引(五)
  • Sql2005 全文索引
  • SQL2005全文索引
  • Sql2005 全文索引(五)
  • Sql2005 全文索引(四)
  • Sql2005 全文索引(三)
  • Sql2005 全文索引(二)
  • 屏蔽鼠标右击菜单以及禁止选中页面内容
  • final 与 static
  • Entity Framework 学习总结之一:ADO.NET 实体框架概述
  • 新来的
  • label语句 break 和 continue 语句
  • 详解Sql2005 全文索引创建及应用(1)
  • Janu. 6
  • Entity Framework 学习总结之二:数据访问区别
  • 如何在C和C++中实现回调
  • Entity Framework 学习总结之三:架构组成介绍
  • 详解Sql2005 全文索引创建及应用(2)
  • Entity Framework 学习总结之四:对象服务介绍使用
  • socket网络编程常用的结构及函数小结
  • Entity Framework 学习总结之四:对象服务介绍使用
  • 原创粉丝点击
    热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 上眼皮上长疙瘩怎么办 小孩眼睛长了麦粒肿怎么办 眼睛里长了麦粒肿怎么办 肛周脓肿流脓了怎么办 眼睑肿了一个包怎么办 上眼皮长针眼了怎么办 三岁宝宝内热重怎么办 5个月小孩内火重怎么办 孕妇o型rh阳性怎么办 异次元通讯对方下线了怎么办 人感染朊病毒了怎么办 美图m2忘记密码怎么办 美图m2很卡怎么办 wps中的宏被禁用怎么办 pos机登陆不上怎么办 pos机ppp未连接 怎么办 usb线插口松了怎么办 昂达mp4开不了机怎么办 星际战甲卡住了怎么办 液相色谱柱堵了怎么办 星际战甲受损mod怎么办 钥匙打不开车门怎么办 电脑一开机就蓝屏怎么办 三星s7开不开机怎么办 求生之路2闪退怎么办 方舟卡石头缝里怎么办 5楼层高水压不够怎么办 逆战鼠标带不动怎么办 铁柜子钥匙掉了怎么办 浦东机场12点了怎么办 月经来用了精油怎么办 公司想让我辞职怎么办 离婚有一方不离怎么办 鼻子出油黑头多怎么办 海绵沙发坐塌了怎么办 安医就诊卡丢了怎么办 域名被微信封了怎么办 被狂犬病狗咬了怎么办 怀孕吃了姑娘果怎么办 戴口罩眼睛起雾怎么办 胸下垂应该怎么办20岁