一种大规模数据搜索系统的制作方法

文档序号:6426275阅读:209来源:国知局
专利名称:一种大规模数据搜索系统的制作方法
技术领域
本发明涉及搜索引擎技术,尤其涉及一种大规模数据搜索系统。
背景技术
众所周知,搜索引擎是用于从互联网上搜寻信息的重要工具。随着互联网规模的不断扩大和网上信息量的不断增长,搜索引擎的作用也就越来越重要。当前,互联网上的搜索引擎虽然大小不同,功能也各异,但它们都包含以下一些基本的功能模块网页收集模块、页面预处理模块、索引模块、页面检索模块等。其中,可利用上述搜索引擎的索引模块生成倒排文件,被检索模块所使用。这里,所述倒排文件是从关键词到其出现位置(occurrence)的一种索引。对于搜索引擎来说,关键词的出现位置信息必须包括出现关键词的文档列表,以及关键词在各文档内的位置列表。一般而言,倒排文件由索引文件和记录文件组成,索引文件每个记录包含一个关键词和一个指针,该指针指向记录文件中存放关键词信息的位置。其大致结构如图 1所示,利用倒排文件,检索系统可以快速的找到查询词对应的文档列表。对由多个关键词所组成的查询,还可以根据各个词在各个文档中出现的位置,来计算查询与文档的相关度。 倒排索引是迄今为止发现的用于搜索引擎最好的索引结构,既方便建立,又很好的支持各种查询操作。在实际应用中的倒排文件远比上图的复杂为了更好的计算相关度,倒排文件中还要加入其它的一些信息,例如关键词在文档中的属性信息;为了提高检索效率,可能要调整倒排文件的结构,例如先存放出现关键词的所有文档列表,再存放所有的位置信息,把上图中位置信息的形式<docl><poslpos2pos3. . . Xdoc2Xposl‘ pos2' pos3' . . . Xdoc3><posl,,pos2,,po s3”· ·.>变换为<docldoc2doc3. . . Xposlpos2pos3. . . posl' pos2' pos3' . . . posl,,pos2,,po s3”· ·.>通过这种变换,当我们不关心词在文档中位置列表的时候,就可以一次地读入词对应的文档列表,减少对外存的访问次数。在后面我们还将详细讨论倒排文件的设计,我们会发现倒排文件结构的好坏直接影响检索速度。现代搜索引擎搜索的网页都数量巨大,目前的北大天网(e. pku. edu. cn/)搜索引擎搜索的网页量就有1.2亿,而一般的商业搜索引擎搜索的网页量至少都有数亿,甚至是达到数十亿。在这种情况下,一个单机的检索系统显然无法处理每秒成百上千的用户查询请求。此时,设计出一个结构良好的分布式检索系统显得尤为重要。一般成言,分布式检索系统至少包括两个部分一台或多台用于接收入用户查询请求的前台服务器,和多个用于实际数据检索的后台服务器,其结构如图2所示。当用户在搜索框中填入一个查询项,点击搜索按钮,其查询请求就被随机的发送到任意一台前台服务器上。而前台服务器实际上并不保存网页的索引信息,它将用户的查询通过广播的方式发送到后台的检索机群上。后台检索机群中,每台机器中都存放有部分网页的倒排索引,当它收入到广播过来的查询,便在其索引中查找出与查询其关的网页,并根据一定的相关度算法计算出得分,把相关度最高的若干个网页的文档号与得分一起发送回前台的服务器。前台服务器收集几个检索机器上的结果,按得分归并后把最相关的网页返回给用户。由于时间的关系本文必没有详细的研究检索系统的分布式结构,而是更多的关注各个检索节点上的效率。可以说,这两方面共同决定了一个检索系统的性能。但是,现在的大型搜索系统,仍然存在一些问题需要我们去改善,主要体现在如下几个方面一、检索效率不高。每个检索节点检索的网页量大约在二百多万,每秒只能处理十几个的查询请求。主要原因是没有为倒排文件建立cache,每次查询都要多次访问外存,磁盘成了系统的瓶颈。此外,其分布式结构也不太好,前台服务器与检索节之间基于同步的多进程的交互方式,也影响和整个系统的效率。二、倒排文件信息量不够。现在的倒排文件中,关键词在文档中的属性信息很少, 只用两个bit分别表示词是否在网页title和摘要中,并且不能为关键词在文档中各个位置设立属性信息。由于信息量的缺乏,在计算词与文档相关性的时候,往往不够准确。三、系统的可扩展性和容错性不足。系统现在运行在由一台前台服务器,19个检索节点构成的分布式环境中。对于增加检索节点可能带来的广播风爆,以及增加前台服务器查询策略的变化,都没有考虑到。此外,数据没有冗余,当系统中部分机器出现故障,则会影响查询结果。

