首页> 中国专利> 数据处理装置和为值串形式索引值建立索引的方法

数据处理装置和为值串形式索引值建立索引的方法

摘要

本发明涉及一种数据处理装置和为值串形式索引值建立索引的索引方法。该数据处理装置包括为值串形式的索引值建立前缀树索引的索引部分,索引部分包括:中间索引值获取单元,用于将索引值补位到预定长度,并基于补位后的各索引值的相应位以及相应位的组合来获取中间索引值;中间索引项产生单元,用于产生针对中间索引值的索引数据作为中间索引数据,并建立中间索引值与中间索引数据之间的对应关系,中间索引数据是中间索引值覆盖的各索引值的索引数据或索引数据的变形的集合;在该集合中,索引数据或索引数据的变形按照与索引值的各位相关的预定顺序排列,且每一个索引值的索引数据或索引数据的变形各自包含表示本身在何处结束的结束标志。

著录项

  • 公开/公告号CN102193941A

    专利类型发明专利

  • 公开/公告日2011-09-21

    原文格式PDF

  • 申请/专利权人 富士通株式会社;

    申请/专利号CN201010124847.2

  • 申请日2010-03-12

  • 分类号G06F17/30;

  • 代理机构北京集佳知识产权代理有限公司;

  • 代理人杜诚

  • 地址 日本神奈川县

  • 入库时间 2023-12-18 03:13:16

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-03-10

    未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20130918 终止日期:20190312 申请日:20100312

    专利权的终止

  • 2013-09-18

    授权

    授权

  • 2011-11-23

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20100312

    实质审查的生效

  • 2011-09-21

    公开

    公开

说明书

技术领域

本发明涉及信息、数据处理领域,尤其涉及一种数据处理装置和为值串形式索引值建立索引的方法。

背景技术

随着网络技术的发展,数据信息量呈指数增长。如何快速对数据信息进行有效的检索和查询成为关注焦点。在这样的背景下,建立便于查询的高效索引是解决该问题的有效途径。在各种数据类型中,对于特定应用,需要对某一范围内的值串形式的数据进行检索。值串形式的数据例如:数字串、时间数据以及字符串等。

作为值串形式的数据索引,以日期时间索引为例。在现有技术中,信息检索系统中对于日期、时间等类型数据的索引通常以最小时间粒度为单位作为索引值选择的依据。因此,检索系统在对日期数据进行索引之前,需要在年、月、日、时、分的单位内建立该范围的秒级索引项,以便检索查询。然而这会导致大量索引项,通常会使得检索系统需要遍历的索引项数过多,从而降低系统的效率。

对数字串或字符串的范围检索同样存在这样的问题。例如,对abc、abb...abx范围内的字符串进行检索,同样存在磁盘访问次数过多,系统检索效率低的问题。

发明内容

本发明的一个目的是提供一种数据处理装置,其能够减少范围检索中的磁盘访问次数,从而提高值串形式数据的检索效率。

本发明的另一个目的是提供一种在数据处理装置中用于为值串形式的索引值建立前缀树索引的方法,其能够减少范围检索中的磁盘访问次数,从而提高值串形式数据的检索效率。

本发明的一个实施例是一种数据处理装置,包括为值串形式的索引值建立前缀树索引的索引部分,索引部分包括:中间索引值获取单元,用于将索引值补位到预定长度,并基于补位后的各索引值的相应位以及相应位的组合来获取中间索引值;中间索引项产生单元,用于产生针对中间索引值的索引数据作为中间索引数据,并建立中间索引值与中间索引数据之间的对应关系,中间索引数据是中间索引值覆盖的各索引值的索引数据或这些索引数据的变形的集合;其中,在该集合中,索引数据或这些索引数据的变形按照与索引值的各位相关的预定顺序排列,并且,每一个索引值的索引数据或索引数据的变形各自包含表示本身在何处结束的结束标志。

在本发明的一个实施例中,在每一个文档具有一个索引值的应用中,中间索引数据是中间索引值覆盖的各索引值的相应索引数据的集合。

在本发明的一个实施例中,在文档的至少之一具有多于一个索引值的应用中,中间索引数据是中间索引值覆盖的各索引值的相应索引数据的变形的集合。

在本发明的一个实施例中,中间索引项产生单元还包括:前向索引产生单元,用于产生中间索引值的前向索引数据,并建立中间索引值与其前向索引数据之间的对应关系;后向索引产生单元,用于产生中间索引值的后向索引数据,并建立中间索引值与其后向索引数据之间的对应关系。

在本发明的一个实施例中,在前向索引产生单元中,对于每一个中间索引值,将该中间索引值覆盖的索引值按照与索引值的各位相关的预定顺序排列,并从前向后遍历这些索引值,利用等式(1)来获得中间索引值的前向索引数据:

