一种提速的基于IPC编码的查询处理方法技术

技术编号:15746765 阅读:198 留言:0更新日期:2017-07-03 02:47
本发明专利技术涉及一种提速的基于IPC编码的查询处理方法。该方法把IPC编码下的索引文件视为树形的跳表文件,实现快读略过子树的算法;在处理布尔的求交查询时,根据链表的单调性判断是否略过(skip)某些子树,略过(skip)操作可节省大量时间从而提高线上布尔查询处理速度;在处理排序查询时,使用常见的TAAT处理方式与continue机制,根据ID列表的求交结果的位置可以快速取出对应的频率的索引文件的对应的值,通过略过所有不必要访问的子树的手段提高线上排序查询的处理速度。本发明专利技术根据IPC编码的特点优化了查询速度(包括布尔查询与排序查询),优化了检索系统的用户体验。

A query processing method based on IPC encoding for speed-up

The invention relates to a method of query processing based on IPC coding with increasing speed. The IPC encoding the index file as jump table file tree, the subtree skip read fast algorithm; in Boolean intersection query, according to the list of monotonicity (skip) to determine whether to skip certain subtrees, skip (skip) operation can save a lot of time to improve the online Boolean query processing in the processing speed; ranking query, use the common TAAT methods and continue mechanism, according to the corresponding index file ID list intersection result position can be quickly taken out and the corresponding frequency value of the processing speed is improved through the online ranking query skipped all the unnecessary access subtree means. The invention optimizes the query speed (including Boolean query and Sorting Query) according to the characteristics of IPC encoding, and optimizes the user experience of the retrieval system.

【技术实现步骤摘要】
一种提速的基于IPC编码的查询处理方法
本专利技术属于信息
,具体涉及一种提速的基于IPC编码的查询处理方法。
技术介绍
目前的检索系统里大多采用倒排索引作为处理用户查询的数据结构。倒排索引文件(IF)通常比较大,一般不能完整地放入内存,因此实际在应用时对索引文件都要进行按照某种编码进行压缩。一般来说,压缩率越高的编码在线上进行查询处理时会更加慢一些,因此所有的编码都是在空间跟处理时间上找平衡点。在编码ID的索引文件时有两种基本的策略,一种是编码原始的递增的值,另一种是编码连续两个递增的值之间的差值(delta编码)。一般来说差值远远小于原值,因此编码差值可能会带来一些压缩率的提高。但某些原值编码中也有非常高效的编码。当前在产业界用的比较多的是PFD编码(MarcinZukowski,SandorHeman,NielsNesandPeterBoncz.SuperscalarRAM-CPUcachecompression.InProceedingsofthe22ndInternationalConferenceonDataEngineering(ICDE),no.59,pages1-12.IEEE,2006.),PFD编码属于delta编码,它利用了ID的差值的分布特征,将90%较小的delta值根据最大字长位对齐顺序地存储,而把10%的较大值作为特例单独用变长编码存储。PFD编码的压缩率跟解压速度都可以让人接受,实现简单,因此在工业上得到广泛应用。它的缺点是它建立在差值的分布特性的假设的前提下,在不满足这个假设的时候它的压缩率不算太高。IPC编码是一种在原值上的编码(AlistairMoatandLangStuiver.Binaryinterpolativecodingforeffectiveindexcompression.InformationRetrieval,vol.3,no.1,pages25-47,2000.),它需要编码在递增的原值上。具体做法是对某个列表或者子列表先编码其中值,并根据最大与最小乃至区间长度来判断中值的取值区间,根据此区间来决定编码该值占几个存储字长。在确定了中值后,原区间被平分为两个子区间,在子区间上的递归地进行这样编码中值的操作,直至子区间的长度为0。IPC的编码是一个树形结构,通过这种递归地减小区间的方法,最后能以很小的长度编码各值,这也是它压缩率非常高的原因。但是同样可以看到在编码时它需要更多的计算,例如计算上下限等等,而它的解码需要复原这个过程,因此速度是比较慢的,在布尔与排序查询中IPC编码的速度大约是PFD编码速度的1/4与1/3。此外还存在其他的编码,但在所有的主流编码中,IPC编码的压缩率是最高的,也是线上处理速度偏慢的一种。IPC编码因为其高压缩率会被用在某些有着严格存储空间限制的应用场景内,例如超大规模数据量的检索系统或者嵌入式系统等等。但IPC编码最大的缺点在于解压速度较慢,由此导致在线上处理的速度也偏慢。例如常见的OPTPFD编码的一个rank查询的处理时间大约为IPC编码的1/3。虽然IPC编码拥有不错的压缩率,但是线上的查询处理时间会增大使用用户的等待时间,因此限制了它的进一步应用。
技术实现思路
因为基于IPC编码的倒排索引在线上处理的速度都相对较慢,本专利技术的目的就在于根据IPC编码的特点优化查询速度(其中的查询包括在图书馆系统中常用的精确的布尔查询与目前搜索引擎中常用的排序查询),进而达到提高检索系统的用户体验的目的。本专利技术采用的技术方案如下:一种提速的基于IPC编码的查询处理方法,其步骤包括:1)把IPC编码下的索引文件视为树形的跳表文件,实现快读略过子树的算法;2)在处理布尔的求交查询时,根据链表的单调性判断是否略过(skip)某些子树,略过(skip)操作可节省大量时间从而提高线上布尔查询处理速度。3)处理排序查询时,根据文档ID列表的求交结果的位置可以快速取出对应的频率的索引文件的对应的值,通过略过所有不必要访问的子树的手段可以提高线上排序查询的处理速度。进一步地,略过子树的操作通过一个存储节点信息结构体的栈来加速实现。进一步地,在处理布尔求交查询时,对一个已经解压的顺序列表与一个IPC编码压缩的索引列表执行快速求交算法。进一步地,在处理排序查询时使用TAAT处理方式,在达到累加器的上限之前,对查询词的处理采用union策略,在达到上限后,采用继续更新累加器的continue策略。本专利技术的有益效果如下:1)在不增加存储空间的前提下,加快基于IPC编码的布尔求交查询的处理速度约50%。2)在不增加存储空间的前提下,加快基于IPC编码的排序查询的处理速度约10%。附图说明图1.布尔AND查询处理流程图。图2.排序查询处理流程图。图3.union策略处理流程。图4.Continue策略处理流程图。图5.7个节点的二叉树的结构示意图。具体实施方式下面通过具体实施例和附图,对本专利技术做进一步说明。本专利技术提供的提速算法,主要包括三个部分。一部分是在解压缩IPC编码的索引文件时的恢复与略过算法,第二部分是在处理布尔求交类型查询时,对一个已经解压的顺序列表与一个IPC编码压缩的索引列表的快速求交算法。第三部分是在处理排序类型查询时,根据需要解压的特定的值的位置列表(COlist)来快速获取对应的频率值的算法。1.恢复(restore)与略过(skip)IPC编码在编码时展开为一个二叉排序树,而在存储时按照先序的方式密集存储。在复原时也必须按照二叉排序树的结构恢复所有值,考虑到IPC编码的有序性,可以将编码视为一个压缩的特殊结构的跳表。跟跳表不同的是,跳表里所有待跳节点都有两个指针,分别指向下一个节点跟skip后的下一个节点。在IPC编码里,跳向skip后的下一个节点是困难的,因为需要知道下一个skip后的下一个节点相对本节点在索引文件上的偏移量。而为了获得偏移量,需要计算待skip的子树在编码中的长度。这个过程也是一个递归的过程。我们发现计算一个子树在IPC编码中编码长度的操作,跟恢复这个子树中所有值的操作比起来,计算长度的耗时要稳定地少大约25%。这也是本专利技术能提速的根本原因。计算一个树的长度操作(skip)跟恢复一棵树的所有值(restore)都是一个递归的过程,我们一般用一个存储节点信息的结构体的栈来加速实现。在restore函数里,一个节点信息结构体需要保存的项为:1)left(该节点在当前区间左边的元素个数),2)right(该节点在当前区间右边的元素个数),3)max(当前区间的最大值),4)min(当前区间的最小值),5)orgvalue(该节点的原值),6)pos(当前节点的位置)。相较之下,在skip函数里,一个节点信息结构体需要保存的项为:1)left(该节点在当前区间左边的元素个数),2)right(该节点在当前区间右边的元素个数),3)len(当前区间的长度),4)tmpvalue(该节点在IPC索引文件中记录的值)。尤其在叶子节点下,tmpvalue也是不需要恢复的。下表列出了根据父节点计算子节点的信息结构体中各项的公式。其中下标的ove代表全局,par代表父节点。标*的公式用于排序查询。表1IPC编码信息结构本文档来自技高网
...
一种提速的基于IPC编码的查询处理方法

