登陆注册
19122000000014

第14章 SQL Server的全文搜索(1)

本章要点

本章介绍基于SQL Server数据库的全文搜索技术,内容包括SQL Server全文搜索的原理、全文索引和搜索的实现,以及大数据的全文搜索优化。

4.1SQL Server简介

SQL Server是使用客户-服务器(C/S)体系结构的关系型数据库管理系统(Relational Database Management System,RDBMS)。1988年推出了第一个OS/2版本。1992年,SQLServer移植到NT上后,Microsoft成了这个项目的主导者。1994年以后,Microsoft专注于开发、推广SQL Server的WindowsNT版本。1996年,Microsoft公司推出了SQL Server6.5版本。1998年,推出了SQL Server7.0版本。2000年推出了SQL Server2000,2006年推出了SQL Server2005。

SQL Server2000提供了完善的图形化用户界面、丰富的编程接口工具,而且与WindowsNT完全集成,具有很好的伸缩性。它对Web技术提供良好支持并且提供数据仓库功能。

4.2SQL Server全文检索的基础知识

主流的数据库都提供了对于数据库中内容的全文索引和全文检索服务,利用这项服务可以对数据库中的大量信息实现迅速的模糊搜索。本章以及后面两章介绍基于世界最常用的三种数据库的全文检索技术,这些知识可以用于解决100万条数据以内的实际全文检索问题。

本章专门介绍SQL Server2000的全文搜索技术。

4.2.1Microsoft搜索服务简介

SQL Server自7.0版本起,支持全文检索功能,而且这项功能十分完善,对中文的支持也很好。这项功能到了SQL Server2000版本更加完善,在企业版(Enterprise Edition)和标准版(Standard Edition)中包含,个人版(Personal Edition)和开发版(Developer Edition)中没有。如果用户能在SQL Server的企业管理器中找到那个绿色的小箭头图标,就说明其SQL Server服务器支持全文检索。

本书使用的是SQL Server2000企业版。

SQL Server2000全文检索组件支持在字符串列上进行复杂的搜索,该功能由Microsoft搜索服务(Microsoft Search)实现,它之所以能实现全文检索,在于有两项重要的支持:索引支持和查询支持。前者用来建立索引,后者用来接收用户的查询条件,从索引中检索数据。

Microsoft搜索服务是一个全文索引和搜索引擎,它对索引的支持表现在它能为数据库定义全文目录和索引,接受全文目录及各目录中组成索引的表和列的定义,并填充全文索引。它能支持全文查询,确定索引中满足全文搜索条件的项,对于满足条件的每一项,它向MsSQLServer服务返回行标识和一个等级值,然后MsSQL Server服务使用这些信息构造查询结果集。

Microsoft搜索服务在本地系统账户的环境中运行。在安装过程中,SQL Server将自己添加为一个Microsoft搜索服务管理员。

全文目录和索引不存储在SQL Server数据库内,而是存储在Microsoft搜索服务单独管理的文件中。只有Microsoft搜索服务管理员和计算机系统管理员才能访问全文目录文件。

4.2.2Microsoft搜索服务对全文查询的支持

在执行全文查询的时候,不是使用like谓词,而是用新的、专用于全文检索的谓词和行集函数。

包括CONTAINS和FREETEXT谓词,以及CONTAINSTABLE和FREETEXTTABLE行集函数。

这些新谓词和行集函数可以统称为全文结构。含有全文结构的SQL语句传递到数据库中之后,全文提供程序就会使Microsoft搜索服务检索所需的信息。

整个检索的过程如下。

①用户通过应用程序给SQL Server实例发送带有全文结构的SQL语句。

②SQL Server关系引擎通过查询系统表来验证全文结构,然后将每个SQL语句简化为一系列行集操作,并通过OLEDB将这些操作传递给基础组件,通常是存储引擎。SQL Server关系引擎再通过全文提供程序将全文构造转换成对行集的请求。

③全文提供程序验证行集请求,然后将搜索条件变换为Microsoft搜索服务的查询组件能支持的形式,并将其发送给Microsoft搜索服务。

④Microsoft搜索服务查询组件从全文索引中提取所请求的数据,然后以行集的形式将这些数据回传给全文提供程序。

⑤全文提供程序将行集返回给关系引擎。

⑥关系引擎将它从存储引擎和从全文提供程序收到所有行集进行组合,返回给应用程序,然后显示给用户。