>Fn=Cn-Cn(i=1n-1Ci)---(1)>

其中,Fn是中间索引值的前向索引数据中与按所述顺序排列的第n个索引值相对应的项,Ci是第i个索引值的索引数据,i和n为正整数,i≤n,且n≤每个中间索引值所覆盖的索引值的项数。

在本发明的一个实施例中,在后向索引产生单元中,对于每一个中间索引值,将该中间索引值覆盖的索引值按照与索引值的各位相关的预定顺序的相反顺序排列,并从前向后遍历这些索引值,利用等式(2)来获得中间索引值的后向索引数据:

>Fn=Cn-Cn(i=1n-1Ci)---(2)>

其中,Fn是中间索引值的后向索引数据中与按所述相反顺序排列的第n个索引值相对应的项,Ci是第i个索引值的索引数据,i和n为正整数,i≤n,且n≤每个中间索引值所覆盖的索引值的项数。

在本发明的一个实施例中,值串形式的索引值是日期时间索引值或数字索引值。

本发明的一个实施例是一种在数据处理装置中用于为值串形式的索引值建立前缀树索引的索引方法,包括:中间索引值获取步骤,将索引值补位到预定长度,并基于补位后的各索引值的相应位以及相应位的组合来获取中间索引值;中间索引项产生步骤,产生针对中间索引值的索引数据作为中间索引数据,并建立中间索引值与中间索引数据之间的对应关系,中间索引数据是中间索引值覆盖的各索引值的索引数据或这些索引数据的变形的集合;其中,在集合中,索引数据或这些索引数据的变形按照与索引值的各位相关的预定顺序排列,并且,每一个索引值的索引数据或索引数据的变形各自包含表示本身在何处结束的结束标志。

附图说明

参照下面结合附图对本发明实施例的说明,会更加容易地理解本发明的以上和其它目的、特点和优点。在附图中,相同的或对应的技术特征或部件将采用相同或对应的附图标记来表示。在附图中不必依照比例绘制出单元的尺寸和相对位置。

图1是示出根据本发明实施例的数据处理装置的功能结构的框图;

图2是示出根据本发明第一实施例的值串索引值索引器结构的框图;

图3是示出根据本发明第二实施例的值串索引值索引器结构的图;

图4是示出根据本发明第一实施例的为值串形式的索引值建立索引的流程图;

图5a是示出根据第一实施例的待建立索引的文档与索引数值之间对应关系的表;

图5b是示出图5a中数据的倒排索引的表;

图5c是示出对图5b中的索引值和索引数据分别进行补位和加标记处理后的表;

图6a是示出图5c所示索引项的中间索引项的表;

图6b是示出根据本发明第一实施例的前缀树索引的图;

图7a是示出根据第二实施例的待建立索引的文档与索引数值之间对应关系的表;

图7b是示出图7a中数据的倒排索引的表;

图7c是示出对图7b中的索引值和索引数据分别进行补位和加标记处理后的表;

图8a是示出根据本发明第二实施例的中间索引项的前向索引的表;

图8b是示出根据本发明第二实施例的中间索引项的后向索引的表;

图9a是示出根据本发明第二实施例的中间索引项列表;

图9b是示出根据本发明第二实施例的前缀树索引的图;

图10是示出利用根据本发明第二实施例的索引进行检索的流程图。

具体实施方式

下面参照附图来说明本发明的实施例。应当注意,为了清楚的目的,附图和说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。

参考图1,图1是示出根据本发明实施例的数据处理装置100的功能结构的框图。如图1所示,数据处理装置100包括索引值提取器110、值串索引值索引器120和索引库130。与传统的数据处理装置相比,为了解决对值串形式的索引值进行范围检索时频繁的磁盘访问的问题,在数据处理装置100中引入了值串索引值索引器120,用于为值串形式(诸如数字串、日期时间数据、字符串等)的索引值建立前缀树索引。为了简化说明,此处仅以数字串为例描述数据处理装置100建立索引以及利用该索引进行检索的处理。根据详细描述的实施例,本领域技术人员应该能够容易地想到针对其它类型索引值的实现。

此外,为了使本发明的主旨更加突出,将省略对本领域技术人员已知的步骤和技术的详细描述。在本部分,只对与本发明的方案密切相关的结构部件或方法步骤进行描述。

如图1所示,以数字串索引为例,索引值提取器110从待索引文档集140中提取出数字串(即索引值),生成相应索引数据,例如关于数字串所在的文档的信息。值串索引值索引器120根据提取的数字串建立前缀树索引,并将该索引存储于索引库130中。