【技术保护点】
一种提速的基于IPC编码的查询处理方法,其特征在于,包括以下步骤:1)将IPC编码下的索引文件视为树形的跳表文件,在解压缩IPC编码的索引文件时实现快读略过子树的算法;2)在处理布尔求交查询时,根据链表的单调性判断是否略过某些子树,通过略过操作来提高线上布尔查询处理速度;3)在处理排序查询时,根据文档ID列表的求交结果的位置快速取出对应的频率的索引文件的值,通过略过所有不必要访问的子树来提高线上排序查询的处理速度。

【技术特征摘要】
1.一种提速的基于IPC编码的查询处理方法,其特征在于,包括以下步骤:1)将IPC编码下的索引文件视为树形的跳表文件,在解压缩IPC编码的索引文件时实现快读略过子树的算法;2)在处理布尔求交查询时,根据链表的单调性判断是否略过某些子树,通过略过操作来提高线上布尔查询处理速度;3)在处理排序查询时,根据文档ID列表的求交结果的位置快速取出对应的频率的索引文件的值,通过略过所有不必要访问的子树来提高线上排序查询的处理速度。2.如权利要求1所述的方法,其特征在于:略过子树的操作通过一个存储节点信息结构体的栈来加速实现。3.如权利要求2所述的方法,其特征在于:一个节点信息结构体保存的项为:a)left:该节点在当前区间左边的元素个数;b)right:该节点在当前区间右边的元素个数;c)len:当前区间的长度;d)tmpvalue:该节点在IPC索引文件中记录的值。4.如权利要求1所述的方法,其特征在于:在处理布尔求交查询时,对一个已经解压的顺序列表与一个IPC编码压缩的索引列表执行快速求交算法。5.如权利要求4所述的方法,其特征在于,定义恢复后的数值列表保存在数列Rlr中,待恢复的列表是ls,已恢复列表是Rlr1,节点信息结构体的栈是S,并定义Rlrcur、Rlr1cur为Rlr与Rlr1上的当前指针;对于一个根为root的树,定义leftlist是root到其最左叶子节点的路径的逆路径;则所述快速求交算法包括以下步骤:1)恢复根节点并压入栈;2)当栈不为空时,取root为栈首元素并执行如下循环;3)如果root的原值小于Rlr1cur所指...

【专利技术属性】
技术研发人员:付玺王斌李鹏王卿李雄徐杰马宏远
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1