4.2.3Microsoft搜索服务对全文索引的支持

在SQL Server数据库中,文本数据是存储在char,varchar,text,ntext,nchar,nvarchar类型的数据列中的。常规方法检索这一类数据是很烦琐的,而且数据库在处理长文本数据时很容易出错。

全文查询是依赖于全文索引的,要首先建立好索引,然后才能执行查询。SQL Server全文检索服务可以建立全文索引,并且在后台更新索引,这样一来,填充或更新索引就不影响其他任务的执行。用户可以完全重建索引、增量重建索引、删除索引,对索引实现良好的管理。

而且,对于image列中存储的某些类型的数据也可以进行索引和检索,这包括.doc,.xls,.ppt,.txt和.htm等类型。设计表时,除包括保存数据的image列外,还需增加一个绑定列来保存存储在image列中的数据的格式,通常保存扩展名或MIME类型。

如果想让某一列数据允许执行全文检索,就要在这一列上注册全文检索。当全文注册列中的值更新时,或者这一列新添加了数据,或者这一列中的某一行被删除的时候,全文索引不会立即修改,而是被异步重新填充,这主要是由于以下两个原因:一般更新全文索引比更新标准索引所需的时间要多得多,耗费的系统资源也多。

全文检索的结果没有常规检索精确,这是它的弱点,也是特性。没有必要实时更新全文索引。

全文索引与普通的索引有很大的不同,它的实现方式读者可以参考第二章的相关内容去理解。全文索引事先分好了关键词,并计算出记录相对于关键词的等级(Rank),这样使得检索速度大大加快了。

4.2.4Microsoft搜索服务的全文管理

1.全文管理的层次

全文索引和普通索引的差异使大量管理任务变得不可缺少。全文管理是在几个层次上实施的,包括:服务器、数据库、全文目录、表和列。详情如下。

(1)服务器

可以对服务器范围的某些属性(如resource usage)加以设置,以便增加或减少全文服务所使用的系统资源数量。

说明:全文引擎作为名为Microsoft搜索的服务在Microsoft WindowsNT Server和Microsoft Windows2000Server上运行。对于Microsoft SQL Server个人版,Microsoft搜索服务不可用。尽管这意味着Microsoft搜索服务既未安装在Microsoft Windows95/98上,也未安装在Windows NT工作站或Windows2000 Professional客户端上,但这些客户端在连接到SQL Server标准版安装或企业版实例时就可以使用这项服务。

(2)数据库

必须启用数据库才能使用全文服务。可以在已启用的数据库中创建和除去一个或多个全文目录的元数据。

(3)全文目录

全文目录包含数据库中的全文索引。每个目录可以用于数据库内的一个或多个表的索引需求。该目录中的索引是使用这里介绍的管理功能来填充的。(全文目录必须驻留在与SQLServer实例相关联的本地硬盘驱动器上。不支持可移动的驱动器、软盘和网络驱动器)。在每个服务器上最多可创建256个全文目录。

说明:Windows NT故障转移群集环境完全支持全文索引。

(4)表

首先,必须为全文支持启用表。然后,为与该表相关联的全文索引创建元数据(如表名及其全文目录)。表启用后,可以用为全文支持而启用的列中的数据来填充它。如果表的全文定义被更改(例如,添加一个也将为全文检索而索引的新列),则必须重新填充相关的全文目录以使全文索引与新的全文定义同步。

(5)列

可以从非活动的全文注册的表中添加或除去支持全文查询的列。

在所有这些级别上,可使用工具检索元数据和状态信息。

与常规SQL索引一样,当在相关表中修改数据时,可自动更新全文索引。或者,也可用适当的间隔手工重新填充全文索引。这种重写可能既耗时又大量占用资源,因此,在数据库活动较少时,这通常是在后台运行的异步进程。

应将具有相同更新特性的表(如更改少的与更改多的,或在一天的特定时段内频繁更改的表)组合在一起,并分配给相同的全文目录。通过以此方法设置全文目录填充调度,使得全文索引和表保持同步,且在数据库活动较多时不对数据库服务器的资源使用产生负面影响。

2.为全文目录指定表的基本原则

为全文目录中的表安排全文索引的位置是非常重要的。在为全文目录指定表时,应该注意下列基本原则。

始终选择可用于全文唯一键的最小唯一索引(4个字节且基于整数的索引是最佳的)。