图2是示出根据本发明第一实施例的值串索引值索引器120结构的框图。如图2所示,值串索引值索引器120包括:中间索引值获取单元210和中间索引项产生单元220。

中间索引值获取单元210确定来自索引值提取器110的值串索引值是否具有预定长度。如果没有,则对其进行补位,使得每一个索引值的位数都达到预定长度。例如,使得每一个索引值的位数都等于这些索引值中最长索引值的位数。

中间索引值获取单元210还记录与索引值相关的索引数据,并且在每一个索引数据上添加能够表示该索引数据的长度的标记,以作为标识该索引数据结束位置的结束标志。

中间索引值获取单元210还基于补位后的各索引值的相应位以及相应位的组合来获取中间索引值,即公共前缀。换言之,中间索引值获取单元210通过将补位后的各索引值中两个以及两个以上具有的公共前缀的索引值视为一组,把该公共前缀获取为中间索引值。能够理解,一个组可能进一步包含若干个组,而其相应中间索引值表现出层次关系。

中间索引项产生单元220针对获取的中间索引值构造中间索引项。具体来说,中间索引项产生单元220为获取的中间索引值产生中间索引数据。此外,中间索引项产生单元220建立中间索引值与中间索引数据之间的对应关系。中间索引值、与其对应的中间索引数据以及它们之间的对应关系就构成了中间索引项。

可以针对两种应用来配置索引值提取器110。在第一种应用中,文档集中的每一个文档中只存在一个索引值;在第二种应用中,文档集中至少有一个文档具有多于一个的索引值。对于第一种应用,中间索引数据是中间索引值覆盖(即以其为前缀)的所有索引值的索引数据的集合。对于第二种应用,中间索引数据由前向索引数据和后向索引数据(即中间索引值覆盖(即以其为前缀)的所有索引值的索引数据的变形的集合)组成。将在后面结合例子对中间索引数据进行更详细的描述。

中间索引项产生单元220获得了最终的索引。该最终的索引为包括索引项和中间索引项的索引树,其中索引项没有索引数据,所有索引项的索引值按照升序连续存储。

中间索引项产生单元220把生成的索引保存在索引库130中。

下面结合示例详细说明中间索引项的构造过程,尤其是中间索引数据的获取。

下面结合图5a到图6b,详细说明在第一种应用中,值串索引值索引器120所进行的处理。在图5a到图6b所示实施例中,以数字串作为索引值。图5a是示出根据第一实施例的待建立索引的文档与索引值之间对应关系的表,其为索引值提取器110所提取的数据。如图5a可知,在本发明的第一实施例中,文档集的每一个文档中只存在一个相应的索引数值。例如,在编号为1的文档中只存在待索引的索引数值13。

图5b是示出图5a中数据的倒排索引的表,其中,索引数据即为相应的索引值所在的文档的文档编号。即,由索引值提取单元110提取的索引值12提取自两个文档,文档4和文档13,则索引值12所对应的索引数据即为4和13。

图5c是示出对图5b中的索引值和索引数据分别进行中间索引值获取单元210的补位和加标记处理后的表。在图5c所示实施例中,最长的索引值的最多位数为3。因此,将补位的预定位数设为3。为了得到中间索引项,将只有2位的索引值12、13和15补位到3位,成为012、013和015。经过该补位处理后,各索引值的位数相等。

此外,为了表明各索引值的索引数据的长度,或者说,为了在读取该索引数据时能够得知该索引数据的结束位置,中间索引值获取单元210在各索引数据上都添加一个结束标志。在本实施例中,是表示索引数据的长度的长度标志。在图5c的表中,放在索引数据之前,用例如但不限于“<>”的方式表示。例如,索引值012对应于2个索引数据4和13,因此,其索引数据的长度就是“2”,用“<2>”表示放在“4,13”之前。再例如,索引值122的索引数据写为<1>12,其表示:索引值的索引数据为12,索引数据长度为1。

现在参考图6a说明中间索引项产生单元220对中间索引项的获取。图6a是示出图5c所示索引项的中间索引项的表。在本文中,还可以将中间索引值解释为:根据索引值构成的前缀树中叶节点所属的节点(中间节点以及根节点)。如图6a可见,中间索引值为:01(其覆盖叶节点012、013和015)、12(其覆盖叶节点121、122和126)、14(其覆盖叶节点145、143和148)、1(其覆盖叶节点121、122、126、143、145和148)以及根结点“根”(其覆盖所有索引值)。“覆盖”可以理解为:该中间索引值是其“覆盖”的所有索引值的最大公共前缀,“根”覆盖所有索引值。

