一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于树状结构的数据索引方法及树状结构的生成方法与流程

2022-03-26 14:10:42 来源:中国专利 TAG:


1.本发明涉及数据检索技术领域,尤其涉及一种基于树状结构的数据索引方法及树状结构的生成方法。


背景技术:

2.现有技术方案在对结构化数据(如:json、xml、yaml等格式的数据)的检索主要采用扫描的方式,扫描方式具体可以分为两种,一是全文扫描,二是分层扫描。
3.然而,全文扫描存在速度慢和效率低的问题。分层扫描相比全文扫描,虽然可以大幅提提升扫描效率,但随着数据量的增大,检索性能呈现出指数级下降。因此,现有的结构化数据的检索手段存在速度慢、效率低并且随着数据量的增加,检索性能呈现出指数级下降的问题,


技术实现要素:

4.为解决上述技术问题,在本发明的一个方面提出了一种基于树状结构的数据索引方法,所述树状结构至少包含一个中间层,每个所述中间层至少包含一个指针数组,每个所述指针数组指向一个存储空间,所述数据索引方法包括:获取目标数据的索引标签,所述索引标签由多个索引元素组成;依次将所述多个索引元素映射到对应的存储空间,并响应于前一个索引元素映射到的存储空间中存在指针数组,而将下一个索引元素映射到对应的存储空间;响应于所述下一个索引元素所映射到的存储空间不是所述前一个索引元素所映射到的存储空间中的指针数组所指向的存储空间,或者响应于所述索引元素所映射到的存储空间为所述树状结构的叶子节点所对应的存储空间,而返回相应的索引结果。
5.在一个或多个实施例中,所述树状结构的一个分支上包含一个或多个同属于一个中间层的指针数组;当一个分支上包含多个指针数组时,所述多个指针数组中的后一个指针数组存放在前一个指针数组所指向的存储空间中。
6.在一个或多个实施例中,当所述指针数组为其所在分支的最后一个指针数组时,在所述指针数组所指向的存储空间中设置指定符号以用于标记中间层的结束。
7.在一个或多个实施例中,所述方法还包括:建立各指针数组所指向的存储空间与ascii码之间的映射关系。
8.在一个或多个实施例中,所述将所述多个索引元素映射到对应的存储空间包括:基于每个索引元素的ascii码映射到对应的存储空间。
9.在一个或多个实施例中,所述方法还包括:响应于所述下一个索引元素所映射到的存储空间不是所述前一个索引元素所映射到的存储空间中的指针数组所指向的存储空间,返回检索结果为空。
10.在一个或多个实施例中,所述方法还包括:响应于所述索引元素所映射到的存储空间为所述树状结构的叶子节点所对应的存储空间,获取所述存储空间中存储的数据并返回。
11.在本发明的另一个方面,提出了一种树状结构的生成方法,所述树状结构用于数据索引,所述方法包括:获取结构化数据;对所述结构化数据进行扁平化处理以获得扁平化的索引标签,其中,所述扁平化的索引标签包含目标数据以及对应的标签;为所述扁平化的索引标签的每个索引元素分配指针数组,每个所述指针数组指向一个存储空间,并构建每个索引元素与对应存储空间的映射关系;对所述结构化数据的层级结构进行分析,并确定每一层级中所包含的分支及分支所包含的索引元素;响应于一个分支中包含多个索引元素,将后一个索引元素的指针数组存放于前一个索引元素所能映射到的存储空间中。
12.在一个或多个实施例中,所述树状结构的生成方法还包括:当所述指针数组为其所在分支的最后一个指针数组时,在所述指针数组所指向的存储空间中设置指定符号以用于标记中间层的结束。
13.在一个或多个实施中,所述原始结构化数据包括采用以下格式保存的数据,所述以下格式包括:json、xml和yaml。
14.本发明的有益效果包括:通过本发明的方法使得索引路径的确定无需再将索引元素在树状结构的全文或某一分层中进行遍历匹配节点来确定,而仅需将索引标签中的索引元素依次进行映射,并判断下一个索引元素所映射到的存储空间是否为所述前一个索引元素所映射到的存储空间中的指针数组所指向的存储空间来判断是否存在由这两个相邻的索引元素所组成的索引路径,从而能够更快的完成数据索引,且大大降低了数据量对索引速度的影响。
附图说明
15.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
16.图1为本发明的基于树状结构的数据索引方法的工作流程图;
17.图2为本发明的树状结构的生成方法的工作流程图;
18.图3为本发明对结构化数据进行扁平化处理实施例的示意图;
19.图4为本发明的数状结构具体实施例的结构示意图。
具体实施方式
20.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
21.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
22.图1为本发明的基于树状结构的数据索引方法的工作流程图。其中,本发明的树状结构至少包含一个中间层,每个中间层至少包含一个指针数组,每个指针数组指向一个存储空间,如图1所示,本发明的基于树状结构的数据索引方法的工作流程包括:步骤s1、获取目标数据的索引标签,索引标签由多个索引元素组成;步骤s2、依次将多个索引元素映射到
对应的存储空间,并响应于前一个索引元素映射到的存储空间中存在指针数组,而将下一个索引元素映射到对应的存储空间,直至步骤s3响应于下一个索引元素所映射到的存储空间不是前一个索引元素所映射到的存储空间中的指针数组所指向的存储空间,或者步骤s4响应于索引元素所映射到的存储空间为树状结构的叶子节点所对应的存储空间,而返回相应的索引结果。
23.如上述实施例,在本发明的基于树状结构的数据索引方法中,索引路径的确定无需再将索引元素在树状结构的全文或某一分层中进行遍历匹配节点来确定,而仅需将索引标签中的索引元素依次进行映射,并判断下一个索引元素所映射到的存储空间是否为所述前一个索引元素所映射到的存储空间中的指针数组所指向的存储空间来判断是否存在由这两个相邻的索引元素所组成的索引路径,从而能够更快的完成数据索引,且大大降低了数据量对索引速度的影响。
24.在一个实施例中,本发明的树状结构的一个分支上包含一个或多个同属于一个中间层的指针数组;且当一个分支上包含多个指针数组时,多个指针数组中的后一个指针数组存放在前一个指针数组所指向的存储空间中。在一个分支中配置多个指针数组的目的在于,如果树状结构的某一中间层中的分支数量较多,则需要通过为每个分支配置具有多个索引元素的索引标签来进行区分,而每个索引元素需要对应一个指针数组。
25.在一个实施例中,当指针数组为其所在分支的最后一个指针数组时,在该指针数组所指向的存储空间中设置指定符号以用于标记中间层的结束。即该指定符号所对应的指针数组所指向的存储空间属于下一个中间层的存储空间。指定符号的设置使得树状结构的层级关系更加清晰,进而方便管理人员对树状结构的设计及构建。
26.在一个实施例中,本发明的方法还包括建立各指针数组所指向的存储空间与ascii码之间的映射关系。相应的,将多个索引元素映射到对应的存储空间包括基于每个索引元素的ascii码映射到对应的存储空间。即在本发明中,各个索引元素可以由两种方式来指向同一存储空间,一种方式是根据该索引元素所对应的指针数组,另一种方式是根据索引元素与对应存储空间所建立的映射关系。本发明通过在前一个索引元素所能映射到的存储空间中存储接下来一个索引元素所对应的指针数组来建立相邻两个索引元素之间的联系,并通过验证这一联系来确定索引路径。其中,用户还可以自定义符号并保存在ascii码对照表中,进而使得本发明的索引元素的组合更加多变也更加灵活。
27.在一个实施例中,本发明的方法还包括响应于下一个索引元素所映射到的存储空间不是前一个索引元素所映射到的存储空间中的指针数组所指向的存储空间,返回检索结果为空。其中,当下一个索引元素所映射到的存储空间不是前一个索引元素所映射到的存储空间中的指针数组所指向的存储空间时,即表示树状结构中不存在对应该前后两个索引元素的索引路径,因而也就不可能获得相应的索引结果。本实施例具体包含以下几种情况:
28.1)如果索引标签的任意一个索引元素未找到对应索引节点(即索引元素所映射到的存储空间中不存在指针数组),则检索失败;
29.2)如果索引标签最后一个索引元素命中的节点,不包含标签子节点(即索引元素所映射到的存储空间中存在指针数组但该指针数组所指向的存储空间不同于下一个索引元素所映射到的存储空间),则检索失败
30.3)如果叶子标签最后一个字符命中的节点,不包含值域子节点(即叶子节点所对
应的存储空间中没有数据),则检索失败。
31.在一个实施例中,响应于索引元素所映射到的存储空间为树状结构的叶子节点所对应的存储空间,获取该存储空间中存储的数据并返回。
32.在本发明的另一个方面,还提出了一种树状结构的生成方法,该树状结构用于实现上述各实施例中所提及的数据索引方法。为了能够更加清楚的阐述本发明的树状结构及其生成过程,以下将结合具体视图进行说明:
33.图2为本发明的树状结构的生成方法的工作流程图。本发明的树状结构的生成方法的工作流程包括:步骤10获取结构化数据;步骤20、对结构化数据进行扁平化处理以获得扁平化的索引标签,其中,扁平化的索引标签包含目标数据以及对应的标签;步骤30、为扁平化的索引标签的每个索引元素分配指针数组,每个指针数组指向一个存储空间,并构建每个索引元素与对应存储空间的映射关系;步骤40、对结构化数据的层级结构进行分析,并确定每一层级中所包含的分支及分支所包含的索引元素;步骤50、响应于一个分支中包含多个索引元素,将后一个索引元素的指针数组存放于前一个索引元素所能映射到的存储空间中。上述中的结构化数据包括采用以下格式保存的数据,格式包括:json、xml和yaml。
34.在一个实施例中,本发明树状结构生成流程还包括:当指针数组为其所在分支的最后一个指针数组时,在指针数组所指向的存储空间中设置指定符号以用于标记中间层的结束。
35.在一个实施例中,上述原始结构化数据包括采用以下格式保存的数据,其中,格式包括:json、xml和yaml。
36.为了更够能加清楚的阐述本发明的树状结构以及本发明的数据索引过程,以下将结合具体实施例进行说明。
37.具体实施例
38.图3为本发明对结构化数据进行扁平化处理实施例的示意图。如图3所示,其示出的是对中国各个地区人口及编号的结构化数据的扁平化处理过程。其中,china为范围最大的分支,其依次包括shanghai,jiangsu以及jiangxi三个子分支,其中,shanghai又包括pudong子分支以及huangpu子分子,其中,pudong对应的人口数量pop为5681512,对应的编号为1210。其余几个分支的含义理解类似此处不再赘述。对上述结构化数据进行层级结构分析可知,china应单独在一个层级,shanghai、jiangsu以及jiangxi在一个层级,pudong、huangpu、nanjing、suzhou以及nanchang在一个层级。对其进行扁平化处理后获得10个扁平化的索引标签(如图3右侧框中所示)。其中,china、shanghai、pudong等即为原始索引标签,每个字母即为索引元素,当然也可以采用其他符号作为索引元素。基于上述获得的层级结构以及扁平化的索引标签生成的树状结构如下所示。
39.图4为本发明的数状结构具体实施例的结构示意图。如图4所示,root节点(根节点)下的仅具有一个子分支china,china下具有两个子分支jiang和shanghai,其中jiangxi下又具有su和xi两个子分支,其中子分支jiang与其子分支su或xi与子分支shanghai同在一个层级,具体层级以指定索引元素“;”进行分隔,即每遇到一个“;”即为一个层级的结束。如在china的最后一个索引元素“;”中,在其所对应的存储空间中存在两个指针数组,一个对应索引元素j,另一个对应索引元素s。索引元素c所对应的存储空间中存储有索引元素h所对应的指针数组,当将c映射到对应的存储空间后,发现存在指针数组,即表明其后面还
存在其它的索引元素,将h映射到对应的存储空间后,当c的存储空间中的指针数组也指向h映射到的存储空间时,则表明索引元素c和索引元素h所确定的分支存在;当索引元素a之后的索引元素为“;”时,索引元素“;”映射到对应的存储空间中将存在两个指针数组,并分别对应索引元素j以及索引元素s,此时需要分别判断索引元素a的下一个索引元素能映射的存储空间是否为上述两个指针数据任意一个所指向的存储空间,若是,则表示存在对应的索引路径,若否则表示不存在对应的索引路径;按照上述过程继续索引直至获得返回结果为空或返回对应的目标数据。
40.如上述本发明的数据索引过程,其数据索引过程无需遍历树状结构或树状结构某一层级中的各个节点,因而具有更快的索引速度。
41.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
42.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
43.上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
44.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献