发明内容
有鉴于此,本发明的主要目的在于提供一种大规模数据搜索系统,通过改进倒排文件结构、改进整数的压缩算法,并增加倒排文件的信息量;能够通过有效的cache策略, 让索引尽量的在内存中可以找到,减少访问磁盘的开销;并通过一些有效的预处理,减少浮点运算的次数,也进一步的提高检索效率。对于相关度计算,本文也做了一些改进,使得在最后的结果排序上更符合用户需求。为达到上述目的,本发明的技术方案是这样实现的一种大规模数据搜索系统,其主要包括倒排文件模块、数据接口模块、查询模块、 切词模块及记分函数模块以及进程守护模块,其中所述倒排文件模块,用于搜索系统能够快速找到查询词对应的文档列表;所述数据接口模块,是一组接口类,封装了每个要公开的数据的访问方法;所述查询模块,用于利用输入端查询条件进行搜索,将各个关键词对应文档列表求交集;所述切词模块,用于切词并得到各个关键词并形成一棵查询树;所述记分函数模块,负责进行站点聚类,得到聚类好的查询结果,排列并返回给守护进程模块;以及,所述守护进程模块,用于接受查询请求,并根据查询请求中指定的最大返回结果数,将部分结果返回。其中,所述倒排文件模块,采用新的倒排文件格式,其包含描述文件、索引文件和记录文件,支持程序的快速访问。所述倒排文件模块的描述文件,包括倒排文件自身的属性信息,包括Byte-Order属性表示倒排文件中使用整数的字节序,包含压缩整数和非压缩整数;Align-Bits属性使用了 32位的偏移量,Align-bits属性表示移动的位数;Attr-Size属性在这个格式中,允许关键词在每个出现它的文档中,有0个或多个字节的属性信息;这个属性信息的意义在本格式中无定义,完全由应用程序决定; 该属性信息必须是整字节的,并且所有的属性信息必须等长;这个长度就是倒排文件的 Attr-size 属性;Uint-Encoding属性压缩整数的编码方式。本发明所提供的大规模数据搜索系统,具有以下优点通过定义新的倒排文件格式,其支持程序的快速访问。改进了整数压缩算法,使得倒排文件的规模变小,从而也就减少了检索时从磁盘读取的数据量。通过使用文档列表cache,减少对磁盘的访问次数。通过预先计算相关度,完全消除了检索过程中的浮点运算,节省了 CPU计算时间,但代价是增大了倒排文件规模。充分的利用关键词在文档中的属性信息,减少不必要的相对位置计算,既节省了 CPU时间,又减少了一些磁盘10。从而改进了站点聚类算法,降低了时间复杂度。