结合图5c和图6a可以看出中间索引项产生单元220获得各中间索引项的中间索引数据的方法。该中间索引数据是所对应的中间索引值覆盖的各索引值的索引数据的集合。且在该集合中,所述索引数据按照与所述索引值的各位相关的预定顺序排列,即按照相应索引值的升序排列。

例如,中间索引值01覆盖索引值012、013和015。在本实施例中,索引值是数字串,可以进行大小比较。因此,在本实施例中,按照从小到大的顺序排列索引值,如图5c中所示。具体来说,012、013和015的前两位对应相等,因此比较第3位。因为2<3<5,所以索引值的排序为012、013和015。相对应地,中间索引值01的中间索引数据为:012的索引数据;013的索引数据;015的索引数据。即,<2>4,13;<1>1;<2>8,11。

再比如说,中间索引值14覆盖索引值143、145和148。从第一位开始逐位比较后,按照从小到大的顺序进行排列,为143、145和148。因为,中间索引数据是中间索引值覆盖的各索引值的索引数据的集合,且在该集合中,索引值的索引数据按照与该索引值的各位相关的预定顺序(本例中即为从小到大的顺序)排列。因此,中间索引值14的中间索引数据是:143的索引数据;145的索引数据;148的索引数据。即,<2>6,10;<1>3;<1>7,如图6c中所示。

以此类推,从而得到了图6a中所示的中间索引项表。从而得到了最终的索引,如图6b的索引树所示。

使用在本实施例中建立的索引,可以以较少的磁盘访问次数来方便地进行范围检索。下面举例描述应用1情形下的范围检索。

在一个例子中,假定有一个范围检索(t1,t2),t1为起点,t2为终点。

首先,按所有索引值的最大长度把t1和t2补充为完整长度,不足最大长度的高位补0。

其次,在索引树中查找索引值为t1,t2的叶节点u1,u2。如果不存在索引值为t1的叶节点,则把具有大于t1的最小索引值的叶节点作为叶节点u1。如果不存在索引值为t2的叶节点,则把具有小于t2的最大索引值的叶节点作为叶节点u2。可以用已知的树查找方法在索引树中进行上述查找。

然后,计算u1,u2的最大公共前缀q,在索引树中查找中间索引值为q的中间索引项p。如果没有公共前缀,则p为根节点。由于索引值按照升序被存储为顺序列表,所以根据中间索引项p的子孙叶节点中起始节点的索引值、节点u1和u2的索引值的存储地址,能够计算u1是p的子孙叶节点中按从前向后(从小到大)顺序的第m个项,u2是p的子孙叶节点中按从前向后顺序的第n个项。

对于节点p的中间索引数据F,从F中第m到n个索引数据,作为查询结果。

例如,检索范围(121,122)的文档:

根据上下限的最大公共前缀12,起点121是中间索引值(中间节点)12的第1(m)个子孙叶节点,则中间节点12的中间索引数据中前0(m-1)个索引数据S1={};终点122是中间节点12的第2(n)个子孙叶节点,则中间节点12的中间索引数据中前2(n)个索引数据S2={2,5;12};于是S2-S1就是(121,122)的查询结果S={2,5;12}。

又例如检索范围(13,123)的文档:

将起点13补位为013。并在索引项中查找t1=13,t2=122。二者没有公共前缀,因此它们对应的中间节点为根节点。

节点013为根的第2(m)个子孙叶子节点,节点122为根的第5(n)个子孙叶子节点。因此,按照从前往后(从小到大)的顺序,根的中间索引数据中前1(m-1)个索引数据S1={4,13};前5(n)个索引数据S2={4,13;1;8,11;2,5;12}。于是,S2-S1就是范围检索(13,122)的查询结果S={1;8,11;2,5;12}。

可以看出,每一个范围检索都被转化为1个取索引数据的操作和一个集合运算。但其局限性是该应用的文档中只能有一个索引值。

图4是示出根据本发明第一实施例的为值串形式的索引值建立索引的方法的流程图。

在步骤S11中,中间索引值获取单元210确定来自索引值提取器110的值串索引值是否具有预定长度。如果没有,则对其进行补位,使得每一个索引值的位数都达到预定长度。例如,使得每一个索引值的位数都等于这些索引值中最长索引值的位数。

在步骤S12中,中间索引值获取单元210还记录与索引值相关的索引数据,并且在每一个索引数据上添加能够表示该索引数据的长度的标记,以作为标识该索引数据结束位置的结束标志。

在步骤S13中,中间索引值获取单元210还基于补位后的各索引值的相应位以及相应位的组合来获取中间索引值,即公共前缀。换言之,中间索引值获取单元210通过将补位后的各索引值中两个以及两个以上具有公共前缀的索引值视为一组,把该公共前缀获取为中间索引值。能够理解,一个组可能进一步包含若干个组,而其相应中间索引值表现出层次关系。

在步骤S14中,中间索引项产生单元220针对获取的中间索引值构造中间索引项。具体来说,中间索引项产生单元220为该获取的中间索引值产生中间索引数据。此外,中间索引项产生单元220建立中间索引值与中间索引数据之间的对应关系。中间索引值、与其对应的中间索引数据以及它们之间的对应关系就构成了中间索引项。

在步骤S15中,中间索引项产生单元220获得了最终的索引。该最终的索引为包括索引项和中间索引项的索引树,其中索引项没有索引数据,所有索引项的索引值按照升序连续存储。

中间索引项产生单元220把生成的索引保存在索引库130中。

接下来,将说明本发明的第二种应用情形。在第二种应用中,文档集中至少有一个文档具有多于一个的索引值。下面,参考图7a到图9b说明本发明的第二实施例。

图7a是示出根据第二实施例的待建立索引的文档与索引数值之间对应关系的表,其为索引值提取器110所提取的数据。在图7a所示文档集中,每一个文档对应于一个或多个索引数值。例如,文档1对应于索引数值15,而文档2对应于索引数值13、15、143和145。

与第一实施例相似,图7b是示出图7a中数据的倒排索引的表,其中,索引数据即为相应的索引值所在的文档的文档编号。例如,在索引值提取单元110中提取的索引值12提取自3个文档,文档3、4和7,则索引值12所对应的索引数据即为3、4和7。

图7c是示出对图7b中的索引值和索引数据分别进行中间索引值获取单元210的补位和加标记处理后的表。在图7c所示实施例中,最长的索引值的位数为3。因此,将补位的预定位数设为3。为了得到中间索引项,将只有2位的索引值12、13和15补位到3位,成为012、013和015。经过该补位处理后,各索引值的位数相等。

此外,为了表明各索引值的索引数据的长度,或者说,为了在读取该索引数据时能够得知该索引数据的结束位置,中间索引值获取单元210在各索引数据上都添加一个结束标志。在本实施例中,是表示索引数据的长度的长度标志。在图7c的表中,放在索引数据之前,用例如但不限于“<>”的方式表示。例如,索引值012对应于3个索引数据3、4和7,因此,其索引数据的长度就是“3”,用“<2>”表示放在“3,4,7”之前。

图3是示出根据本发明第二实施例的值串索引值索引器120’的结构的图。

值串索引值索引器120’包括:中间索引项获取单元210和中间索引项产生单元220’。其中,中间索引项获取单元210的功能结构与第一实施例中说明的相同,故在此省略其说明。

用于第二种应用的中间索引项产生单元220’包括:前向索引产生单元224,用于构成中间索引项的前向索引数据;后向索引产生单元226,用于构成中间索引项的后向索引数据。

现在参考图8a和8b说明中间索引项的获取。图8a是示出根据本发明第二实施例的中间索引项的前向索引的表。图8b是示出根据本发明第二实施例的中间索引项的后向索引的表。

如图8a和8b可见,中间索引值为:01(其覆盖叶节点012、013和015)、12(其覆盖叶节点121、122和126)、14(其覆盖叶节点145、143和148)、1(其覆盖叶节点121、122、126、143、145和148)以及根结点“根”(其覆盖所有索引值)。

在本实施例中,每一个中间索引值的中间索引项包含两组中间索引数据,即:前向索引数据和后向索引数据。在本实施例中,中间索引数据是中间索引值覆盖的各索引值的索引数据的变形的集合。

下面参考图8a和图7c说明前向索引数据的构造方法。

对于每一个中间索引值(诸如01),将该中间索引值覆盖的索引值(例如012、013和015)按照与所述索引值的各位相关的预定顺序排列,即按照索引值的升序排列。在本实施例中,作为数字串,将中间索引值01所覆盖的索引值按照从小到大的顺序进行排列,即012,013和015。

从前向后遍历这些索引值,例如索引值012,013和015,并利用等式(1)来获得该中间索引值(01)的前向索引数据F1;F2;...;FK,其中

>Fn=Cn-Cn(i=1n-1Ci)---(1)>

在等式(1)中,Fn是中间索引值的前向索引数据中与按预定顺序排列的第n个索引值相对应的项,Ci是第i个索引值的索引数据,i和n为正整数,i≤n,且n≤每个中间索引值所覆盖的索引值的项数K。

例如,中间索引值01覆盖索引值012、013和015,它们对应的索引数据分别是:<3>3,4,7;<2>2,4;<3>1,2,3。则:

>F1=C1-C1(i=10Ci)=<3>3,4,7-<3>3,4,70=<3>3,4,7;>

F2=C2-C2∩(C1)=<2>2,4-<2>2,4∩<3>3,4,7=<1>2;

F3=C3-C3∩(C1∪C2)=<3>1,2,3-<3>1,2,3∩(<3>3,4,7∪<2>2,4)=<1>1。

因而,中间索引值01所对应的前向索引数据是<3>3,4,7;<1>2;<1>1。

以此类推,可以得到各中间索引项的前向索引数据,如图8a所示。

下面参考图8b说明后向索引数据的构造方法。

对于每一个中间索引值,将该中间索引值覆盖的索引值按照与所述索引值的各位相关的上述预定顺序的相反顺序排列。从前向后遍历这些索引值,并利用等式(2)来获得该中间索引值的后向索引数据F1;F2;...;FK

>Fn=Cn-Cn(i=1n-1Ci)---(2)>

在等式(2)中,Fn是中间索引值的后向索引数据中与按上述预定顺序的相反顺序排列的第n个索引值相对应的项,Ci是第i个索引值的索引数据,i和n为正整数,i≤n,且n≤每个中间索引值所覆盖的索引值的项数K。

以中间索引值01为例。中间索引值01覆盖索引值012、013和015。在本实施例中,作为数字串,将索引值012、013和015按照从大到小的顺序进行排列,即015,013和012;它们对应的索引数据分别是:<3>1,2,3;<2>2,4;<3>3,4,7。则,根据等式(2)得到:

>F1=C1-C1(i=10Ci)=<3>1,2,3-<3>1,2,30=<3>1,2,3;>

F2=C2-C2∩(C1)=<2>2,4-<2>2,4∩<3>1,2,3=<1>4;

F3=C3-C3∩(C1∪C2)=<3>3,4,7-<3>3,4,7∩(<3>1,2,3∪<2>2,4)=<1>7。

因而,中间索引值01所对应的后向索引项是<3>1,2,3;<1>4;<1>7。

以此类推,可以得到各中间索引值的后向索引项,如图8b所示。

参考图9a,图9a是示出根据本发明第二实施例的中间索引项列表。在本实施例中,每一个中间索引项包括两组中间索引数据:前向索引数据,在图9a中示于每组索引数据的上面一行;后向索引数据,示于每组索引数据的下面一行。

根据上面所述的计算和过程,最终得到最终索引结果,即中间索引项的索引数据和索引项,分别如图9a和图9b所示。其中,图9b是示出根据本发明第二实施例的前缀树索引的图。

接下来,结合图10说明利用在第二实施例中建立的索引对数值范围进行检索的方法。图10是示出利用根据本发明第二实施例的索引进行检索的流程图。

利用第二实施例中的索引,只能对以某个中间节点的第一个叶节点为起点,或以某个中间节点的最后一个叶节点为终点的查询条件进行检索。例如,假定有一个检索范围(t1,t2),t1为起点,t2为终点。

在步骤S21中,按所有索引项的最大长度把t1和t2补充为完整长度。不足最大长度的高位补0。

在索引树中查找索引值为t1,t2的叶节点u1,u2。在步骤S22中,判断是否存在索引值为t1的叶节点。如果不存在,则步骤进行到S23。在步骤S23中,把具有大于t1的最小索引值的叶节点作为叶节点u1。可以用已知的树查找方法在索引树中进行上述查找。如果在步骤S22中判断为存在索引值为t1的叶节点,或者在步骤S23之后,执行到步骤S24。

在步骤S24中,判断是否存在索引值为t2的叶节点。如果不存在,则步骤进行到S25。在步骤S25中,把具有小于t2的最大索引值的叶节点作为叶节点u2。如果在步骤S24中判断为存在索引值为t2的叶节点,或者在步骤S25之后,执行到步骤S26。

在步骤S26中,判断u1是否是某中间节点的第一子孙叶节点。如果是,则进行到步骤S29。如果不是,则步骤进行到S27。在步骤S27中,判断u2是否是某中间节点的最后一个子孙叶节点。如果是,则进行到步骤S30。如果不是,则进行到步骤S28,使用传统方法对该查询条件进行检索。

计算u1,u2的最大公共前缀q,在索引树中查找中间索引值为q的中间索引项p。如果没有公共前缀,则p为根节点。由于索引值按照升序被存储为顺序列表,并且节点u1或u2是中间索引项p的子孙叶节点中的起始或结束节点,因此,根据节点u1或u2的索引值的存储地址,能够计算节点u2或u1是p的子孙叶节点中按从前向后或从后向前顺序的第几个项。例如,当u1是中间节点p的第一子孙叶节点时,在步骤S29中,计算u2是p的子孙叶节点中按从前向后(从小到大)顺序的第j个项,并从节点p的前向索引数据F中取出前j个索引数据作为查询结果。

当u2是中间节点p的最后一个子孙叶节点时,在步骤S30中,计算u1是p的子孙叶节点中按从前向后(从大到小)顺序的第k个项,并从节点p的后向索引数据B中取出后k个索引数据作为查询结果。

下面以对范围(121,123)进行查询为例进行说明。

121和123位数完整,不需进行补位,因此直接进入步骤S22。在步骤S22中,判断为索引值为121的节点存在于叶节点中。进入步骤S24。在步骤S24中判断为索引值为123的叶节点不存在于叶节点中。进行到步骤S25,将具有小于123的最大索引值的叶节点作为终点,此例中将具有索引值122的叶节点作为终点。则查询范围实际为(121,122)。然后,进入步骤S26。

在步骤S26中,判断为具有索引值121的叶节点是索引值为12的中间节点的第一个子孙叶节点。因此,进入步骤S29。在步骤S29中,计算索引值为122的叶节点是索引值为12的中间节点的从前向后第2个项。则取出该中间节点的前向索引数据<2>3,5;<1>4;<2>6,7,并从该前向索引数据中取出前2个索引数据,则最终得到的最终的索引数据为<2>3,5;<1>4。

再以对范围(14,126)的文档进行查询为例进行说明。

在步骤S21中,对14进行补位后得到014。然后,进入步骤S22。在步骤S22中,判断为不存在索引值为014的叶节点。因此,进入步骤S23。在步骤S23中,将具有大于014的最小索引值的叶节点015作为起点。则查询范围实际为(015,126)。然后,步骤进入S24。在步骤S24中,判断为存在索引值为126的叶节点。则步骤进入S26。

在步骤S26中,判断为索引值为015的叶节点不是索引值为01的中间节点的第一子孙叶节点。因此,步骤进入S27。在步骤S27中判断为索引值为126的叶节点是索引值为12的中间节点的最后一个子孙叶节点。从而,进入步骤S30。

由于015和126的没有公共前缀,因此它们的公共父节点为根节点。则在步骤S30中,计算索引值为015的叶节点是根节点的子孙叶节点中按从后向前(从大到小)的顺序的第7个项。取出根节点的后向索引数据<2>3,5;<1>2;<1>4;<2>6,7;<0>;<0>;<0>;<0>;<0>,并且取出前7个索引数据,则得到最终索引<2>3,5;<1>2;<1>4;<2>6,7;<0>;<0>;<0>。

可以看到,每一个范围检索都可以转化为一个取索引数据的操作。从而大大减少了所需磁盘访问次数。

以上所述的第一应用情形和第二应用情形都有其局限性,但在一定应用领域中会很大的提高范围检索速度。诸如在日志统计中,因为大部分日志统计都是整点或整分的时间段内的检索,因为减少了取索引数据的操作(以上两个实施例都只有一次取索引数据的操作),所以使用第二实施例的方法可以大大提供范围检索速度。

本文结合图4和图10的流程图描述了构造索引以及进行查询的操作过程。本领域技术人员会了解:附图和相应描述只是出于举例的目的,不意在限制所述操作过程中各步骤的顺序。所述步骤可以按所描述顺序进行或以其它顺序串行执行,或并行执行。

虽然参考附图详细说明了本发明的实施例,然而本领域技术人员应该了解可以根据设计需要对本发明进行各种变型、修改、组合以及子组合,只要该修改落入所附权利要求书的实质和范围内即可。

附记

附记1.一种数据处理装置,包括为值串形式的索引值建立前缀树索引的索引部分,所述索引部分包括:

中间索引值获取单元,用于将索引值补位到预定长度,并基于补位后的各索引值的相应位以及所述相应位的组合来获取中间索引值;

中间索引项产生单元,用于产生针对所述中间索引值的索引数据作为中间索引数据,并建立所述中间索引值与所述中间索引数据之间的对应关系,所述中间索引数据是所述中间索引值覆盖的各索引值的索引数据或这些索引数据的变形的集合;

其中,在所述集合中,所述索引数据或这些索引数据的变形按照与所述索引值的各位相关的预定顺序排列,并且,每一个索引值的索引数据或索引数据的变形各自包含表示本身在何处结束的结束标志。

附记2.根据附记1所述的数据处理装置,其中,在每一个文档具有一个索引值的应用中,所述中间索引数据是所述中间索引值覆盖的各索引值的相应索引数据的集合。

附记3.根据附记1所述的数据处理装置,其中,在文档的至少之一具有多于一个索引值的应用中,所述中间索引数据是所述中间索引值覆盖的各索引值的相应索引数据的变形的集合。

