CN109522369B - 数据的搜索方法、装置、计算机设备和存储介质 - Google Patents
数据的搜索方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN109522369B CN109522369B CN201811191150.XA CN201811191150A CN109522369B CN 109522369 B CN109522369 B CN 109522369B CN 201811191150 A CN201811191150 A CN 201811191150A CN 109522369 B CN109522369 B CN 109522369B
- Authority
- CN
- China
- Prior art keywords
- data
- level
- stage
- value
- carry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据的搜索方法、装置、计算机设备和存储介质。上述方法包括:获取目标数据的线索化值,上述目标数据为预设的多级数据中的一个数据,上述线索化值是基于上述预设的多级数据的总级数,以及上述预设的多级数据中各级的数据的个数计算出的;在上述预设的多级数据中,确定与上述目标数据处于同级的兄弟数据的线索化值,其中,上述兄弟数据与上述目标数据的父级数据相同;基于上述目标数据的线索化值,以及上述兄弟数据的线索化值,确定上述目标数据下属的子数据。采用本方法能够提高搜索效率。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及数据的搜索方法、装置、计算机设备和存储介质。
背景技术
随着数据处理技术的发展,出现了数据的搜索技术。为了便于管理,在数据量较大且数据之间具有归属关系的场景下,可以对数据进行分级,将数据保存为多级数据。比如,针对包含全国省市区县街道名称的数据,可以将省份名称保存为第一级数据,将市名称保存为第二级数据,将区县名称保存为第三级数据,将街道名称保存为第四级数据。
目前,为了体现各级数据之间的归属关系,可以将多级数据中的各级数据按照树结构进行保存。在实际应用中,经常需要查找某级数据下属的子数据。在上述例子的基础上,以查找广东省下属的所有的市区县街道为例,说明传统数据的搜索方法的处理步骤:
首先,遍历第一级数据,查找到广东省,然后,遍历广东省对应的第二级数据,确定广东省下属的市,接下来,分别遍历广东省下属的各市对应的第三级数据,确定各市下属的区县,最后,分别遍历各区县对应的第四级数据,确定各区县下属的街道,这样,可以得到广东省下属的所有的市区县街道。
然而,目前的数据的搜索方法,存在搜索效率低下的问题。
发明内容
基于此,有必要针对上述技术问题,提供能够提高搜索效率的数据的搜索方法、装置、计算机设备和存储介质。
一种数据的搜索方法,上述方法包括:
获取目标数据的线索化值,上述目标数据为预设的多级数据中的一个数据,上述线索化值是基于上述预设的多级数据的总级数,以及上述预设的多级数据中各级的数据的个数计算出的;
在上述预设的多级数据中,确定与上述目标数据处于同级的兄弟数据的线索化值,其中,上述兄弟数据与上述目标数据的父级数据相同;
基于上述目标数据的线索化值,以及上述兄弟数据的线索化值,确定上述目标数据下属的子数据。
其中一种实施例中,所述方法还包括:
使用所述目标数据的线索化值,分别对所述预设的多级数据中的各级的进位数取模,其中,所述进位数是指同级中两个相邻的数据之间的间隔数值;
将模为零对应的级数,确定为所述目标数据所处的级数。
其中一种实施例中,所述兄弟数据的线索化值大于所述目标数据的线索化值,且所述兄弟数据与所述目标数据为相邻数据;
所述基于所述目标数据的线索化值,以及所述兄弟数据的线索化值,确定所述目标数据下属的子数据的步骤,包括:
将所述目标数据的线索化值与所述兄弟数据的线索化值之间的线索化值区间,确定为备选区间;
将所述预设的多级数据中,线索化值处于所述备选区间中的数据,确定为所述目标数据下属的子数据。
其中一种实施例中,所述在所述预设的多级数据中,确定与所述目标数据处于同级的兄弟数据的线索化值的步骤,包括:
获取所述目标数据所处的级数对应的进位数,其中,所述进位数是指同级中两个相邻的数据之间的间隔数值;
将所述目标数据的线索化值,与所述目标数据所处的级数对应的进位数之和,确定为与所述目标数据相邻的兄弟数据的线索化值。
其中一种实施例中,所述线索化值的确定方式包括:
确定所述预设的多级数据的总级数以及各级的数据的个数;
基于所述总级数和所述各级的数据的个数,确定所述各级对应的所述进位数,其中,所述进位数是指同级中两个相邻的数据之间的间隔数值;
基于所述各级中各数据的排序,以及所述各级对应的进位数,计算所述各级中各数据对应的线索化值。
其中一种实施例中,所述基于所述总级数和所述各级的数据的个数,确定所述各级对应的进位数的步骤,包括:
基于所述各级的数据的个数,确定所述各级的数据所需的位数;
基于所述总级数,以及所述各级的数据所需的位数,确定根线索化值以及所述各级的所述位数在所述根线索化值中对应的位置,其中,所述根线索化值是所述预设的多级数据中,所有数据的线索化值的基数,所述根线索化值的位数大于所述各级的数据所需的位数之和;
基于所述各级的所述数据在所述根线索化值中对应的位置,确定所述各级对应的进位数;
所述基于所述各级中各数据的排序,以及所述各级对应的进位数,计算所述各级中各数据对应的线索化值的步骤,包括:
基于所述各级中各数据的排序、所述各级对应的进位数以及所述根线索化值,计算所述各级中各数据的线索化值。
其中一种实施例中,所述基于所述总级数和所述各级的数据的个数,确定所述各级对应的进位数的步骤,包括:
针对所述多级数据中的各级:基于该级下属的各级的数据的个数的乘积,得到该级对应的进位数;
所述基于所述各级中各数据的排序,以及所述各级对应的进位数,计算所述所述各级中各数据对应的线索化值的步骤,包括:
针对所述预设的多级数据中第一级的各数据:确定各数据在所述第一级中的排序,得到各数据对应的排序号;将各数据对应的排序号,与所述第一级对应的进位数相乘,得到各数据对应的线索化值;
针对所述多级数据中,除所述第一级以外的其他级的各数据:确定各数据在该级中的排序,得到各数据对应的排序号;确定各数据的上一级数据对应的线索化值;将各数据对应的排序号与各级对应的进位数相乘得到的乘积,与所述上第一级数据对应的线索化值相加,得到各数据对应的线索化值。
其中一种实施例中,所述基于该级下属的各级的数据的个数的乘积,得到该级对应的进位数的步骤,包括:
将该级下属的各级的数据的个数,分别与预设的比率因子相乘,得到该级下属的各级的最大容量值;
将该级下属的各级的所述最大容量值分别相乘,得到该级对应的进位数。
其中一种实施例中,所述方法还包括:
获取新增级的数据的个数;
基于所述新增级的数据的个数,更新所述预设的多级数据中各级对应的进位数。
其中一种实施例中,所述基于所述新增级的数据的个数,更新所述预设的多级数据中各级对应的进位数的步骤,包括:
将所述预设的多级数据中各级对应的进位数,与所述新增级的数据的个数的乘积,分别作为所述各级对应的新的进位数;
将所述新的进位数,作为所述各级对应的进位数。
其中一种实施例中,所述方法还包括:
获取扩展级对应的扩展后的数据的个数,所述扩展级为所述多级数据中的一级;
当所述扩展后的数据的个数小于或等于所述扩展级的最大容量值时,将所述扩展后的数据添加到所述扩展级中,并计算所述扩展后的数据的线索化值;
当所述扩展后的数据的个数大于所述扩展级的最大容量值时,将所述扩展后的数据的个数,乘以预设的比率因子,得到所述扩展级的新的最大容量值;将所述新的最大容量值,作为所述扩展级的最大容量值;基于扩展后的所述扩展级的最大容量值,以及所述扩展级以上的各级的最大容量值,确定所述扩展级以上的各级的新的进位数;将所述扩展级以上的各级的新的进位数,作为所述扩展级以上的各级的进位数。
一种数据的搜索装置,上述装置包括:
获取模块,用于获取目标数据的线索化值,上述目标数据为预设的多级数据中的一个数据,上述线索化值是基于上述预设的多级数据的总级数,以及上述预设的多级数据中各级的数据的个数计算出的;
确定模块,用于在上述预设的多级数据中,确定与上述目标数据处于同级的兄弟数据的线索化值,其中,上述兄弟数据与上述目标数据的父级数据相同;
上述确定模块,还用于基于上述目标数据的线索化值,以及上述兄弟数据的线索化值,确定上述目标数据下属的子数据。
其中一种实施例中,上述装置还包括取值模块;
取模模块用于使用上述目标数据的线索化值,分别对上述预设的多级数据中的各级的进位数取模,其中,所述进位数是指同级中两个相邻的数据之间的间隔数值;
上述确定模块,还用于将模为零对应的级数,确定为上述目标数据所处的级数。
其中一种实施例中,上述兄弟数据的线索化值大于上述目标数据的线索化值,且上述兄弟数据与上述目标数据为相邻数据;
上述确定模块,具体用于将所述目标数据的线索化值与所述兄弟数据的线索化值之间的线索化值区间,确定为备选区间;将上述预设的多级数据中,线索化值处于上述备选区间中的数据,确定为上述目标数据下属的子数据。
其中一种实施例中,上述确定模块,具体用于获取上述目标数据所处的级数对应的进位数,其中,上述进位数是指同级中两个相邻的数据之间的间隔数值;将上述目标数据的线索化值,与上述目标数据所处的级数对应的进位数之和,确定为与上述目标数据相邻的兄弟数据的线索化值。
其中一种实施例中,上述装置还包括计算模块;上述线索化值通过执行如下模块来确定:
上述确定模块,还用于确定上述预设的多级数据的总级数以及各级的数据的个数;基于上述总级数和上述各级的数据的个数,确定上述各级对应的进位数,其中,上述进位数是指同级中两个相邻的数据之间的间隔数值;
计算模块用于基于上述各级中各数据的排序,以及上述各级对应的进位数,计算上述各级中各数据对应的线索化值。
其中一种实施例中,上述确定模块,具体用于基于上述各级的数据的个数,确定上述各级的数据所需的位数;基于上述总级数,以及上述各级的数据所需的位数,确定根线索化值以及上述各级的上述位数在上述根线索化值中对应的位置,其中,上述根线索化值是上述预设的多级数据中,所有数据的线索化值的基数,上述根线索化值的位数大于上述各级的数据所需的位数之和;基于上述各级的上述数据在上述根线索化值中对应的位置,确定上述各级对应的进位数;
上述计算模块,具体用于基于上述各级中各数据的排序、上述各级对应的进位数以及上述根线索化值,计算上述各级中各数据的线索化值。
其中一种实施例中,上述确定模块,还用于针对上述多级数据中的各级:基于该级下属的各级的数据的个数的乘积,得到该级对应的进位数;
上述计算模块,具体用于针对上述预设的多级数据中第一级的各数据:确定各数据在上述第一级中的排序,得到各数据对应的排序号;将各数据对应的排序号,与上述第一级对应的进位数相乘,得到各数据对应的线索化值;针对上述多级数据中,除上述第一级以外的其他级的各数据:确定各数据在该级中的排序,得到各数据对应的排序号;确定各数据的上一级数据对应的线索化值;将各数据对应的排序号与该级对应的进位数相乘得到的乘积,与上述上第一级数据对应的线索化值相加,得到各数据对应的线索化值。
在其中一个实施例中,上述确定模块,还用于将该级下属的各级的数据的个数,分别与预设的比率因子相乘,得到该级下属的各级的最大容量值;将该级下属的各级的上述最大容量值分别相乘,得到该级对应的进位数。
在其中一个实施例中,上述装置还包括:上述获取模块,还用于获取新增级的数据的个数;更新模块,用于基于上述新增级的数据的个数,更新上述预设的多级数据中各级对应的进位数。
在其中一个实施例中,上述更新模块,具体用于将上述预设的多级数据中各级对应的进位数,与上述新增级的数据的个数的乘积,分别作为上述各级对应的新的进位数;将上述新的进位数,作为上述各级对应的进位数。
在其中一个实施例中,上述获取模块,还用于获取扩展级对应的扩展后的数据的个数,上述扩展级为上述多级数据中的一级;
添加模块,用于当上述扩展后的数据的个数小于或等于上述扩展级的最大容量值时,将上述扩展后的数据添加到上述扩展级中;
上述确定模块,还用于获取扩展级对应的扩展后的数据的个数,所述扩展级为所述多级数据中的一级;当所述扩展后的数据的个数小于或等于所述扩展级的最大容量值时,将所述扩展后的数据添加到所述扩展级中,并计算所述扩展后的数据的线索化值;当所述扩展后的数据的个数大于所述扩展级的最大容量值时,将所述扩展后的数据的个数,乘以预设的比率因子,得到所述扩展级的新的最大容量值;将所述新的最大容量值,作为所述扩展级的最大容量值;基于扩展后的所述扩展级的最大容量值,以及所述扩展级以上的各级的最大容量值,确定所述扩展级以上的各级的新的进位数;将所述扩展级以上的各级的新的进位数,作为所述扩展级以上的各级的进位数。
一种计算机设备,包括存储器和处理器,上述存储器存储有计算机程序,上述处理器执行上述计算机程序时实现以下步骤:
获取目标数据的线索化值,上述目标数据为预设的多级数据中的一个数据,上述线索化值是基于上述预设的多级数据的总级数,以及上述预设的多级数据中各级的数据的个数计算出的;
在上述预设的多级数据中,确定与上述目标数据处于同级的兄弟数据的线索化值,其中,上述兄弟数据与上述目标数据的父级数据相同;
基于上述目标数据的线索化值,以及上述兄弟数据的线索化值,确定上述目标数据下属的子数据。
一种计算机可读存储介质,其上存储有计算机程序,上述计算机程序被处理器执行时实现以下步骤:
获取目标数据的线索化值,上述目标数据为预设的多级数据中的一个数据,上述线索化值是基于上述预设的多级数据的总级数,以及上述预设的多级数据中各级的数据的个数计算出的;
在上述预设的多级数据中,确定与上述目标数据处于同级的兄弟数据的线索化值,其中,上述兄弟数据与上述目标数据的父级数据相同;
基于上述目标数据的线索化值,以及上述兄弟数据的线索化值,确定上述目标数据下属的子数据。
上述数据的搜索方法、装置、计算机设备和存储介质,能够基于目标数据的线索化值以及与目标数据所在级数对应的进位数,搜索到目标数据下属的子数据,也即目标数据所在的数级下属的各子级的数据,无需再通过遍历各级数据来搜索目标数据下属的子数据,可以缩短搜索耗费的时间,提高搜索效率。
附图说明
图1为一个实施例中数据的搜索方法的流程示意图;
图2为又一个实施例中数据的搜索方法的流程示意图;
图3为一个实施例中线索化值的确定方式的流程示意图;
图4为又一个实施例中线索化值的确定方式的流程示意图;
图5为又一个实施例中线索化值的确定方式的流程示意图;
图6为另一个实施例中S504的流程示意图;
图7为一个实施例中线索化值的更新方式的流程示意图;
图8为又一个实施例中线索化值的更新方式的流程示意图;
图9为一个实施例中数据的搜索装置的结构示意图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,参考图1,图1为一个实施例中数据的搜索方法的流程示意图。如图1所示,提供了一种数据的搜索方法,上述方法包括以下步骤:
S102,获取目标数据的线索化值。
其中,上述目标数据为预设的多级数据中的一个数据,预设的多级数据是指进行分级后的数据,具体可以包括第一级数据、第二级数据、第三级数据、第四级数据等,第一级为父级,第二级为第一级的子级,第三级为第二级的子级,如此类推,此外,同一级的数据之间互为兄弟数据。
本申请实施例的目的在于获取预设的多级数据中的目标数据下属的子数据,也即目标数据所在的数级下属的各子级的数据。上述线索化值可以是基于上述预设的多级数据的总级数,以及上述预设的多级数据中各级的数据的个数计算出的。
在本步骤中,计算机设备可以获取目标数据的线索化值,以便根据目标数,确定与目标数据处于同级的兄弟数据的线索化值,进而根据目标数据的线索化值和兄弟数据的线索化值,确定目标数据下属的子数据。
需要说明的是,线索化是指将对象与对象之间的关系以线索数据的形式存储起来,以便下次关系获取时可以从线索数据中直接获得的,这个生成线索数据并存储起来的过程可以成为线索化,其中,对象通常为数据,线索数据具体可以为线索化值。
S104,在预设的多级数据中,确定与目标数据处于同级的兄弟数据的线索化值。
其中,上述兄弟数据与目标数据的父级数据相同。
在本步骤中,计算机设备在获取目标数据的线索化值之后,可以根据目标数据的线索化值,确定目标数据所在的级数,进而确定预设的多级数据中,与目标数据处于同级且与目标数据属于同一个父级数据的兄弟数据的线索化值,以便确定目标数据下属的子数据。
比如,预设的分级数据为中国省市区县街道的名称,目标数据为深圳市,深圳市的线索化值为2100,可以确定深圳市所在级数为第二级且深圳市的父级数据为广东省,那么,深圳市的兄弟数据可以为中山市,中山市的线索化值为2150。
S106,基于上述目标数据的线索化值,以及上述兄弟数据的线索化值,确定上述目标数据下属的子数据。
在本步骤中,计算机设备可以基于S102确定的目标数据的线索化值,以及S104确定的目标数据所在的级数对应的进位数,确定目标数据下属各级的数据,也即子数据。
为了方便理解,在上述例子的基础上继续进行说明,比如,深圳市的线索化值为2100,中山市的线索化值为2150,且中山市与深圳市为相邻的数据;由于深圳市下属的子数据的线索化值均大于2100,例如,罗湖区的线索化值为2105,南山区的线索化值为2110,福田区的线索化值为2115,而中山市下属的子数据的线索化值均大于2150,例如,石岐区的线索化值为2155,西区的线索化值为2160,因此,可以确定深圳市下属的子数据的线索化值均处于(2100,2150)区间,那么,可以将线索化值处于(2100,2150)之间的数据作为深圳市下属的子数据。
又比如,深圳市的线索化值为2100,广州市的线索化值为2050,且在第二级数据的排序中,广州市位于深圳市之前,深圳市与广州市之间还间隔一个兄弟数据,那么,可以将深圳市和广州市的线索化值的差值除以二得到第二级数据对应的进位数,即100/2=50,其中,进位数是指同级中两个相邻的数据之间的间隔数值,进而,可以得到到与深圳市相邻的兄弟数据的线索化值,即为2100+50=2150,这样,可以将线索化值处于(2100,2150)之间的数据作为深圳市下属的子数据。
再比如,深圳市的线索化值为2100,珠海市的线索化值为2200,且在第二级数据的排序中,珠海市位于深圳市之后,深圳市与珠海市之间还间隔一个兄弟数据,那么,可以将深圳市和珠海市的线索化值的差值除以二得到第二级数据对应的进位数,即100/2=50,进而可以得到到与深圳市相邻的兄弟数据的线索化值,即为2100+50=2150,那么,可以将线索化值处于(2100,2150)之间的数据作为深圳市下属的子数据。
可见,上述数据的搜索方法中,能够基于目标数据的线索化值以及与目标数据处于同级的兄弟数据的线索化值,搜索到目标数据下属的子数据,也即目标数据所在的数级下属的各子级中的数据,无需再通过遍历各级数据来搜索目标数据下属的子数据,可以缩短搜索耗费的时间,提高搜索效率。
又一个实施例中,在兄弟数据的线索化值大于目标数据的线索化值且目标数据与兄弟数据为相邻数据的场景下,提出了一种数据的搜索方法。参考图2,图2为又一个实施例中数据的搜索方法的流程示意图。如图2所示,数据的搜索方法包括以下步骤:
S202,获取目标数据的线索化值,上述目标数据为预设的多级数据中的一个数据。
上述线索化值是基于上述预设的多级数据的总级数,以及上述预设的多级数据中各级的数据的个数计算出的。
本步骤的详细过程和技术效果可以参考图1所示的数据的搜索方法中的S102,在此不再赘述。
S204,使用上述目标数据的线索化值,分别对上述预设的多级数据中的各级的进位数取模,并将模为零对应的级数,确定为上述目标数据所处的级数。
在本步骤中,计算机设备可以使用目标数据的线索化值,分别对预设的多级数据中的各级对应的进位数取模,以确定目标数据所处的级数。
具体的,使用目标数据的线索化值,分别对预设的多级数据中的各级对应的进位数取模是指,将目标数据的线索化值,分别除以预设的多级数据中的各级对应的进位数,得到的余数即为模。
比如,目标数据为深圳市,深圳市的线索化值为2100,预设的多级数据中的第一级对应的进位数为1000,第二级对应的进位数为50,第三级对应的进位数为5,可以将2100分别除以1000、50和5,可见,2100除以第二级对应的进位数50后的余数为0,那么,可以确定深圳市所处的级数为第二级。
S206,获取上述目标数据所处的级数对应的进位数。
其中,上述进位数是指同级中两个相邻的数据之间的间隔数值。比如,在预设的多级数据中,北京市的线索化值为1000,广东省的线索化值为2000,上海市的线索化值为3000,且北京市、广东省和上海市均处于第一级数据,那么,第二级数据对应的进位数为1000。
在本步骤中,计算机设备在确定目标数据所处的级数之后,可以获取目标数据所处的级数对应的进位数,以便基于进位数,确定与目标数据相邻的兄弟数据的线索化值。
S208,将上述目标数据的线索化值,与上述目标数据所处的级数对应的进位数之和,确定为与上述目标数据相邻的兄弟数据的线索化值。
其中,所述兄弟数据的线索化值大于所述目标数据的线索化值,且所述兄弟数据与所述目标数据为相邻数据。
在本步骤中,计算机设备可以将目标数据的线索化值,加上目标数据所处的数级对应的进位数,得到与目标数据相邻的兄弟数据的线索化值,以便基于目标数据和兄弟数据的线索化值,得到目标数据下属的子数据。
需要说明的是,在目标数据所在级的数据的排序中,兄弟数据位于目标数据之后,且兄弟数据与目标数据相邻。
比如,深圳市的线索化值为2100,深圳市所处的第二级对应的进位数为50,那么,与深圳市处于同级且相邻的兄弟数据的线索化值为2100+50=2150。
S210,将所述目标数据的线索化值与所述兄弟数据的线索化值之间的线索化值区间,确定为备选区间。
在本步骤中,计算机设备可以将所述目标数据的线索化值与所述兄弟数据的线索化值之间的线索化值区间,确定为备选区间,可以理解的,备选区间内的线索化值大于目标数据的线索化值且小于兄弟数据的线索化值,以基于备选区间确定目标数据下属的子数据。
为了方便理解,在上述例子的基础上进行说明,比如,深圳市的线索化值为2100,相邻的兄弟数据中山市的线索化值为2150,那么,可以将线索化区间(2100,2150)确定为备选区间。
S212,将上述预设的多级数据中,线索化值处于上述备选区间中的数据,确定为上述目标数据下属的子数据。
在本步骤中,计算机设备可以将预设的多级数据中,线索化值处于备选区间中的数据,均确定为目标数据下属的子数据。
在上述例子的基础上进行说明,比如,线索化值区间(2100,2150)为备选区间,那么,可以将线索化值处于(2100,2150)的数据确定为深圳市下属的子数据,例如,线索化值2150对应罗湖区,线索化值2155对应南山区,线索化值2160对应福田区,线索化值2111对应西丽街道等。
可见,上述数据的搜索方法中,可以先确定目标数据所处的级数并得到该级数对应的进位数;然后,将目标数据与进位数相加可以得到与目标数据相邻的兄弟数据的线索化值;接下来,将小于兄弟数据的线索化值,且大于目标数据的线索化值之间的线索化值区间,确定为备选区间;最后,处于上述备选区间的线索化值对应的数据,确定为上述目标数据下属的子数据。这样,本申请实施例提供的数据的搜索方法,能够基于目标数据的线索化值以及与目标数据处于同级且相邻的兄弟数据的线索化值,搜索到目标数据下属的子数据,也即目标数据所在的数级下属的各子级中的数据,无需再通过遍历各级数据来搜索目标数据下属的子数据,可以缩短搜索耗费的时间,提高搜索效率。
一个实施例中,提出了一种线索化值的确定方式。参考图3,图3为一个实施例中线索化值的确定方式的流程示意图。可以理解的,图3所示的线索化值的确定方式是在图1和图2所示的数据的搜索方法之前执行的,以便基于数据的线索化值,对数据进行搜索,得到目标数据下属的子数据。如图3所示,线索化值的确定方式,可以包括以下步骤:
S302,确定上述预设的多级数据的总级数以及各级的数据的个数。
在本步骤中,计算机设备可以确定预设的多级数据的总级数,以及各级的数据的个数,以便基于上述总级数和上述各级的数据的个数,确定上述各级对应的进位数,进而计算各级中各数据对应的线索化值。
比如,预设的多级数据的总级数为四级,第一级的数据的个数为30个,第二级的数据的个数为20个,第三级的数据的个数为10个,第四级的数据的个数为5个。
S304,基于上述总级数和上述各级的数据的个数,确定上述各级对应的进位数。
在本步骤中,计算机设备可以基于预设的多级数据的总级数,以及各级的数据的个数,对整个预设的多级数据的线索化值做一个整体布局,来确定各级对应的进位数,至此,线索化模型就建立好了,可以通过后续步骤,计算线索化模型中的各数据对应的线索化值。
通常情况下,同级中各数据之间的数值间隔是固定的,那么,各级的数据之间的数值间隔可以用进位数来表示。
需要说明的是,数级中的数据的个数越多,该级对应的进位数就越小,数级中的数据的个数越少,该级对应的进位数就越大,也就是说,数级中的数据的个数越多,则该级中相邻的数据的间距就越小,反之,数级中的数据的个数越少,则该级中相邻的数据的间距就越大。
S306,基于上述各级中各数据的排序,以及上述各级对应的进位数,计算上述各级中各数据对应的线索化值。
在本步骤中,计算机设备在S304中建立好线索化模型之后,就可以基于预设的多级数据的各级中各数据的排序,以及预设的多级数据中各级对应的进位数,逐层计算各级中各数据对应的线索化值,以完成对线索化模型的线索化处理。
比如,预设的多级数据中,第一级数据中各数据的排序为:北京市、广东省、上海市等,且第一级对应的进位数为1000,则可以计算出北京市对应的线索化值为1000,广东省对应的线索化值为2000,上海市对应的线索化值为3000。
可见,上述线索化值的确定方式中,可以基于预设的多级数据的总级数和各级的数据的个数,建立线索化模型,并基于各级中各数据的排序,计算各级中各数据的线索化值,以便进行数据的搜索时,能够基于目标数据的线索化值以及与目标数据处于同级的兄弟数据的线索化值,搜索到目标数据下属的子数据,也即目标数据所在的数级下属的各子级中的数据,无需再通过遍历各级数据来搜索目标数据下属的子数据,可以缩短搜索耗费的时间,提高搜索效率。
又一个实施例中,提出了一种线索化值的具体确定方式。参考图4,图4为又一个实施例中线索化值的确定方式的流程示意图。如图4所示,线索化值的确定方式可以包括以下步骤:
S402,确定上述预设的多级数据的总级数以及各级的数据的个数。
本步骤的详细过程和技术效果可以参考图3所示的线索化值的确定方式中的S302,在此不再赘述。
S404,基于上述各级的数据的个数,确定标记上述各级的数据所需的位数。
在本步骤中,计算机设备针对预设的多级数据中的各级可以进行如下处理:首先,确定该级的数据的个数,然后,确定用于标记该级的数据所需的位数;这样,可以基于标记预设的多级数据中的各级的数据所需的位数,确定根线索化值的位数。
比如,预设的分级数据为学校年级班级名称,第一级数据为学校名称,个数为99个,第二级数据为各学校的年级名称,个数为6个,第三级为各学校中的各年级的班级名称,个数为10个,那么,可以确定用于标记第一级的数据所需的位数为2位,用于标记第二级的数据所需的位数为1位,用于标记第三级的数据所需的位数为2位。
S406,基于上述总级数,以及上述位数,确定根线索化值以及上述各级的上述位数在上述根线索化值中对应的位置。
其中,上述根线索化值是上述预设的多级数据中,所有数据的线索化值的基数,上述根线索化值的位数大于上述各级的数据所需的位数之和。
在本步骤中,计算机设备可以将预设的多级数据中,标记上述各级的数据所需的位数之和,作为根线索化值中“0”的位数,进而将“0”的位数大于或等于上述所需的位数之和的数字,确定为根线索化值,以及确定预设的多级数据中各级对应的上述位数在根线索化值中对应的位置,以便确定各级的进位数,比如,可以按照从左向右或从右向左的顺序,依次在根线索化值中移位确定各级所需的位数。
在上述例子的基础上继续说明,预设的多级数据的总级数为3级,且用于标记第一级、第二级、第三级的数据所需的位数分别为2位、1位和2位,那么,可以确定根线索化值包括5个“0”,进而可以确定根线索化值为100000;以及可以按照从左向右的顺序,在根线索化值中的“0”所在的位数中,分别移位确定第一级的数据所需的位数、第二级的数据所需的位数和第三级的数据所需的位数分别对应的位置。比如,根线索化值为100000,从左向右的前2个“0”位用于标记第一级的数据,从左向右的第3个“0”位用于标记第二级的数据,从左向右的第4和第5个“0”位用于标记第三级数据。
S408,基于上述各级的上述位数在上述根线索化值中对应的位置,确定上述各级对应的进位数。
在本步骤中,计算机设备基于S406确定的根线索化值中,用于标记预设的多级数据中的各级的数据所需的位数对应的位置,确定上述各级对应的进位数,以便基于上述各级中各数据的排序、上述各级对应的进位数以及上述根线索化值,计算上述各级中各数据对应的线索化值。
在上述例子的基础上继续说明,根线索化值为100000,其中,从左向右的前2个“0”位用于标记第一级的数据,那么,可以设置第一级对应的进位数为1000;从左向右的第3个“0”位用于标记第二级的数据,那么,可以设置第二级对应的进位数为100;从左向右的第4和第5个“0”位用于标记第三级数据,那么,可以设置第三级对应的进位数为1。
S410,基于上述各级中各数据的排序、上述各级对应的进位数以及上述根线索化值,计算上述各级中各数据的线索化值。
在本步骤中,计算机设备可以基于预设的多级数据中各级中各数据的排序、上述各级对应的进位数,以及根线索化值,计算预设的多级数据中的各数据的线索化值。
在上述例子的基础上继续说明,第一级中各数据的排序为:学校1、学校2、学校3,…,学校99,第一级对应的进位数为1000,那么,第一级中的学校1、学校2、学校3,…,学校100的线索化值分别为101000,102000,103000,…,199000;学校1对应的第二级中各数据的排序为:一年级、二年级、三年级、…、六年级,第二级对应的进位数为100,那么,学校1对应的第二级中的一年级、二年级、三年级、…、六年级的线索化值分别为101100,101200,101300,…,101600;学校1的一年级对应的第三级中各数据的排序为:一班、二班、三班、…、十班,第三级对应的进位数为1,那么,学校1的一年级对应的第三级中的一班、二班、三班、…、十班的线索化值分别为101101,101102,101103,…,101110。
可见,上述线索化值的确定方式中,可以基于预设的多级数据的总级数和各级的数据的个数,确定根线索化值以及预设的多级数据中各级对应的进位数,进而根据上述各级中各数据的排序、上述进位数以及上述根线索化值,计算各级中各数据的线索化值,以便进行数据的搜索时,能够基于目标数据的线索化值以及与目标数据处于同级的兄弟数据的线索化值,搜索到目标数据下属的子数据,也即目标数据所在的数级下属的各子级中的数据,无需再通过遍历各级数据来搜索目标数据下属的子数据,可以缩短搜索耗费的时间,提高搜索效率。
为了能够更加充分的利用线索化值区间,避免线索化值区间中的部分线索化值被空闲而导致的资源浪费,可以基于预设的多级数据中各级的数据的个数以及总级数,来计算各级对应的进位数,进而得到各数据的线索化值。
针对上述场景,另一个实施例中,提出了一种线索化值的确定方式。参考图5,图5为又一个实施例中线索化值的确定方式的流程示意图。如图5所示,线索化值的确定方式可以包括以下步骤:
S502,确定上述预设的多级数据的总级数以及各级的数据的个数。
本步骤的详细过程和技术效果可以参考图3所示的线索化值的确定方式中的S302,在此不再赘述。
S504,针对上述多级数据中的各级:基于该级下属的各级的数据的个数的乘积,得到该级对应的进位数。
在本步骤中,计算机设备针对预设的多级数据中的各级,执行如下步骤:
首先,计算该级的数据的个数,与该级下属的各级的数据的个数的乘积;
然后,基于上述乘积,得到该级对应的进位数。
比如,预设的分级数据为全国省市区县街道的名称,第一级的数据为省名,个数为30个,即容量值为30,例如,北京市、广东省、上海市等,第二级的数据为各省下属的市名,个数为20个,即容量值为20,例如,广东省对应的第二级的数据为:广州市、深圳市、中山市,第三级的数据为各市下属的区县名,个数为10个,即容量值为10,例如,深圳市对应的第三级的数据为:罗湖区、南山区、福田区;第四级的数据为各区县名下属的街道名,个数为5个,容量值为5,例如,南山区对应的第四级的数据为:西丽街道;那么,针对第一级,计算第二级、第三级和第四级的数据的个数的乘积20*10*5=1000;那么,可以在1000的基础上,得到第一级的进位数,例如,可以将1000直接作为第一级对应的进位数,也可以在1000的基础上进行扩展,将扩展后的数值作为第一级的进位数,针对第二级,计算第三级和第四级的数据的个数的乘积10*5=50;那么,可以在50的基础上,得到第二级的进位数,例如,可以将50直接作为第二级对应的进位数,也可以在50的基础上进行扩展,将扩展后的数值作为第二级的进位数,针对第三级,可以在第四级的数据的个数5的基础上,得到第三级的进位数,例如,可以将5直接作为第三级对应的进位数,也可以在5的基础上进行扩展,将扩展后的数值作为第三级的进位数,由于第四级没有下属的数级,可以将第四级对应的进位数设置为1。
一个可选的实施例中,参考图6,图6为另一个实施例中S504的流程示意图,如图6所示,S504具体可以包括:
S504A,将该级下属的各级的数据的个数,分别与预设的比率因子相乘,得到该级下属的各级的最大容量值。
在本步骤中,计算机设备针对预设的多级数据中的各级:可以将该级下属的各级的数据的个数,分别与预设的比率因子相乘,得到该级下属的各级的最大容量值,以便基于该级下属的各级的最大容量值计算该级对应的进位数。
可以理解的,数级的最大容量值大于该数级的数据的个数,这样,可以增大该数级的存储空间,若在该数级中新增的数据较少,且不超过该数级的最大容量值时,可以直接将新增的数据添加到该数级中,而无需更新预设的多级数据中各数据的线索化值,可以减少更新线索化值的工作量,提高工作效率。
具体的,预设的比率因子至少大于1,比如,1.25,这样,数级的数据的个数与预设的比率因子相乘之后,得到的该数级的最大容量值,可以大于该数级的数据的个数。
在上述例子的基础上说明,预设的比率因子为1.25,那么,第二级下属的第三级的最大容量值为10*1.25=12.5,第二级下属的第四级的最大容量值为5*1.25=6.25。
S504B,将该级下属的各级的上述最大容量值分别相乘,得到该级对应的进位数。
在本步骤中,计算机设备针对预设的多级数据中的各级:可以将该级下属的各级的最大容量值分别相乘,得到该级对应的进位数,这样,可以增大该级下属的各级的存储空间,若在该级下属的某级中新增的数据较少,且不超过该级的最大容量值时,可以直接将新增的数据添加到该级中,而无需更新预设的多级数据中各数据的线索化值,可以减少更新线索化值的工作量,提高工作效率。
在上述例子的基础上说明,第二级下属的第三级的最大容量值为10*1.25=12.5,第二级下属的第四级的最大容量值为5*1.25=6.25,那么,第二级对应的进位数为12.5*6.25=78.125,具体可以取整为78。
需要说明的是,由于针对第一级中的数据的线索化值的计算方法和除第一级以外的其他级中的数据的线索化值的计算方法不同,因此,S504A为计算第一级中的数据的线索化值,S504B为计算除第一级以外的其他级中的数据的线索化值。
这样,通过配置比率因子,可以动态调整各级的最大容量值和进位数,以便提前做好新增数据的准备,在较大程度上减少重新计算线索化值的次数。
S506,针对上述预设的多级数据中第一级的各数据:确定各数据在上述第一级中的排序,得到各数据对应的排序号;将各数据对应的排序号,与上述第一级对应的进位数相乘,得到各数据对应的线索化值。
在本步骤中,计算机设备针对上述预设的多级数据中第一级的各数据:可以先确定各数据在第一级中的排序,得到各数据在第一级中的排序号,然后,将各数据对应的排序号,与第一级对应的进位数相乘,得到各数据对应的线索化值。
在上述例子的基础上说明,第一级中各数据的排序为:北京市、广东省、上海市等,其中,广东省的排序号为2,第一级对应的进位数为1000,那么,广东省对应的线索化值为2*1000=2000。
S508,针对上述多级数据中,除上述第一级以外的其他级的各数据:确定各数据在该级中的排序,得到各数据对应的排序号;确定各数据的上一级数据对应的线索化值;将各数据对应的排序号与该级对应的进位数相乘得到的乘积,与上述上第一级数据对应的线索化值相加,得到各数据对应的线索化值。
在本步骤中,计算机设备针对上述预设的多级数据中,除第一级以外的其他级的各数据:可以先确定各数据在该级中的排序,得到各数据在该级中的排序号,然后,确定各数据的上一级数据对应的线索化值,并将各数据对应的排序号,与该级对应的进位数相乘,得到各数据对应的线索化值。
在上述例子的基础上说明,广东省对应的第二级中各数据的排序为:广州市、深圳市、中山市等,其中,深圳市的排序号为2,并且,深圳市对应的上一级数据为广东省,广东省的线索化值为2000,第二级对应的进位数为50,那么,深圳市对应的线索化值为2000+2*500=2100。
可见,上述线索化值的确定方式中,能够基于预设的多级数据的总级数和各级的数据的个数,动态调整各级对应的进位数以及各数据的线索化值,可以能够充分利用各数级的线索化值区间,避免线索化值区间中的部分线索化值被空闲而导致的资源浪费,提高资源利用率。
由于图5和图6所示的线索化值的确定方式中,数级的进位数可以基于该数级下属的各级的数据的个数,以及该数级下属的数级的级数来确定,因此,在预设的多级数据中需要扩展数据或者新增数级的场景下,需要更新预设的多级数据中所有数据的线索化值,此时,使用图5和图6所示的线索化值的确定方式,可以快速计算出新的进位数,进而基于新的进位数更新各数据的线索化值。
一种实施例中,在需要新增数级的场景下,在图5和图6所示的线索化值的确定方式的基础上的,提出一种更新线索化值的方式。参考图7,图7为一个实施例中线索化值的更新方式的流程示意图。如图7所示,线索化值的更新方式可以包括以下步骤:
S702,获取新增级的数据的个数。
其中,新增级就是在预设的多级数据中新增的数级,且已计算出在新增数级之前的预设的多级数据中的所有数据的线索化值。在预设的多级数据中添加新增级之后,需要对扩增后的多级数据中的各数据的线索化值进行重新计算。
在本步骤中,计算机设备可以获取新增级的数据的个数,以便基于新增级的数据的个数,计算新增后的多级数据中的各级对应的进位数,以便基于扩增后的多级数据中的各级对应的进位数,计算扩增后的多级数据中的各数据的线索化值。
S704,基于上述新增级的数据的个数,更新上述预设的多级数据中各级对应的进位数。
在本步骤中,计算机设备可以基于新增级的数据的个数,计算扩增后的多级数据中的各级对应的进位数,根据图5上述的线索化值的确定方式中的S504中的相关说明,可知,数级的进位数可以基于该数级下属的各级的数据的个数,以及该数级下属的数级的级数来确定。
在S504中的例子的基础上进行说明,新增社区名为第五级,且第五级的数据的个数为4个,那么,增加第五级后的多级数据中,第一级对应的进位数至少为1000*4=4000,第二级对应的进位数至少为50*4=200,第三级对应的进位数至少为5*4=20,第四级对应的进位数至少为1*4=4;可选的,也可以乘以比率因子,当比率因子为1.25时,第一级对应的进位数可以为1000*4*1.25=5000,第二级对应的进位数可以为50*4*1.25=250,第三级对应的进位数可以为5*4*1.25=25,第四级对应的进位数可以为1*4*1.25=5,第五级对应的进位数为1。
一种可选实施例中,S704具体可以包括:
将上述预设的多级数据中各级对应的进位数,与上述新增级的数据的个数的乘积,分别作为上述各级对应的新的进位数;将上述新的进位数,作为上述各级对应的进位数。
具体的,计算机设备可以将预设的多级数据中各级对应的进位数,与上述新增的数据的个数的乘积,分别作为各级对应的出新的进位数,并将新的进位数,作为各级对应的进位数。
在上述例子的基础上进行说明,新增社区名为第五级,且第五级的数据的个数为4个,那么,增加第五级后的多级数据中,第一级对应的进位数为1000*4=4000,第二级对应的进位数为50*4=200,第三级对应的进位数为5*4=20,第四级对应的进位数为1*4=4,第五级对应的进位数为1。
S706,基于上述各级中各数据的排序,以及上述各级对应的进位数,更新上述各级中各数据的线索化值。
在本步骤中,计算机设备可以基于预设的多级数据的各级中各数据的排序,以及各级对应的进位数,重新计算各数据的线索化值,并使用重新计算出的新的线索化值,更新预设的多级数据中各数据的线索化值。
可见,上述更新线索化值的方式中,可以基于新增级中的数据的个数,计算出各级对应的新的进位数,进而基于新的进位数更新各数据的线索化值,计算速度快且处理效率高。
又一个实施例中,在图5和图6所示的线索化值的确定方式的基础上,提出需要在预设的多级数据中的已存在的数级中扩展新的数据的场景下,更新线索化值的方式。参考图8,图8为又一个实施例中线索化值的更新方式的流程示意图。如图8所示,线索化值的更新方式可以包括以下步骤:
S802,获取扩展级对应的扩展后的数据的个数。
其中,上述扩展级为上述多级数据中的一级,扩展的数据属于该扩展级;且已计算出在扩展数据之前的预设的多级数据中的所有数据的线索化值。在预设的多级数据中添加扩展数据之后,需要对扩展后的多级数据中的各数据的线索化值进行重新计算。
在本步骤中,计算机设备可以获取扩展级对应的扩展后的数据的个数,以便基于扩展级对应的扩展后的数据的个数,计算各级对应的新的进位数。
S803,判断上述扩展后的数据的个数是否大于上述扩展级的最大容量值,若为是,执行S804,若为否,执行S806。
在本步骤中,计算机设备可以判断扩展后的数据的个数是否大于扩展级的最大容量值,若为是,则需要重新计算扩展级以上的各级对应的进位数,进而重新计算扩展级以上的各级中的各数据的线索化值,若为否,则可以将扩展数据直接添加到扩展级中,无需重新计算扩展级以上的各级对应的进位数,也无需重新计算扩展级以上的各级中的各数据的线索化值。
S804,将上述扩展后的数据添加到上述扩展级中,并计算上述扩展后的数据的线索化值。
在本步骤中,当上述扩展后的数据的个数小于或等于上述扩展级的容量值时,计算机设备可以将上述扩展后的数据添加到上述扩展级中,而无需重新计算各级的进位数,只需要按照扩展级中各数据的排序,计算扩展数据的线索化值即可。
具体的,可以将扩展数据添加在扩展级中已存在的数据之后,也可以添加在扩展级中已存在的数据之间的空缺位置。
比如,扩展级的容量值为12,已存在的数据为10个,且已存在的数据的线索化值分别为100,101,102,…,110,扩展数据为1个,那么,可以将扩展数据直接添加到扩展级中,扩展数据的线索化值可以为111。
又比如,扩展级的容量值为12,已存在的数据为10个,且已存在的数据的线索化值分别为100,103,104,。。。111,扩展数据为1个,那么,可以将扩展数据直接添加到扩展级中已存在数据之间的空缺位置,扩展数据的线索化值可以为102。
S806,将所述扩展后的数据的个数,乘以预设的比率因子,得到所述扩展级的新的最大容量值;将所述新的最大容量值,作为所述扩展级的最大容量值。
在本步骤中,当上述扩展后的数据的个数大于上述扩展级的最大容量值时,计算机设备可以将扩展后的数据的个数,乘以预设的比率因子,得到上述扩展级的新的最大容量值,并将上述新的最大容量值,作为上述扩展级的最大容量值,以便计算扩展级以上的各级的新的进位数。
比如,扩展级扩展后的数据的个数为11,预设的比率因子为1.25,那么,可以计算出扩展级的新的最大容量值为11*1.25=13.75。
这样,通过配置比率因子,可以动态调整各级的最大容量值和进位数,以便提前做好扩展数据的准备,在较大程度上减少重新计算线索化值的次数。
S808,基于扩展后的上述扩展级的数据的容量值,以及上述扩展级以上的各级的容量值,确定上述扩展级以上的各级的新的进位数;并将上述扩展级以上的各级的新的进位数,作为上述扩展级以上的各级的进位数,执行S810。
在本步骤中,计算机设备可以基于扩展后的扩展级的容量值,以及上述扩展级以上的各级的容量值,计算上述扩展级以上的各级的新的进位数,以便更新上述扩展级以上的各级中数据的线索化值。
具体的,针对扩展级以上的各级:将该级下属的各级的数据的个数相乘,将乘积作为该级的进位数,其中,扩展级的数据的个数为在扩展后的数据的个数。
需要说明的是,在扩展级中增加扩展数据不影响扩展级及扩展级下属的各级的进位数,也就是说,在扩展级中增加扩展数据不影响扩展级及扩展级下属的各级中的数据的线索化值。
在S504中的例子的基础上进行说明,扩展级为第三级,扩展后的数据的个数为15个,第三级的容量值为10,扩展后的数据的个数已超过该级容量值,第三级的上级为第一级和第二级;那么,第一级对应的新的进位数为20*15*5=5000,第二级对应的新的进位数为15*5=75,第三级对应的进位数仍为5,第四级对应的进位数仍为1。
具体实施中,还可以基于图7所述的线索化值的更新方式,在新增级的基础上,再在扩展级中增加扩展数据。
下面在S704下的例子的基础上进行说明:新增社区名为第五级,且第五级的数据的个数为4个,扩展级为第三级,扩展后的数据的个数为15个;那么,第一级对应的新的进位数为20*15*5*4=6000,第二级对应的新的进位数为15*5*4=300,第三级对应的新的进位数为5*4=20,第四级对应的新的进位数为1*4=4,第五级对应的进位数不变。
S810,基于上述扩展级以上的各级中的数据的排序,以及上述扩展级以上的各级对应的进位数,更新扩展级以上的各级中的各数据的线索化值。
在本步骤中,计算机设备可以基于预设的多级数据中,扩展级以上的各级中各数据的排序,以及扩展级以上的各级对应的进位数,重新计算扩展级以上的各级中的各数据的线索化值,并使用重新计算出的新的线索化值,更新扩展级以上的各级中的各数据的线索化值。
可见,上述更新线索化值的方式中,可以通过配置比率因子,可以动态调整各级的最大容量值和进位数,以便提前做好扩展数据的准备,在较大程度上减少重新计算线索化值的次数;以及基于扩展后的数据的个数,计算出各级对应的新的进位数,进而基于新的进位数更新各数据的线索化值,计算速度快且处理效率高。
此外,在类别比较稳定的场景下,可以直接用线索化值作为各数据的类别ID,在具体使用时,可以将类别ID作为各数据的外部关键字。由于数据之间的线索化值之间有关联性,因此,在查找数据时,可以根据已知数据的类别ID,关联到待查找的数据,无需再通过预设的关联类别表来查找数据,节省时间,提高查找效率。
比如,可以将商品表中的各商品的线索化值设置为各商品的分类标识,设置商品x牌大米和商品x牌油的分类标识为1010200,以及设置商品x牌小吃糖果和商品y牌小吃糖果的分类标识为1010100;这样,在搜索食品类下的商品时,可以直接根据小吃类和粮油类对应的线索化区间[1010000,1020000)来搜索商品。而在现有技术中,需要先在商品分类表中查找小吃类和粮油类对应的分类标识,再根据查找到的分类标识搜索商品。
应该理解的是,虽然图1-8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-8中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,参考图9,图9为一个实施例中数据的搜索装置的结构示意图。如图9所示,提供了一种数据的搜索装置900,包括:获取模块901和确定模块902,其中:
获取模块901,用于获取目标数据的线索化值,上述目标数据为预设的多级数据中的一个数据,上述线索化值是基于上述预设的多级数据的总级数,以及上述预设的多级数据中各级的数据的个数计算出的;
确定模块902,用于在上述预设的多级数据中,确定与上述目标数据处于同级的兄弟数据的线索化值,其中,上述兄弟数据与上述目标数据的父级数据相同;
上述确定模块902,还用于基于上述目标数据的线索化值,以及上述兄弟数据的线索化值,确定上述目标数据下属的子数据。
在其中一个实施例中,上述装置还包括取值模块。
取模模块用于使用上述目标数据的线索化值,分别对上述预设的多级数据中的各级的进位数取模,其中,所述进位数是指同级中两个相邻的数据之间的间隔数值。
上述确定模块902,还用于将模为零对应的级数,确定为上述目标数据所处的级数。
在其中一个实施例中,上述兄弟数据的线索化值大于上述目标数据的线索化值,且上述兄弟数据与上述目标数据为相邻数据。
上述确定模块902,具体用于将所述目标数据的线索化值与所述兄弟数据的线索化值之间的线索化值区间,确定为备选区间;将上述预设的多级数据中,线索化值处于上述备选区间中的数据,确定为上述目标数据下属的子数据。
在其中一个实施例中,上述确定模块902,具体用于获取上述目标数据所处的级数对应的进位数,其中,上述进位数是指同级中两个相邻的数据之间的间隔数值;将上述目标数据的线索化值,与上述目标数据所处的级数对应的进位数之和,确定为与上述目标数据相邻的兄弟数据的线索化值。
在其中一个实施例中,上述装置还包括计算模块。上述线索化值通过执行如下模块来确定:
上述确定模块902,还用于确定上述预设的多级数据的总级数以及各级的数据的个数,
以及基于上述总级数和上述各级的数据的个数,确定上述各级对应的进位数,其中,上述进位数是指同级中两个相邻的数据之间的间隔数值。
计算模块用于基于上述各级中各数据的排序,以及上述各级对应的进位数,计算上述各级中各数据对应的线索化值。
在其中一个实施例中,上述确定模块902,具体用于基于上述各级的数据的个数,确定上述各级的数据所需的位数;基于上述总级数,以及上述各级的数据所需的位数,确定根线索化值以及上述各级的上述位数在上述根线索化值中对应的位置,其中,上述根线索化值是上述预设的多级数据中,所有数据的线索化值的基数,上述根线索化值的位数大于上述各级的数据所需的位数之和;基于上述各级的上述数据在上述根线索化值中对应的位置,确定上述各级对应的进位数;
上述计算模块,具体用于基于上述各级中各数据的排序、上述各级对应的进位数以及上述根线索化值,计算上述各级中各数据的线索化值。
在其中一个实施例中,上述确定模块902,还用于针对上述多级数据中的各级:基于该级下属的各级的数据的个数的乘积,得到该级对应的进位数;
上述计算模块,具体用于针对上述预设的多级数据中第一级的各数据:确定各数据在上述第一级中的排序,得到各数据对应的排序号;将各数据对应的排序号,与上述第一级对应的进位数相乘,得到各数据对应的线索化值;针对上述多级数据中,除上述第一级以外的其他级的各数据:确定各数据在该级中的排序,得到各数据对应的排序号;确定各数据的上一级数据对应的线索化值;将各数据对应的排序号与该级对应的进位数相乘得到的乘积,与上述上第一级数据对应的线索化值相加,得到各数据对应的线索化值。
在其中一个实施例中,上述确定模块902,还用于将该级下属的各级的数据的个数,分别与预设的比率因子相乘,得到该级下属的各级的最大容量值;将该级下属的各级的上述最大容量值分别相乘,得到该级对应的进位数。
在其中一个实施例中,上述装置还包括:上述获取模块,还用于获取新增级的数据的个数;更新模块,用于基于上述新增级的数据的个数,更新上述预设的多级数据中各级对应的进位数。
在其中一个实施例中,上述更新模块,具体用于将上述预设的多级数据中各级对应的进位数,与上述新增级的数据的个数的乘积,分别作为上述各级对应的新的进位数;将上述新的进位数,作为上述各级对应的进位数。
在其中一个实施例中,上述获取模块,还用于获取扩展级对应的扩展后的数据的个数,上述扩展级为上述多级数据中的一级;
添加模块,用于当上述扩展后的数据的个数小于或等于上述扩展级的最大容量值时,将上述扩展后的数据添加到上述扩展级中;
上述确定模块902,还用于获取扩展级对应的扩展后的数据的个数,所述扩展级为所述多级数据中的一级;当所述扩展后的数据的个数小于或等于所述扩展级的最大容量值时,将所述扩展后的数据添加到所述扩展级中,并计算所述扩展后的数据的线索化值;当所述扩展后的数据的个数大于所述扩展级的最大容量值时,将所述扩展后的数据的个数,乘以预设的比率因子,得到所述扩展级的新的最大容量值;将所述新的最大容量值,作为所述扩展级的最大容量值;基于扩展后的所述扩展级的最大容量值,以及所述扩展级以上的各级的最大容量值,确定所述扩展级以上的各级的新的进位数;将所述扩展级以上的各级的新的进位数,作为所述扩展级以上的各级的进位数。
关于数据的搜索装置的具体限定可以参见上文中对于数据的搜索方法的限定,在此不再赘述。上述数据的搜索装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储预设的多级数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据的搜索方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现如上述数据的搜索方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述数据的搜索方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上上述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种数据的搜索方法,其特征在于,所述方法包括:
获取目标数据的线索化值,所述目标数据为预设的多级数据中的一个数据,所述线索化值是基于所述预设的多级数据的总级数,以及所述预设的多级数据中各级的数据的个数计算出的;
在所述预设的多级数据中,确定与所述目标数据处于同级的兄弟数据的线索化值,其中,所述兄弟数据与所述目标数据的父级数据相同;
将所述目标数据的线索化值与所述兄弟数据的线索化值之间的线索化值区间,确定为备选区间,并将所述预设的多级数据中,线索化值处于所述备选区间中的数据,确定为所述目标数据下属的子数据;所述兄弟数据的线索化值大于所述目标数据的线索化值,且所述兄弟数据与所述目标数据为相邻数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
使用所述目标数据的线索化值,分别对所述预设的多级数据中的各级的进位数取模,其中,所述进位数是指同级中两个相邻的数据之间的间隔数值;
将模为零对应的级数,确定为所述目标数据所处的级数。
3.根据权利要求1所述的方法,其特征在于,所述在所述预设的多级数据中,确定与所述目标数据处于同级的兄弟数据的线索化值的步骤,包括:
获取所述目标数据所处的级数对应的进位数,其中,所述进位数是指同级中两个相邻的数据之间的间隔数值;
将所述目标数据的线索化值,与所述目标数据所处的级数对应的进位数之和,确定为与所述目标数据相邻的兄弟数据的线索化值。
4.根据权利要求1所述的方法,其特征在于,所述线索化值的确定方式包括:
确定所述预设的多级数据的总级数以及各级的数据的个数;
基于所述总级数和所述各级的数据的个数,确定所述各级对应的进位数,其中,所述进位数是指同级中两个相邻的数据之间的间隔数值;
基于所述各级中各数据的排序,以及所述各级对应的进位数,计算所述各级中各数据对应的线索化值。
5.根据权利要求4所述的方法,其特征在于,所述基于所述总级数和所述各级的数据的个数,确定所述各级对应的进位数的步骤,包括:
基于所述各级的数据的个数,确定所述各级的数据所需的位数;
基于所述总级数,以及所述各级的数据所需的位数,确定根线索化值以及所述各级的所述位数在所述根线索化值中对应的位置,其中,所述根线索化值是所述预设的多级数据中,所有数据的线索化值的基数,所述根线索化值的位数大于所述各级的数据所需的位数之和;
基于所述各级的所述数据在所述根线索化值中对应的位置,确定所述各级对应的进位数;
所述基于所述各级中各数据的排序,以及所述各级对应的进位数,计算所述各级中各数据对应的线索化值的步骤,包括:
基于所述各级中各数据的排序、所述各级对应的进位数以及所述根线索化值,计算所述各级中各数据的线索化值。
6.根据权利要求5所述的方法,其特征在于,所述基于所述总级数和所述各级的数据的个数,确定所述各级对应的进位数的步骤,包括:
针对所述多级数据中的各级:基于当前级下属的各级的数据的个数的乘积,得到所述当前级对应的进位数;
所述基于所述各级中各数据的排序,以及所述各级对应的进位数,计算所述各级中各数据对应的线索化值的步骤,包括:
针对所述预设的多级数据中第一级的各数据:确定各数据在所述第一级中的排序,得到各数据对应的排序号;将各数据对应的排序号,与所述第一级对应的进位数相乘,得到各数据对应的线索化值;
针对所述多级数据中,除所述第一级以外的其他级的各数据:确定各数据在所述当前级中的排序,得到各数据对应的排序号;确定各数据的所述当前级的上一级数据对应的线索化值;将各数据对应的排序号与所述当前级对应的进位数相乘得到的乘积,与所述当前级的上一级数据对应的线索化值相加,得到各数据对应的线索化值。
7.根据权利要求6所述的方法,其特征在于,所述基于当前级下属的各级的数据的个数的乘积,得到所述当前级对应的进位数的步骤,包括:
将所述当前级的下属的各级的数据的个数,分别与预设的比率因子相乘,得到所述当前级的下属的各级的最大容量值;
将所述当前级的下属的各级的所述最大容量值分别相乘,得到所述当前级的对应的进位数。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
获取新增级的数据的个数;
基于所述新增级的数据的个数,更新所述预设的多级数据中各级对应的进位数。
9.根据权利要求8所述的方法,其特征在于,所述基于所述新增级的数据的个数,更新所述预设的多级数据中各级对应的进位数的步骤,包括:
将所述预设的多级数据中各级对应的进位数,与所述新增级的数据的个数的乘积,分别作为所述各级对应的新的进位数;
将所述新的进位数,作为所述各级对应的进位数。
10.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
获取扩展级对应的扩展后的数据的个数,所述扩展级为所述多级数据中的一级;
当所述扩展后的数据的个数小于或等于所述扩展级的最大容量值时,将所述扩展后的数据添加到所述扩展级中,并计算所述扩展后的数据的线索化值;
当所述扩展后的数据的个数大于所述扩展级的最大容量值时,将所述扩展后的数据的个数,乘以预设的比率因子,得到所述扩展级的新的最大容量值;将所述新的最大容量值,作为所述扩展级的最大容量值;基于扩展后的所述扩展级的最大容量值,以及所述扩展级以上的各级的最大容量值,确定所述扩展级以上的各级的新的进位数;将所述扩展级以上的各级的新的进位数,作为所述扩展级以上的各级的进位数。
11.一种数据的搜索装置,其特征在于,所述装置包括:
获取模块,用于获取目标数据的线索化值,所述目标数据为预设的多级数据中的一个数据,所述线索化值是基于所述预设的多级数据的总级数,以及所述预设的多级数据中各级的数据的个数计算出的;
确定模块,用于在所述预设的多级数据中,确定与所述目标数据处于同级的兄弟数据的线索化值,其中,所述兄弟数据与所述目标数据的父级数据相同;
所述确定模块,还用于将所述目标数据的线索化值与所述兄弟数据的线索化值之间的线索化值区间,确定为备选区间,并将所述预设的多级数据中,线索化值处于所述备选区间中的数据,确定为所述目标数据下属的子数据;所述兄弟数据的线索化值大于所述目标数据的线索化值,且所述兄弟数据与所述目标数据为相邻数据。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
取值模块,用于使用所述目标数据的线索化值,分别对所述预设的多级数据中的各级的进位数取模,其中,所述进位数是指同级中两个相邻的数据之间的间隔数值;
所述确定模块,还用于将模为零对应的级数,确定为所述目标数据所处的级数。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10中任一项所述方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811191150.XA CN109522369B (zh) | 2018-10-12 | 2018-10-12 | 数据的搜索方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811191150.XA CN109522369B (zh) | 2018-10-12 | 2018-10-12 | 数据的搜索方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109522369A CN109522369A (zh) | 2019-03-26 |
CN109522369B true CN109522369B (zh) | 2020-10-23 |
Family
ID=65771963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811191150.XA Active CN109522369B (zh) | 2018-10-12 | 2018-10-12 | 数据的搜索方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109522369B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112667675B (zh) * | 2021-03-17 | 2021-06-01 | 杭州趣链科技有限公司 | 数据查验方法、电子装置和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902544A (zh) * | 2012-12-25 | 2014-07-02 | 中国移动通信集团公司 | 一种数据处理方法及系统 |
CN104346357A (zh) * | 2013-07-29 | 2015-02-11 | 中国科学院声学研究所 | 一种嵌入式终端的文件存取方法及系统 |
CN105404660A (zh) * | 2015-11-05 | 2016-03-16 | 上海智臻智能网络科技股份有限公司 | 多级数据存储方法及装置、多级数据结构、信息检索方法 |
CN105528356A (zh) * | 2014-09-29 | 2016-04-27 | 阿里巴巴集团控股有限公司 | 结构化标签生成方法、使用方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150262062A1 (en) * | 2014-03-17 | 2015-09-17 | Microsoft Corporation | Decision tree threshold coding |
US10795872B2 (en) * | 2016-06-29 | 2020-10-06 | EMC IP Holding Company LLC | Incremental bloom filter rebuild for B+ trees under multi-version concurrency control |
-
2018
- 2018-10-12 CN CN201811191150.XA patent/CN109522369B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902544A (zh) * | 2012-12-25 | 2014-07-02 | 中国移动通信集团公司 | 一种数据处理方法及系统 |
CN104346357A (zh) * | 2013-07-29 | 2015-02-11 | 中国科学院声学研究所 | 一种嵌入式终端的文件存取方法及系统 |
CN105528356A (zh) * | 2014-09-29 | 2016-04-27 | 阿里巴巴集团控股有限公司 | 结构化标签生成方法、使用方法及装置 |
CN105404660A (zh) * | 2015-11-05 | 2016-03-16 | 上海智臻智能网络科技股份有限公司 | 多级数据存储方法及装置、多级数据结构、信息检索方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109522369A (zh) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102722531B (zh) | 一种云环境中基于分片位图索引的查询方法 | |
CN112069276B (zh) | 地址编码方法、装置、计算机设备及计算机可读存储介质 | |
WO2015070788A1 (zh) | 一种识别ip地址的区域归属地信息的方法和装置 | |
CN102737123B (zh) | 一种多维数据分布方法 | |
CN106326475A (zh) | 一种高效的静态哈希表实现方法及系统 | |
CN103914456A (zh) | 一种数据存储方法和系统 | |
JP2010055621A (ja) | 検索方法及び検索システム | |
CN104539750A (zh) | 一种ip定位方法和装置 | |
CN109522369B (zh) | 数据的搜索方法、装置、计算机设备和存储介质 | |
US20090070354A1 (en) | Minimal perfect hash functions using double hashing | |
CN112699195B (zh) | 地理空间数据处理方法、装置、计算机设备及存储介质 | |
CN112765155B (zh) | 基于区块链的键值存储方法、装置、终端设备及介质 | |
CN103631839B (zh) | 一种页面地域权重模型实现方法 | |
CN108345607B (zh) | 搜索方法和装置 | |
CN111143373A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN116522844A (zh) | 电路划分方法、电路节点电压计算方法、终端及存储介质 | |
CN116226553A (zh) | 轨迹查询方法和装置、存储介质 | |
CN111402958A (zh) | 一种建立基因比对表的方法、系统、设备及介质 | |
CN112800242A (zh) | 谱系挖掘方法、装置、电子设备及计算机可读存储介质 | |
CN110909097B (zh) | 多边形电子围栏生成方法、装置、计算机设备和存储介质 | |
JP2008090334A (ja) | 所在地解析装置、所在地解析方法及びそのプログラム並びに記録媒体 | |
CN108984615B (zh) | 一种数据查询方法和系统、存储介质 | |
CN105117733A (zh) | 一种确定聚类样本差异的方法及装置 | |
CN112184350A (zh) | 一种用户订单处理方法、装置、存储介质和服务器 | |
CN112185568A (zh) | 信息处理方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |