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

前缀树的处理方法、装置、终端及存储介质与流程

2022-06-29 22:34:41 来源:中国专利 TAG:


1.本发明实施例涉及数据库技术,尤其是数据库检索涉及的前缀树技术,涉及一种前缀树的处理方法、装置、终端及存储介质。


背景技术:

2.在交易量较大的业务系统的数据库中,庞大的数据量会导致信息难以进行搜索操作。对于字符型数据,通常使用字典树(tire树)进行关键词的存储。然而,对于八位字符组成的关键字而言,使用字典树进行关键字存储时,无法动态的对字典树进行调整。如何快速动态的对前缀树进行插入成为亟待解决的问题。


技术实现要素:

3.本发明提供一种前缀树的处理方法、装置、终端及存储介质,以实现动态更新前缀树,提高前缀树的生成效率。
4.第一方面,本发明实施例提供了一种前缀树的处理方法,其特征在于,包括:
5.依次遍历关键字的字节;
6.获取目标字节的高四位数据和低四位数据,目标字节为当前遍历的字节;
7.在前缀树中根据高四位数据和低四位数据进行遍历,遍历过程中若出现节点缺失,则根据高四位数据或低四位数据插入相应节点,直至关键字的全部字节遍历完毕。
8.第二方面,本发明实施例还提供了一种前缀树的处理装置,其特征在于,包括:
9.关键字遍历模块,用于依次遍历关键字的字节;
10.字节获取模块,用于获取目标字节的高四位数据和低四位数据,目标字节为当前遍历的字节;
11.前缀树遍历模块,用于在前缀树中根据高四位数据和低四位数据进行遍历,遍历过程中若出现节点缺失,则根据高四位数据或低四位数据插入相应节点,直至关键字的全部字节遍历完毕。
12.第三方面,本发明实施例还提供了一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,处理器执行程序时实现如本发明实施例所示的前缀树的处理方法。
13.第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行如本发明实施例所示的前缀树的处理方法。
14.本发明实施例提供的前缀树的处理方法,依次遍历关键字的字节;获取目标字节的高四位数据和低四位数据,目标字节为当前遍历的字节;在前缀树中根据高四位数据和低四位数据进行遍历,遍历过程中若出现节点缺失,则根据高四位数据或低四位数据插入相应节点,直至关键字的全部字节遍历完毕。相对于目前字典树无法动态调整的问题,本发明实施例提供的前缀树的处理方法,将关键字的目标字节拆分为高四位数据和低四位数
据。基于高四位数据和低四位数据进行前缀树的遍历。在遍历过程中,若存在表示高四位数据或低四位数据的节点,则继续便利;若出现节点缺失,即缺少表示高四位数据的节点或表示低四位数据的节点,则根据缺少的高四位数据或低四位数据插入相应节点。实现在遍历的过程中对前缀树进行动态更新,提高前缀树的生成速度。
附图说明
15.图1是本发明实施例一中的前缀树的处理方法的流程图;
16.图2是本发明实施例二中的前缀树的处理装置的结构示意图;
17.图3是本发明实施例三中的前缀树的处理终端的结构示意图。
具体实施方式
18.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
19.实施例一
20.图1为本发明实施例一提供的前缀树的处理方法的流程图,本实施例可适用于数据库检索涉及的动态更新前缀树的情况,该方法可以由执行数据库查询的终端执行。该终端可以为移动终端、平板电脑、笔记本电脑、个人计算机或服务器。该方法具体包括如下步骤:
21.步骤110、依次遍历关键字的字节。
22.关键字由多个字节组成,对关键字进行存储相当于对组成关键字的字节进行存储。对于需要写入到前缀树的关键字,依次获取关键字的每个字节。
23.步骤120、获取目标字节的高四位数据和低四位数据,目标字节为当前遍历的字节。
24.单签遍历的关键字的字节为目标字节。目标字节为8位。本发明实施例中将每个字节拆分为高四位数据和低四位数据,在前缀树中插入表示高四位数据的第一节点以及表示低四位数据的第二节点。第一节点和第二节点可以为父子关系,也可以不是父子关系。可以通过链表的方式将第一节点与第二节点进行关联,进而得到目标字节。以此类推,得到关键字的多个字节对应的链表。
25.步骤130、在前缀树中根据高四位数据和低四位数据进行遍历,遍历过程中若出现节点缺失,则根据高四位数据或低四位数据插入相应节点,直至关键字的全部字节遍历完毕。
26.前缀树具有唯一的根节点。在对前缀树进行遍历时,从根节点作为起始的遍历节点。
27.前缀树中每个节点的类型为节点类。节点类中公有数据成员包括:子节点列表信息leafsinfo、节点所代表的的四位数据value(高四位数据或低四位数据)、节点是否为有效节点ifexist、节点是否为终端节点endn以及关联数组。关联数组用于记载节点的子节点指针以及节点所在链的链节点指针。
28.其中,关联数组存储节点的子节点的指针以及链节点指针,其中子节点指针指向
节点所对应的子节点,链节点指针指向当前节点所对应的链节点。当子节点不存在并且链节点指针也不存在时,关联数组元素个数为0,当链节点存在时,关联数组元素个数为子节点数量 1(其中链节点指针占用一个元素)。
29.链节点表示前缀树包含的链,链可以通过链节点进行表示。链节点属于链节点类。链节点类包括头节点指针和尾节点指针。头节点指针指向前缀树中的链起始的节点,尾节点指针指向前缀树中的链截止的节点。
30.关联数组中可以包含的链节点指针表示节点所在的列,通过链节点指针以及链节点的标识,能够从前缀树中确定属于同一个链的多个节点。
31.此外,链节点类中的节点类型可以为自定义结构体。结构体的成员包括:*mpdata用于存储关键字key对应的数据、*mpkey用于存储关键字key、mcount用于记录当前链节点数量、*pnext用于指向链节点的后续、*pprive用于指向链节点前驱。其中,*mpdata记载的关键字key对应的数据,包括以关键字作为标识的实体数据。
32.将当前遍历的目标字节的高四位数据和低四位数据分别在前缀树中进行遍历,若遍历到,则根据遍历的节点生成链节点,以便记载目标节点在前缀树中对应的节点。每个关键字由多个目标字节组成,多个目标字节组成的链节点用于表示关键字在前缀树中对应的节点链结构。
33.可选的,在前缀树中根据高四位数据和低四位数据进行遍历,包括:
34.获取高四位数据的第一哈希值和低四位数据的第二哈希值;根据在前缀树中根据第一哈希值和第二哈希值进行遍历。
35.关键字的字节数据为字符型,不利于进行前缀树的插入。为了更加准确和快速的进行高四位数据和低四位数据的遍历和插入,根据高四位数据确定第一哈希值,根据第四位数据确定第二哈希值。可以根据字符转换为数值的哈希函数确定第一哈希值和第二哈希值。
36.前缀树中插入节点时,根据节点的哈希值hash大小进行节点的插入和遍历。根据哈希值进行节点遍历和插入能够实现在动态插入节点的同时,根据节点哈希值的数值大小进行排序,提高前缀树的生成效率。
37.可选的,步骤130、在前缀树中根据高四位数据和低四位数据进行遍历,遍历过程中若出现节点缺失,则根据高四位数据或低四位数据插入相应节点,直至关键字的全部字节遍历完毕,可通过下述方式实施:
38.步骤301、从根节点开始依次遍历前缀树的节点,判断是否存在第一节点,第一节点用于表示高四位数据;
39.步骤302、若不存在第一节点,则在前缀树中插入第一节点。
40.可选的,在前缀树中插入第一节点之后,还包括:
41.判断第一节点是否为有效节点;若第一节点为有效节点,则将第一节点标记为父节点。或者,判断第一节点是否包含两个以上的子节点,若第一节点包含两个以上的子节点,则将第一节点标记为父节点。
42.若插入的节点为第一节点,且第一节点满足上述任意一个条件,则第一节点被标记为父节点。
43.步骤303、若存在第一节点在,判断是否存在表示低四位数据的第二节点。
44.由于第一节点表示字节高四位,第二节点表示字节第四位,因此第二节点可以为第一节点的子节点。在遍历到第一节点后,根据低四位数据判断第一节点的子节点中是否存在表示低四位数据的第二节点。
45.步骤304、若不存在第二节点,则在第一节点的子节点中插入第二节点,第二节点用于表示低四位数据。
46.可选的,在前缀树中插入第二节点之后,还包括:
47.判断第二节点是否为有效节点;若第二节点为有效节点,则将第二节点标记为父节点。或者,判断第二节点是否包含两个以上的子节点,若第二节点包含两个以上的子节点,则将第二节点标记为父节点。
48.若当前字节不是关键字的最后一个字节,第二节点可以作为下一个字节的高四位数据的父亲节点。
49.在一种实现方式中,在第一节点的子节点中插入第二节点之后,还包括:
50.若第二节点的父节点为有效节点,则获取父节点的关联数组的链节点指针,关联数组包括链节点指针以及至少一个子节点指针,链节点指针指向第二节点所属的链节点,子节点指针指向第二节点的子节点;
51.新建链节点;根据链节点指针插入新建的链节点;在第二节点的关联数组上存储链节点指针。
52.可选的,第二节点为关键字最后一个自己的低四位数据。
53.在另一种实现方式中,在第一节点的子节点中插入第二节点之后,还包括:
54.若第二节点不存在有效的相邻父节点,则新建链节点;
55.在排序链表头节点之后插入新建的链节点;
56.在第二节点的关联数组中添加新建的链节点。
57.进一步的,在步骤301、从根节点开始依次遍历前缀树的节点之前,还包括:
58.创建空的前缀树。
59.根据上述数据结构创建前缀树的根节点,加载前缀树中节点、链节点的数据结构,以便在后续插入节点时,根据上述数据结构进行节点待插入以及链节点内容的更新。
60.进一步的,在得到多个链节点后,每个链节点对应一个关键字。根据组成关键字的字节的哈希值计算关键字的数值,根据关键字的数值大小对链节点进行排序,进而得打按照数值大小顺序排列的多个表示关键字的链节点。实现关键字的排序。
61.本发明实施例提供的前缀树的处理方法,依次遍历关键字的字节;获取目标字节的高四位数据和低四位数据,目标字节为当前遍历的字节;在前缀树中根据高四位数据和低四位数据进行遍历,遍历过程中若出现节点缺失,则根据高四位数据或低四位数据插入相应节点,直至关键字的全部字节遍历完毕。相对于目前字典树无法动态调整的问题,本发明实施例提供的前缀树的处理方法,将关键字的目标字节拆分为高四位数据和低四位数据。基于高四位数据和低四位数据进行前缀树的遍历。在遍历过程中,若存在表示高四位数据或低四位数据的节点,则继续便利;若出现节点缺失,即缺少表示高四位数据的节点或表示低四位数据的节点,则根据缺少的高四位数据或低四位数据插入相应节点。实现在遍历的过程中对前缀树进行动态更新,提高前缀树的生成速度。
62.实施例二
63.图2为本发明实施例二提供的前缀树的处理装置的结构示意图,本实施例可适用于数据库检索涉及的动态更新前缀树的情况,该装置可以由执行数据库查询的终端来实施。该终端可以为移动终端、平板电脑、笔记本电脑、个人计算机或服务器。该装置具体包括:关键字遍历模块210、字节获取模块220和前缀树遍历模块230。
64.关键字遍历模块210,用于依次遍历关键字的字节;
65.字节获取模块220,用于获取目标字节的高四位数据和低四位数据,目标字节为当前遍历的字节;
66.前缀树遍历模块230,用于在前缀树中根据高四位数据和低四位数据进行遍历,遍历过程中若出现节点缺失,则根据高四位数据或低四位数据插入相应节点,直至关键字的全部字节遍历完毕。
67.在上述实施方式的基础上,前缀树遍历模块230用于:
68.从根节点开始依次遍历前缀树的节点,判断是否存在第一节点,第一节点用于表示高四位数据;
69.若不存在第一节点,则在前缀树中插入第一节点;
70.若存在第一节点在,判断是否存在表示低四位数据的第二节点;
71.若不存在第二节点,则在第一节点的子节点中插入第二节点,第二节点用于表示低四位数据。
72.在上述实施方式的基础上,还包括初始化模块。初始化模块用于:
73.创建空的前缀树。
74.在上述实施方式的基础上,前缀树遍历模块230用于:
75.判断第一节点是否为有效节点;若第一节点为有效节点,则将第一节点标记为父节点;
76.或者,判断第一节点是否包含两个以上的子节点,若第一节点包含两个以上的子节点,则将第一节点标记为父节点。
77.在上述实施方式的基础上,前缀树遍历模块230用于:
78.若第二节点的父节点为有效节点,则获取父节点的关联数组的链节点指针,关联数组包括链节点指针以及至少一个子节点指针,链节点指针指向第二节点所属的链节点,子节点指针指向第二节点的子节点;
79.新建链节点;
80.根据链节点指针插入新建的链节点;
81.在第二节点的关联数组上存储链节点指针。
82.在上述实施方式的基础上,前缀树遍历模块230用于:
83.若第二节点不存在有效的相邻父节点,则新建链节点;
84.在排序链表头节点之后插入新建的链节点;
85.在第二节点的关联数组中添加新建的链节点。
86.在上述实施方式的基础上,前缀树遍历模块230用于:
87.获取高四位数据的第一哈希值和低四位数据的第二哈希值;
88.根据在前缀树中根据第一哈希值和第二哈希值进行遍历。
89.本发明实施例提供的前缀树的处理装置,关键字遍历模块210,用于依次遍历关键
字的字节;字节获取模块220,用于获取目标字节的高四位数据和低四位数据,目标字节为当前遍历的字节;前缀树遍历模块230,用于在前缀树中根据高四位数据和低四位数据进行遍历,遍历过程中若出现节点缺失,则根据高四位数据或低四位数据插入相应节点,直至关键字的全部字节遍历完毕。相对于目前字典树无法动态调整的问题,本发明实施例提供的前缀树的处理装置,将关键字的目标字节拆分为高四位数据和低四位数据。基于高四位数据和低四位数据进行前缀树的遍历。在遍历过程中,若存在表示高四位数据或低四位数据的节点,则继续便利;若出现节点缺失,即缺少表示高四位数据的节点或表示低四位数据的节点,则根据缺少的高四位数据或低四位数据插入相应节点。实现在遍历的过程中对前缀树进行动态更新,提高前缀树的生成速度。
90.本发明实施例所提供的前缀树的处理装置可执行本发明任意实施例所提供的前缀树的处理方法,具备执行方法相应的功能模块和有益效果。
91.实施例三
92.图3为本发明实施例三提供的一种前缀树的处理终端的结构示意图,如图3所示,该前缀树的处理终端包括处理器30、存储器31、输入装置32和输出装置33;前缀树的处理终端中处理器30的数量可以是一个或多个,图3中以一个处理器30为例;前缀树的处理终端中的处理器30、存储器31、输入装置32和输出装置33可以通过总线或其他方式连接,图3中以通过总线连接为例。
93.存储器31作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的前缀树的处理方法对应的程序指令/模块(例如,前缀树的处理装置中的关键字遍历模块210、字节获取模块220和前缀树遍历模块230)。处理器30通过运行存储在存储器31中的软件程序、指令以及模块,从而执行前缀树的处理终端的各种功能应用以及数据处理,即实现上述的前缀树的处理方法。
94.存储器31可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器31可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器31可进一步包括相对于处理器30远程设置的存储器,这些远程存储器可以通过网络连接至前缀树的处理终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
95.输入装置32可用于接收输入的数字或字符信息,以及产生与前缀树的处理终端的用户设置以及功能控制有关的键信号输入。输出装置33可包括显示屏等显示设备。
96.实施例四
97.本发明实施例四还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种前缀树的处理方法,该方法包括:
98.依次遍历关键字的字节;
99.获取目标字节的高四位数据和低四位数据,目标字节为当前遍历的字节;
100.在前缀树中根据高四位数据和低四位数据进行遍历,遍历过程中若出现节点缺失,则根据高四位数据或低四位数据插入相应节点,直至关键字的全部字节遍历完毕。
101.在上述实施方式的基础上,在前缀树中根据高四位数据和低四位数据进行遍历,遍历过程中若出现节点缺失,则根据高四位数据或低四位数据插入相应节点,可通过下述
方式实施:
102.从根节点开始依次遍历前缀树的节点,判断是否存在第一节点,第一节点用于表示高四位数据;
103.若不存在第一节点,则在前缀树中插入第一节点;
104.若存在第一节点在,判断是否存在表示低四位数据的第二节点;
105.若不存在第二节点,则在第一节点的子节点中插入第二节点,第二节点用于表示低四位数据。
106.在上述实施方式的基础上,在从根节点开始依次遍历前缀树的节点之前,还包括:
107.创建空的前缀树。
108.在上述实施方式的基础上,在前缀树中插入第一节点之后,包括:
109.判断第一节点是否为有效节点;若第一节点为有效节点,则将第一节点标记为父节点;
110.或者,判断第一节点是否包含两个以上的子节点,若第一节点包含两个以上的子节点,则将第一节点标记为父节点。
111.在上述实施方式的基础上,在第一节点的子节点中插入第二节点之后,还包括:
112.若第二节点的父节点为有效节点,则获取父节点的关联数组的链节点指针,关联数组包括链节点指针以及至少一个子节点指针,链节点指针指向第二节点所属的链节点,子节点指针指向第二节点的子节点;
113.新建链节点;
114.根据链节点指针插入新建的链节点;
115.在第二节点的关联数组上存储链节点指针。
116.在上述实施方式的基础上,在第一节点的子节点中插入第二节点之后,还包括:
117.若第二节点不存在有效的相邻父节点,则新建链节点;
118.在排序链表头节点之后插入新建的链节点;
119.在第二节点的关联数组中添加新建的链节点。
120.在上述实施方式的基础上,在前缀树中根据高四位数据和低四位数据进行遍历,可通过下述方式实施:
121.获取高四位数据的第一哈希值和低四位数据的第二哈希值;
122.根据在前缀树中根据第一哈希值和第二哈希值进行遍历。
123.当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的方法操作,还可以执行本发明任意实施例所提供的前缀树的处理方法中的相关操作。
124.通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台服务器(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
125.值得注意的是,上述前缀树的处理装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
126.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
再多了解一些

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

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

相关文献