图1为现有倒排文件结构示意图;图2为现有检索系统的分布式结构示意图;图3为本发明的大规模数据搜索系统的整体结构及数据流示意图;图4为记录文件和索引文件的示意图;图5为关键词列表示意图;图6为文档列表的cache组织结构示意图;图7为位置信息块组织结构示意图。
具体实施例方式下面结合附图及本发明的实施例对本发明的搜索系统作进一步详细的说明。本发明的基本思想搜索引擎的检索效率是评价搜索引擎质量的一个重要指标, 面对互联网上信息量的不断增加以及搜索引擎网页库的不断增大,对检索系统性能要求也越来越高。本发明详细介绍一个搜索引擎检索系统即数据搜索系统的设计与实现,针对搜索引擎检索系统的性能进行了描述,讨论了影响检索性能的几个因素,并分别提出改进的方法和途径。这些方法包括设计出结构更加良好的倒排文件结构,改进整数压缩编码,引入倒排文件cache,预先计算关键词与文档相关度,减少关键词相对位置计算开销,改进站点聚类算法等。图3为本发明的大规模数据搜索系统的整体结构及数据流示意图,如图3所示,该系统主要由如下6个部分构成倒排文件模块、数据接口模块、查询模块、切词模块及记分函数模块以及进程守护模块。其中,数据接口模块,是一组接口类,封装了每个要公开的数据的访问方法。查询模块,用于利用输入端查询条件进行搜索。切词模块与现有搜索引擎系统相同。记分函数模块,负责进行站点聚类。进程守护模块用于接受查询请求。该系统的工作流程是,守护进程从internet或本地接收到原始查询,调用切词模块得到各个关键词并形成一棵查询树,再调用查询模块。查询模块简单的把各个关键词对应文档列表求交集,每得到一个结果则调用一次计分函数,最终得到一个聚类好的查询结果,排序并返回给守护进程。守护进程再根据请求中指定的最大返回结果数,将部分结果返回。下面对本发明的大规模搜索系统的各个部分分别作详细说明。1、针对倒排文件模块为了让应用程序进行高效检索,并改进结果的排序,我们设计了新的倒排文件结构。在系统的开发过程中,这个结构被修改了很多次,每个设计都各有利弊,最终确定的结构也不是在各方面都最优。但倒排文件的设计都必须遵循几个基本的原则文件必须是没有二义性,可以正确的还原出数据。例如当我们保存记录〈doclXp OSlpOS2XdOC2XpOSr pos2’... >,在读取的时候就无法确定<doc2>处保存的是出现该关键词的新的一个文档号,还是该关键词在docl中的下一个出现位置。因此必须多保存一个词频信息,例如 <docl><tn><poslpos2><doc2><tf2Xposr pos2,· · · >。tfl 和 tf2 分别表示词在docl和doc2中的出现次数。这样才可正确的还原出信息。文件的规模应当尽量小,记录文件中每条记录应该占用尽可能小的空间,以减少读取记录时传输的数据量。方法是进行索引压缩技术[Scholer,et al. ,2002]使用变长的整数编码,用较少的空间保存较小的整数;整数使用差值存放,例如把文档号按升序排列, 第一个文档号保存实际值,之后的都保存与前一个文档号的差值。关键词在文档中的位置也用类似的保存方法。差值表示法的另一个好处就是可以更方便的求多个文档列表的交集,并且更方便的计算多个关键词在同一文档中的相对位置,在后面我们还会介绍。虽然对索引进行压缩会带来额外的数据解压开销,但相对于它带来的好处,这种开销完全是值得的。索引压缩减少了读取数据时从磁盘传输的数据量,但在检索时平均每个查询对磁盘的访问次数,更大的影响了检索效率。因此,设计倒排文件时,应当支持程序在最少次数内读取到需要的信息。例如在上一章中提到的,把文档列表连续的保存。倒排文件的设计还必须考虑方便索引模块的建立,以及方便检索模块的操作,因此结构不应该太复杂。例如,在设计过程中参考了现有技术中的倒排文件分块组织技术,把文档根据属性的不同分块保存。表面上看查询时可以先读重要的文档列表,但在实现过程中却发现对于多个关键词组成的查询,操作起来异常的复杂,最终不得不放弃。2、整数压缩编码方法变长的整数编码可分为两类,字节对齐整数编码和非字节对齐整数编码。前者优势有较高的压缩比率,后者则有更高的压缩与解压效率。在搜索引擎的应用中,检索效率比索引数据占用的空间更为重要。文中对比了字节对齐编码ByteCode和非字节对齐编码 Golomb [ffitten,et al.,1994],其压缩比率分别为0. 3359和0. 2635,解码时间比为1 6。 目前天网系统中使用的ByteCode编码在现有技术中有描述,它可对数值从O至230_1的正整数进行压缩编码。用第一个字节的最高两位表示整数所占的字节数,则1字节的压缩整数包含6个有效位,可表示整数O至63 ;2字节的压缩整数包含14个有效位,表示整数范围从64至214-1。3字节可表示从214至222-1,4字节可表示从222至230-1。在新的系统设计依然使用字节对齐的整数编码方式,用ByteCodeEx表示,但与 ByteCode不同,ByteCodeEx使用了可变长的位数来表示压缩整数的所占字节数,并且根据计算机的字节序(Byte Order)使用不相同的编码方式,加快解码速度。以Big Endian的字节序为例,第一字节的最高位开始,如果连续η个位为1,则表示压缩整数长度为η+1个字节,有效位从第一个为0的位开始。例如第一个字节110001101,从最高位开始连续出现 2个1,则说明整数占3个字节;又例如第一个字节01100101,最高一位就是0,说明整数占 1个字节,该整数为的值为99。由此我们可以得出,m个字节的压缩整数可表示的整数最大值为^Xm-(m-2)-l。这种方法比ByteCode的优势是只需一个字节就可表示从0至127, 对于小整数占多数的倒排文件来说,压缩率比较高,可以为每个从64至127的整数节省去一个字节的空间。但当整数的范围从221到222-1时,则会多占用一个字节。ByteCodeEx 可扩展到无限大的正整数。以下是为2576933个文档建立倒排索引,对整数的使用情况统计
权利要求
1.一种大规模数据搜索系统,其特征在于,其主要包括倒排文件模块、数据接口模块、 查询模块、切词模块及记分函数模块以及进程守护模块,其中所述倒排文件模块,用于搜索系统能够快速找到查询词对应的文档列表; 所述数据接口模块,是一组接口类,封装了每个要公开的数据的访问方法; 所述查询模块,用于利用输入端查询条件进行搜索,将各个关键词对应文档列表求交集;所述切词模块,用于切词并得到各个关键词并形成一棵查询树; 所述记分函数模块,负责进行站点聚类,得到聚类好的查询结果,排列并返回给守护进程模块;以及,所述守护进程模块,用于接受查询请求,并根据查询请求中指定的最大返回结果数,将部分结果返回。
2.根据权利要求1所述的大规模数据搜索系统,其特征在于,所述倒排文件模块,采用新的倒排文件格式,其包含描述文件、索引文件和记录文件,支持程序的快速访问。
3.根据权利要求1或2所述的大规模数据搜索系统,其特征在于,所述倒排文件模块的描述文件,包括倒排文件自身的属性信息,包括Byte-Order属性表示倒排文件中使用整数的字节序,包含压缩整数和非压缩整数; Align-Bits属性使用了 32位的偏移量,Align-bits属性表示移动的位数; Attr-Size属性在这个格式中,允许关键词在每个出现它的文档中,有0个或多个字节的属性信息;这个属性信息的意义在本格式中无定义,完全由应用程序决定;该属性信息必须是整字节的,并且所有的属性信息必须等长;这个长度就是倒排文件的Attr-size 属性;Uint-Encoding属性压缩整数的编码方式。
全文摘要
本发明公开了一种大规模数据搜索系统,主要包括倒排文件模块、数据接口模块、查询模块、切词模块及记分函数模块以及进程守护模块,倒排文件模块用于搜索系统能够快速找到查询词对应的文档列表;数据接口模块封装了每个要公开的数据的访问方法;查询模块用于利用输入端查询条件进行搜索,将各个关键词对应文档列表求交集;切词模块用于切词并得到各个关键词并形成一棵查询树;记分函数模块负责进行站点聚类,得到聚类好的查询结果;守护进程模块用于接受查询请求并根据查询请求中指定的最大返回结果数。利用该系统,能够减少访问磁盘的开销;并通过一些有效的预处理,减少浮点运算的次数,进一步提高检索效率。
文档编号G06F17/30GK102201007SQ20111015955
公开日2011年9月28日 申请日期2011年6月14日 优先权日2011年6月14日
发明者刘奎飞, 张 杰 申请人:悠易互通(北京)广告有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1