这将显着减少文件系统中Microsoft搜索服务所需要的资源。如果主键很大(超过100字节),可以考虑选择表中其他唯一索引(或创建另一个唯一索引)作为全文唯一键;否则,如果全文唯一键的大小达到允许的上限(450字节),全文填充将无法继续进行。

如果进行索引的表有成千上万行,请将该表指定给其自己的全文目录。

应该考虑对其进行全文索引的表中发生的更改数及表的行数。如果要更改的总行数,加上上次全文填充期间表中出现的行数达到成千上万行,请将该表指定给其自己的全文目录。

全文索引为在字符串数据中进行复杂的词搜索提供有效支持。全文索引存储关于重要词和这些词在特定列中的位置的信息。全文查询利用这些信息,可快速搜索包含具体某个词或一组词的行。

3.注意事项

全文索引包含在全文目录中。

每个数据库可以包含一个或多个全文目录。一个目录不能属于多个数据库,而每个目录可以包含一个或多个表的全文索引。

一个表只能有一个全文索引,因此每个有全文索引的表只属于一个全文目录。

全文目录和索引不存储在它们所属的数据库中,目录和索引由Microsoft搜索服务分开管理。

全文索引必须在基表上定义,而不能在视图、系统表或临时表上定义。

4.3启用SQL Server全文检索

本节实现一个基于SQL Server全文检索的百万记录的全文搜索引擎。

4.3.1建立测试数据库

建立一个数据库,名为tianen,数据库中只含有一个表格,名为test。这是一个存储文章的表格,包含四个字段:id是int类型自动增长列,作为主键;title是varchar(50)类型,用来存储文章标题;content是text类型,存储文章内容;common是varchar(50)类型,用于存储文章的其他信息。

4.3.2启用全文检索

在建立了数据库并输入测试数据之后,下面对刚才建立的数据表启用全文检索;步骤如下所示。

1.启动Microsoft搜索服务

有三种方法可以用来启动Microsoft搜索服务。

①进入SQL Server企业管理器,用鼠标右键单击“全文检索”节点,在弹出的快捷菜单中选择“启动”。如果当前图标为绿色,说明已经启动;如果是红色,则为停止,应启动。

②进入SQL Server服务管理器,“服务”中选择“Microsoft Search”,并单击“开始/继续”按钮。

③在“运行”对话框中直接输入命令“net start mssearch”,即可启动Microsoft搜索服务,使用“net stop mssearch”命令可以停止Microsoft搜索服务。

当然,在启动全文检索之前,需要先看看计算机上是否已经安装了全文检索组件。如果计算机上恰好没有企业管理器,那么就没办法“目测”了。可以通过储存过程FULLTEXTSER-VICEPROPERTY(返回有关全文服务级别属性的信息)来验证搜索服务(全文组件)是否安装。执行下面的语句:

use tianen

Select fulltextserviceproperty("IsFullTextInstalled")

同类推荐
  • 精细育人故事100例

    精细育人故事100例

    袁昌红等的《精细育人故事100例》收集了广东省佛山市顺德区陈村职业技术学校教师在教育实践和教育生活中发生的各种真实、鲜活的教育事件和发人深省的教育故事。《精细育人故事100例》共分为“遇上你是我们共同的缘”、“让春风化雨暖你心”、“想说爱你不容易”、“换个视角,海阔天空”、“最幸福的回报”五个部分,每个部分含有20个教育故事,每个故事都附有简明扼要的点评,指出其中蕴涵的教育意义和反思感悟。
  • 全球顶级企业通用的9种生产与运作管理方法

    全球顶级企业通用的9种生产与运作管理方法

    在生产与运作管理过程中,基层运作专家决定如何最好地设计和运营一个过程;而高层运作管理人员则肩负着为企业制定战略方向的责任,即决定应用什么技术,在哪里配置设施,并对这些应用于生产制造和提供服务的设施进行管理。
  • 学生素质教育丛书-艰苦奋斗教育读本

    学生素质教育丛书-艰苦奋斗教育读本

    本套丛书共分为:美育教育读本,在五星红旗下成长,学生素质培养读本,启智教育读本,学生行为规范读本,艰苦奋斗教育读本,传统美德教育读本,禁毒教育读本,家长学校读本,英雄主义教育读本。针对学生素质教育面临的重要问题,详细地论述了学生综合素质教育的基本内容。
  • 流光·青春糖衣

    流光·青春糖衣

    收录了多篇新概念作文大赛中的一等奖作文。作者都是最具活力的90后新生写作力量。其作品文笔优美写实,见解独特,独具其自身的写作特色,是一本非常优秀的作文合集。本书不仅可以帮助初高中生提高作文水平,还可以给青春文学爱好者带去全新的阅读体验,更能从作品中体会90后的青少年的思想感悟和精神世界。
  • 中华成语故事全集——智慧哲理的故事

    中华成语故事全集——智慧哲理的故事

    成语是汉语词汇宝库里的璀璨明珠。它是长期以来人们在相沿习用的过程中,形成的形式简洁面意义精辟的固定短语。它结可严谨,表现性强,具有庄重典雅的书面语色彩,历来为人们喜闻乐用。不论讲话或作文,准确恰当地镶嵌或点缀一些成语。本书注重知识性、可读性和完整性,每个成语都辟有释义、出处、故事三大部分。编排顺序按笔画多少排列,既方便读者阅读,又方便读者查阅。本书既可作为中小学生学习成语的工具书,又适合不同层次读者作为故事阅读,具有广泛的适用性。
