一种基于文档序号处理的倒排索引表示方法及系统的制作方法

文档序号:6401406阅读:164来源:国知局
专利名称:一种基于文档序号处理的倒排索引表示方法及系统的制作方法
技术领域
本发明涉及搜索引擎的倒排索引压缩技术领域,尤其涉及一种基于文档序号处理的倒排索引表示方法及系统。
背景技术
倒排索引是一种广泛应用于各类全文检索系统中的索引技术。常用的全文检索系统包括Web搜索引擎、图书馆检索系统和专利检索系统等。检索系统处理查询的过程大致可以分为4个步骤:索引构建、查询处理、索引扫描和文档评分。一般而言,用户输入查询后,系统扫描预先建立的倒排索引得到候选文档集,通过预定义的排序模型,结合启发式规则对文档进行综合评分,最后返回得分最高的前K篇文档。建立倒排索引时,首先需要扫描文档集合,将每篇文档转换成一个个词条的列表,并通过语言学处理,产生归一化的词条作为词项,对所有文档按照其中出现的词项建立索弓I。倒排索引一般由一个词典和一个全体倒排记录表组成,如图3所示:词典中保存了对文档集合进行处理后得到的词项、词项的文档频率(出现该词项的文档数目)以及一个指向该词项对应倒排记录表的指针。倒排记录表是由多个倒排记录构成的列表,其中的每个倒排记录对应出现该词项的一篇文档,倒排记录中记录的信息包括:文档序号,词项频率(词项在该文档中出现的次数),位置信息(词项出现在文档的位置)和其他附属信息。在小数据集合上,倒排索引能够有效地存储和处理,但是随着文档集合规模的增长,倒排表的长度随之变长,一方面导致倒排索引占用的存储空间急速膨胀,另一方面,扫描倒排表的所需的时间更加漫长,降低了查询处理的效率。为了克服文档规模带来的`问题,现有技术提出了对倒排索引进行压缩的方法。通过对倒排索引进行压缩,不仅可以有效减少索引占用的存储空间,而且可以提高查询处理的效率。倒排索引的一般形式可以表示为:t—<,…,dft >,其中词项t通过
对文档集合进行处理得到,并存放在词典中,其倒排表记录该词项的文档频率ft和一个长度为ft的文档序号列表(为了简单起见,我们忽略了倒排记录中的词项频率和位置等信息),dfi, (If2,…,dft为原始的文档序号(doclD)。为了对倒排索引中的文档序号进行压缩,现有技术提出了采用d-gap形式表示文档序号,具体做法是将倒排表中的文档序号按照升序排列,对每个文档序号,用该文档序号和前面相邻的文档序号的差值表示(第一个文档序号除外),从而得到d-gap形式的倒排表:t—< ft; Cl1, d2 - (I1,…,dk-du >,其中Cllri <dk。然后我们可以采用变长编码,编码算法对该倒排表进行编码,达到压缩的效果。D-GAP形式的倒排索引,其压缩效果之所以要优于一般形式的倒排索引,是因为文档序号之间的差值(d-gap)要远小于原始的文档序号,而更小的数值意味着可以采用更短的编码表示,所以d-gap形式倒排表的压缩率要高于一般形式的倒排表。D-GAP形式的倒排索引广泛应用于各类全文检索系统中,但是仍然存在一定的不足。举例来说,假设一个倒排表包含10个文档序号,其一般形式为:{I, 4,6,9,10,11,12,13,14,17},要对其进行压缩,我们首先计算差值,将其转换为d-gap形式:{1,3,2,3,I, I, I, I, I, 3},然后对这10个差值进行编码。但是通过观察我们发现,在这10个差值中存在一个由数字I组成的连续序列,这连续的序列表明在一般形式的倒排表中,其对应的原始文档序号是连续的,以往的工作没有考虑连续文档序号的这种特征,仅仅是简单地依次对每一个文档序号进行编码。

发明内容
为解决上述发明目的,本发明提出了一种基于文档序号处理的倒排索引表示方法及系统,能够有效地减少待编码的文档序号数目,通过提高文档序号的存储和压缩效率有效地提高倒排索引的压缩率。为实现上述发明目的,本发明提供了一种基于文档序号处理的倒排索引表示方法,该方法包括:步骤1,将倒排记录表按文档序号升序或降序排列,获得排序后的倒排记录表,从排序后的倒排记录表提取多个文档序列;步骤2,计算所述多个文档序列的序列长度,根据所述序列长度对其进行相应操作:当序列的长度η小于3时,直接存储该序列,当序列的长度η大于等于3时,提取该序列起始和终止的两个边界文档序号,并在所述两个边界文档序号中间插入数字O后进行储存;步骤3,进行差值 处理:对储存的所有序列的相邻文档序号进行差值计算并将相邻文档序号进行比较,获得的差值代替大的边界文档序号,获得新的倒排表;其中所述文档序列是倒排表中连续的文档序号,所述序列长度为所述文档序列中的文档序号个数。进一步的,所述倒排记录表采用纵向切分或者横向切分两种方式存储,且纵向切分的存储将N个倒排记录作为一块存储,N取值为128,横向切分的存储则将文档序号、词项频率和位置信息分开存储。为实现上述发明目的,本发明还提供一种基于文档序号处理的倒排索引表示系统,该系统包括:排序模块,用于将倒排记录表按文档序号升序或降序排列,获得排序后的倒排记录表,从排序后的倒排记录表提取多个文档序列;计算处理模块,用于计算所述多个文档序列的序列长度,根据所述序列长度对其进行相应操作:当序列的长度η小于3时,直接存储该序列,当序列的长度η大于等于3时,提取该序列起始和终止的两个边界文档序号,并在所述两个边界文档序号中间插入数字O后进行储存;差值处理模块,用于进行差值处理:对储存的所有序列的相邻文档序号进行差值计算并将相邻文档序号进行比较,获得的差值代替大的边界文档序号,获得新的倒排表;其中所述文档序列是倒排表中连续的文档序号,所述序列长度为所述文档序列中的文档序号个数。进一步的,所述倒排记录表采用纵向切分或者横向切分两种方式存储,且纵向切分的存储将N个倒排记录作为一块存储,N取值为128,横向切分的存储则将文档序号、词项频率和位置信息分开存储。本发明的效果在于,有效地减少待编码的文档序号数目,提高了文档序号的存储和压缩效率,提高了倒排索引的压缩率,本发明能广泛应用于搜索引擎性能优化和倒排索引压缩领域。以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。


图1是本发明的基于文档序号处理的倒排索引表示方法流程图;图2是本发明的基于文档序号处理的倒排索引表示系统示意图;图3是现有技术中的倒排索引的基本结构;图4是本发明中的纵向切分存储的倒排记录表;图5是本发明中的横向切分存储的倒排记录表。
具体实施例方式图1是本发明的基于文档序号处理的倒排索引表示方法流程图。如图1所示,该方法包括:步骤1,将倒排记录表按文档序号升序或降序排列,获得排序后的倒排记录表,从排序后的倒排记录表提取多个文档序列;步骤2,计算所述多个文档序列的序列长度,根据所述序列长度对其进行相应操作:当序列的长度η小于3时,直接存储该序列,当序列的长度η大于等于3时,提取该序列起始和终止的两个边界文档序号,并在所述两个边界文档序号中间插入数字O后进行储存;步骤3,进行差值处理:对储存的所有序列的相邻文档序号进行差值计算并将相邻文档序号进行比较,获得的差值代替大的边界文档序号,获得新的倒排表;其中所述文档序列是倒排表中连续的文档序号,所述序列长度为所述文档序列中的文档序号个数。进一步的,所述倒排记录表采用纵向切分或者横向切分两种方式存储,且纵向切分的存储将N个倒排记录作为一块存储,N取值为128,横向切分的存储则将文档序号、词项频率和位置信息分开存储。图2是本发明的基于文档序号处理的倒排索引表示系统示意图。如图2所示,该系统包括:排序模块100,用于将倒排记录表按文档序号升序或降序排列,获得排序后的倒排记录表,从排序后的倒排记录表提取多个文档序列;计算处理模块200,用于计算所述多个文档序列的序列长度,根据所述序列长度对其进行相应操作:当序列的长度η小于3时,直接存储该序列,当序列的长度η大于等于3时,提取该序列起始和终止的两个边界文档序号,并在所述两个边界文档序号中间插入数字O后进行储存;差值处理模块300,用于进行差值处理:对储存的所有序列的相邻文档序号进行差值计算并将相邻文档序号进行比较,获得的差值代替大的边界文档序号,获得新的倒排表;其中所述文档序列是倒排表中连续的文档序号,所述序列长度为所述文档序列中的文档序号个数。进一步的,所述倒排记录表采用纵向切分或者横向切分两种方式存储,且纵向切分的存储将N个倒排记录作为一块存储,N取值为128,横向切分的存储则将文档序号、词项频率和位置信息分开存储。相对于现有技术中的d -gap形式的倒排索引,本发明的基于文档序号处理的倒排索引可以称为d - range的文档序号表示方法。将倒排记录表按文档序号升序排列,对其中连续的文档序号序列,当序列的长度η小于3时(η=1或2),原样存储该序列,如长度为2的序列:5、6,采用d-range形式表示时,仍保存该序列的原始值:5、6。通过词条化、语言学处理、倒排等操作,我们得到如图3所示的倒排索引。在实际情况中,为了高效的存储和读取,倒排记录表往往使用横向切分或者纵向切分这两种方式存储。

纵向切分存储又可以称为按块存储,将N个倒排记录作为一块存储,N —般取值为128,如图4所示。另外一种方式称为横向切分,即把文档序号、词项频率和位置信息分开存储,这样存储的好处是可以独立并行地对这些数值进行处理,提高了处理的效率,如图5所示。本专利的发明内容可以同时适用于上述两种存储方式。以图5为例,倒排记录表中的文档序号单独存放在一个数据块中,其中存放的内容是出现词项t的文档序号。给定词项t,可以通过查找字典得到该词项对应的文档序号信息。本专利主要是关于文档序号的表示和压缩方法,所以下文的实施步骤主要是针对文档序号,暂不考虑词项频率和位置信肩、O我们把倒排表中连续的文档序号称为一个文档序列,比如{3,4,5,6}可以称为一个序列,{3, 5,6}则包含两个序列,第一个序列是{3},第二个序列是{5,6}。序列中包含的文档序号个数定义为序列的长度。倒排表中的文档信息可以看做是由大量这样的文档序列组成的。在本专利中,我们提出d-range的表示方法,用于对倒排表中的文档序列进行优化,从而进一步提高倒排索引压缩率。下面介绍具体的实施步骤。假设给定一个包含η个连续文档序号的文档序列L:L= {d” d2,.. .,dj,di + 1 = d( + I, V I > 1.
如果文档序列的长度n彡3,其d-range形式表示为:Ld_range= W1, O, dj ,即Ld-range= {左边界,O,右边界};如果η=1或者Π=2,则保存原始文档序列,其相应形式为:Ld-range= IdJ ( Π=1 )或者W1, dj ( Γ1=2 )。对倒排表中所有文档序号进行上述处理后,再计算相邻文档序号之间的差值(左边界和右边界之间的O除外),最后得到d-range形式的倒排表。

比如针对文档序号{3,4,5,6,8,9,10, 13},按照上述的规则,里面共有3个文档序列:{3,4,5,6}、{8,9,10}和{13},对每个序列都采用d-range处理后,我们得到其d-range形式的原始表示:{3,0,6,8,0,10,13},然后计算相邻文档序号之间的差值,最后得到:{3,O, 3,2,O, 2,3}。选择把η≥3的连续文档序列表示成{左边界,0,右边界}的形式,是因为通过d-range形式来表示这些序列,我们至少需要3个整数,而且我们只需3个整数,就能表示原来η个文档序号的情况。在序列长度η=3时,采用d-range形式也需要3个数值;当n>3时,d-range形式需要存储的整数便可以减少(n_3)个,η的值越大,d-range减少的整数数目也越多。而当序列的长度n=l或者n=2时,d-range形式反而需要更多的整数,所以在这些情况下,我们存储原始序列。然后,采用差值方法进一步提高d-range的压缩效率,即用相邻序号之间的差值代替原始值,如序列:5、6,其差值形式为5、1 (6-5=1) ;5、0、9,其差值形式为5、0、3 (8 -5=3)。我们在三个数据集上对比了 d-range形式和d_gap形式的实验结果,包括存储时减少的整数个数以及压缩后每个文档序号所需要的比特数。表I中介绍了三个数据集的详细信息,在表中我们统计了各个数据集的大小,对数据集处理后得到的词项数,数据集包含的文档数目以及倒排记录的数目。表权利要求
1.一种基于文档序号处理的倒排索引表示方法,其特征在于,包括: 步骤1,将倒排记录表按文档序号升序或降序排列,获得排序后的倒排记录表,从排序后的倒排记录表提取多个文档序列; 步骤2,计算所述多个文档序列的序列长度,根据所述序列长度对其进行相应操作:当序列的长度η小于3时,直接存储该序列,当序列的长度η大于等于3时,提取该序列起始和终止的两个边界文档序号,并在所述两个边界文档序号中间插入数字O后进行储存; 步骤3,进行差值处理:对储存的所有序列的相邻文档序号进行差值计算并将相邻文档序号进行比较,获得的差值代替大的边界文档序号,获得新的倒排表; 其中所述文档序列是倒排表中连续的文档序号,所述序列长度为所述文档序列中的文档序号个数。
2.如权利要求1所述的倒排索引表示方法,其特征在于,所述倒排记录表采用纵向切分或者横向切分两种方式存储,且纵向切分的存储将N个倒排记录作为一块存储,N取值为128,横向切分的存储则将文档序号、词项频率和位置信息分开存储。
3.一种基于文档序号处理的倒排索引表示系统,其特征在于,包括: 排序模块,用于将倒排记录表按文档序号升序或降序排列,获得排序后的倒排记录表,从排序后的倒排记录表提取多个文档序列; 计算处理模块,用于计算所述多个文档序列的序列长度,根据所述序列长度对其进行相应操作:当序列的长度η小于3时,直接存储该序列,当序列的长度η大于等于3时,提取该序列起始和终止的两个边界文档序号,并在所述两个边界文档序号中间插入数字O后进行储存; 差值处理模块,用于进行差值处理`:对储存的所有序列的相邻文档序号进行差值计算并将相邻文档序号进行比较,获得的差值代替大的边界文档序号,获得新的倒排表; 其中所述文档序列是倒排表中连续的文档序号,所述序列长度为所述文档序列中的文档序号个数。
4.如权利要求3所述的倒排索引表示系统,其特征在于,所述倒排记录表采用纵向切分或者横向切分两种方式存储,且纵向切分的存储将N个倒排记录作为一块存储,N取值为`128,横向切分的存储则将文档序号、词项频率和位置信息分开存储。
全文摘要
本发明提供了一种基于文档序号处理的倒排索引表示方法及系统,其中方法包括步骤1.将倒排记录表按文档序号升序或降序排列,获得排序后的倒排记录表,从排序后的倒排记录表提取多个文档序列;步骤2.计算所述多个文档序列的序列长度,根据所述序列长度对其进行相应操作当序列的长度n小于3时,直接存储该序列,当序列的长度n大于等于3时,提取该序列起始和终止的两个边界文档序号,并在所述两个边界文档序号中间插入数字0后进行储存;步骤3.进行差值处理对储存的所有序列的相邻文档序号进行差值计算并将相邻文档序号进行比较,获得的差值代替大的边界文档序号,获得新的倒排表。本发明能够有效地提高倒排索引的压缩率。
文档编号G06F17/30GK103235794SQ20131011307
公开日2013年8月7日 申请日期2013年4月2日 优先权日2013年4月2日
发明者史亮, 王斌, 李鹏, 李锐, 卫冰洁, 张帅 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1