附记4.根据附记3所述的数据处理装置,其中,所述中间索引项产生单元还包括:前向索引产生单元,用于产生所述中间索引值的前向索引数据,并建立所述中间索引值与其前向索引数据之间的对应关系;后向索引产生单元,用于产生所述中间索引值的后向索引数据,并建立所述中间索引值与其后向索引数据之间的对应关系。

附记5.根据附记4所述的数据处理装置,其中,在所述前向索引产生单元中,对于每一个中间索引值,将该中间索引值覆盖的索引值按照与所述索引值的各位相关的所述预定顺序排列,并从前向后遍历这些索引值,利用等式(1)来获得所述中间索引值的前向索引数据:

>Fn=Cn-Cn(i=1n-1Ci)---(1)>

其中,Fn是所述中间索引值的前向索引数据中与按所述顺序排列的第n个索引值相对应的项,Ci是第i个索引值的索引数据,i和n为正整数,i≤n,且n≤每个中间索引值所覆盖的索引值的项数。

附记6.根据附记4所述的数据处理装置,其中,在所述后向索引产生单元中,对于每一个中间索引值,将该中间索引值覆盖的索引值按照与所述索引值的各位相关的所述预定顺序的相反顺序排列,并从前向后遍历这些索引值,利用等式(2)来获得所述中间索引值的后向索引数据:

>Fn=Cn-Cn(i=1n-1Ci)---(2)>

其中,Fn是所述中间索引值的后向索引数据中与按所述相反顺序排列的第n个索引值相对应的项,Ci是第i个索引值的索引数据,i和n为正整数,i≤n,且n≤每个中间索引值所覆盖的索引值的项数。

附记7.根据附记1到6中任一项所述的数据处理装置,其中,所述值串形式的索引值是日期时间索引值或数字索引值。

附记8.一种在数据处理装置中用于为值串形式的索引值建立前缀树索引的索引方法,包括:

中间索引值获取步骤,将索引值补位到预定长度,并基于补位后的各索引值的相应位以及所述相应位的组合来获取中间索引值;

中间索引项产生步骤,产生针对所述中间索引值的索引数据作为中间索引数据,并建立所述中间索引值与所述中间索引数据之间的对应关系,所述中间索引数据是所述中间索引值覆盖的各索引值的索引数据或这些索引数据的变形的集合;

其中,在所述集合中,所述索引数据或这些索引数据的变形按照与所述索引值的各位相关的预定顺序排列,并且,每一个索引值的索引数据或索引数据的变形各自包含表示本身在何处结束的结束标志。

附记9.根据附记8所述的索引方法,其中,在每一个文档具有一个索引值的应用中,所述中间索引数据是所述中间索引值覆盖的各索引值的相应索引数据的集合。

附记10.根据附记8所述的索引方法,其中,在文档的至少之一具有多于一个索引值的应用中,所述中间索引数据是所述中间索引值覆盖的各索引值的相应索引数据的变形的集合。

附记11.根据附记10所述的索引方法,其中,所述中间索引项产生步骤还包括:前向索引产生步骤,产生所述中间索引值的前向索引数据,并建立所述中间索引值与其前向索引数据之间的对应关系;后向索引产生步骤,产生所述中间索引值的后向索引数据,并建立所述中间索引值与其后向索引数据之间的对应关系。

附记12.根据附记11所述的索引方法,其中,在所述前向索引产生步骤中,对于每一个中间索引值,将该中间索引值覆盖的索引值按照与所述索引值的各位相关的所述预定顺序排列,并从前向后遍历这些索引值,利用等式(1)来获得所述中间索引值的前向索引数据:

>Fn=Cn-Cn(i=1n-1Ci)---(1)>

其中,Fn是所述中间索引值的前向索引数据中与按所述顺序排列的第n个索引值相对应的项,Ci是第i个索引值的索引数据,i和n为正整数,i≤n,且n≤每个中间索引值所覆盖的索引值的项数。

附记13.根据附记11所述的索引方法,其中,在所述后向索引产生步骤中,对于每一个中间索引值,将该中间索引值覆盖的索引值按照与所述索引值的各位相关的所述预定顺序的相反顺序排列,并从前向后遍历这些索引值,利用等式(2)来获得所述中间索引值的后向索引数据:

>Fn=Cn-Cn(i=1n-1Ci)---(2)>

其中,Fn是所述中间索引值的后向索引数据中与按所述相反顺序排列的第n个索引值相对应的项,Ci是第i个索引值的索引数据,i和n为正整数,i≤n,且n≤每个中间索引值所覆盖的索引值的项数。

附记14.根据附记8-13中任一项所述的索引方法,其中,所述值串形式的索引值是日期时间索引值或数字索引值。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号