热门推荐
  • 赢霸江湖

    赢霸江湖

    慕非笙(慕清舟)硬生生被楚江染成了脱线的二货。莫轻言是莫氏的副总,硬生生掉进了慕非笙这个大坑,心甘情愿,乐此不疲,再也爬不起来。
  • 僵尸先生的小娇妻

    僵尸先生的小娇妻

    因为父亲的病,她拨出了一通电话……从此,他便缠上了她。然而他的母亲却在看见她时就厌恶着她,他的妹妹也在人后给她难堪。她为还一份人情百般容忍,但她发现了一个可怕的事情,慌乱中她只想逃离……
  • 契婚:悍妻如狼

    契婚:悍妻如狼

    富家千金逃离三年,强势回归…化身黑道女王,误上邪魅总裁,被迫签订婚姻契约。本着婚后双方互不干涉的心态过着看看,可某人屡次三番阻拦她的桃花是想干嘛?老虎不发威,真当老娘是暖宝宝啊!冷了暖床,热了填房。她堂堂‘黑蔷薇’,怎么可能甘心于此呢?且看痴情总裁如何降服彪悍狼妻!
  • 星录

    星录

    开天辟地之时铭刻人间道则的十件神器,千年流传的神秘世家,成仙的预言,一切是无数的偶然,还是注定的必然?传说中的变革之世,掉落凡间的星辰,无数的阴谋围绕着“成仙”开始着转动,命运的纠缠不分和道则的无上追求,亘古的星辰中记载着怎样的秘密……一场以现代都市为背景的巨大舞台上,各个神秘世家和无数注定闪耀于历史长河中的人物,一副波澜壮阔的画卷正徐徐打开。
  • 重生之超级杀手

    重生之超级杀手

    一个不冷血不无情的杀手,重生之后的他,找回了幼年时代丢失的记忆,本来只想低调修炼和生活的他,却因为一些难以割舍的人和事,不得不勇往直前……
  • 你是我心里最美的风景

    你是我心里最美的风景

    女追男,隔座山,追了半天,他就是不动心,我以为我和他没有任何交集点,我只是他路过的一道风景。却没想到最后他却为我而停留。成了我心里最美的风景。
  • 总裁大大,你过来

    总裁大大,你过来

    前世,校园时期的她,是大娱世界顶级流量组合之首,却死于暗算。他是矫情,有钱,洁癖怪融为一体的化身。当他突然看上了她,她只想表示:来,姐把你的毛病治治。敬请期待(本文苏不苏不知道,但是不保证笑点)
  • 异界至尊战神

    异界至尊战神

    顶级宅男穿越异界大陆,踏遍河山组建军团,携美同行斗翻世间强者,至尊战神傲世九霄苍穹——林凡语录!
  • 小公主的三次吻

    小公主的三次吻

    小公主林玉莘和她的哥哥林玉箫和林玉昇在讨论要不要把林玉莘送去圣兰英地学院读书,林玉莘怎么也不肯去,动用了许多招,还是没能逃过上学的魔掌。在校园里和自己的王子夏宇豪相遇接连发生许多爆笑事......敬请期待吧
  • 种田:这就是现实

    种田:这就是现实

    生存,从未想过这两字离自身那么近;近的让人感到急迫万分。看天吃饭,这四个字从没有那么深刻的体会过,大天朝的文字果然深奥。