System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据索引,尤其涉及一种面向字符串数据的学习索引构建方法、装置和介质。
技术介绍
1、学习索引模型是指将索引视作模型,这个模型提供了数据到其位置的映射。目前在数值型学习索引设计方案中,通常在每个节点内使用比较简单的线性模型来计算查找键的大致位置。然而字符串相对于数值具有较大的实体且长度各异,在计算机中以字节数组的形式存储,这增加了模型计算的复杂性也增加了模型参数的个数,索引结构空间代价大。同时,由于会存在相同的前缀和子字符串,字符串数据通常比数值数据具有更不规则的分布,当使用简单的线性模型时,得到的位置不够精确,导致需要在一个较大的范围内进行搜索,索引效率低。
2、综上,相关技术中存在的技术问题有待得到改善。
技术实现思路
1、本专利技术实施例提供了一种面向字符串数据的学习索引构建方法、装置和介质,有效地提高了索引效率,降低了索引结构空间代价。
2、一方面,本专利技术实施例提供了一种面向字符串数据的学习索引构建方法,包括以下步骤:
3、获取第一字符串数据;
4、以预设字节数量个的字节为单位,对所述第一字符串数据进行划分,得到若干个第一子字符串;
5、对若干个所述第一子字符串进行编码,得到对应的第一编码整数;
6、根据所述第一编码整数在所述第一字符串数据划分中的顺序序号,通过逐层索引查找对应的索引层;
7、在所述索引层中,创建初始子节点数组;
8、将所述第一编码整数插入到所述初
9、将所述待训练子节点数组中的所述第一编码整数输入第一预设学习索引模型,以使所述第一预设学习索引模型进行训练,得到所述待训练子节点数组对应的第一目标学习索引模型,所述第一目标学习索引模型用于对目标字符串数据进行索引。
10、在一些实施例中,所述对若干个所述第一子字符串进行编码,得到对应的第一编码整数,包括:
11、根据预设编码规则,对若干个所述第一子字符串中的每个字符进行转换,得到对应的转换码;
12、将多项所述转换码进行组合,计算所述第一编码整数。
13、在一些实施例中,所述方法还包括:
14、获取待查找字符串数据;
15、根据所述待查找字符串数据,计算待查找子字符串在对应的第一子节点数组中的存放位置;
16、若所述存放位置的数组元素类型为同层指针,则根据第一同层指针,查找所述第一同层指针指向的第二子节点数组,所述第二子节点数组用于通过逐层索引查找所述待查找字符串数据对应的值;
17、若所述存放位置的数组元素类型为下层指针,则根据第一下层指针,查找所述第一下层指针指向的第三子节点数组,所述第三子节点数组用于通过逐层索引查找所述待查找字符串数据对应的值;
18、若所述存放位置的数组元素类型为数据值,则得到所述待查找字符串数据对应的值。
19、在一些实施例中,所述根据所述待查找字符串数据,计算待查找子字符串在对应的第一子节点数组中的存放位置,包括:
20、以所述预设字节数量个的字节为单位,对所述待查找字符串数据进行划分,得到若干个所述待查找子字符串;
21、对若干个所述待查找子字符串进行编码,得到对应的所述待查找编码整数;
22、将所述待查找编码整数输入所述第一子节点数组的目标学习索引模型,计算所述待查找子字符串在对应的所述第一子节点数组中的存放位置。
23、在一些实施例中,所述方法还包括:
24、获取待插入字符串数据和所述待插入字符串数据对应的值;
25、以所述预设字节数量个的字节为单位,对所述待插入字符串数据进行划分,得到若干个待插入子字符串;
26、对若干个所述待插入子字符串进行编码,得到对应的待插入编码整数;
27、将所述待插入编码整数输入第四子节点数组的目标学习索引模型,计算所述待插入子字符串在对应的第四子节点数组中的存放位置;
28、若所述存放位置的数组元素类型为数据值,则对所述第四子节点数组进行冲突处理,得到第五子节点数组;
29、若所述存放位置的数组元素类型为同层指针,则根据第二同层指针,查找所述第二同层指针指向的第六子节点数组,所述第六子节点数组用于通过逐层索引查找所述待插入字符串数据对应的值的插入位置;
30、若所述存放位置的数组元素类型为下层指针,则判断所述待插入子字符串与第二下层指针对应的指针子字符串是否相同;
31、若所述待插入子字符串与所述第二下层指针对应的指针子字符串相同,则查找所述第二下层指针指向的第七子节点数组,所述第七子节点数组用于通过逐层索引查找所述待插入字符串数据对应的值的插入位置;
32、若所述待插入子字符串与所述第二下层指针对应的指针子字符串不相同,则对所述第四子节点数组进行新增同层处理,得到第八子节点数组;
33、若所述存放位置的数组元素类型为空,则将所述待插入字符串数据和所述待插入字符串数据对应的值插入到所述存放位置。
34、在一些实施例中,所述对所述第四子节点数组进行冲突处理,得到第五子节点数组,包括:
35、创建冲突子节点数组;
36、将所述存放位置的数据值和所述待插入字符串数据对应的值插入到所述冲突子节点数组,得到第九子节点数组;
37、将所述待插入编码整数和所述存放位置的数据值对应的编码整数输入第二预设学习索引模型,以使所述第二预设学习索引模型进行训练,得到第二目标学习索引模型;
38、将所述第二目标学习索引模型增加到所述第九子节点数组,得到所述第五子节点数组;
39、在所述第四子节点数组中创建第三同层指针,所述第三同层指针用于指向所述第五子节点数组。
40、在一些实施例中,所述对所述第四子节点数组进行新增同层处理,得到第八子节点数组,包括:
41、创建同层子节点数组;
42、将所述第二下层指针和所述待插入字符串数据对应的值插入到所述同层子节点数组,得到第十子节点数组;
43、将所述待插入编码整数和所述存放位置的数据值对应的编码整数输入第三预设学习索引模型,以使所述第三预设学习索引模型进行训练,得到第三目标学习索引模型;
44、将所述第三目标学习索引模型增加到所述第十子节点数组,得到所述第八子节点数组;
45、在所述第四子节点数组中创建第四同层指针,所述第四同层指针用于指向所述第八子节点数组。
46、另一方面,本专利技术实施例提供了一种面向字符串数据的学习索引构建装置,包括:
47、第一模块,用于获取第一字符串数据;
48、第二模块,用于以预设字节数量个的字节为单位,对所述第一字符串数据进行划分,得到若干个第一子字符串;
49、第三模块,用于对若干个所述第一子字符串进行编本文档来自技高网...
【技术保护点】
1.一种面向字符串数据的学习索引构建方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的方法,其特征在于,所述对若干个所述第一子字符串进行编码,得到对应的第一编码整数,包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述根据所述待查找字符串数据,计算待查找子字符串在对应的第一子节点数组中的存放位置,包括:
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述对所述第四子节点数组进行冲突处理,得到第五子节点数组,包括:
7.根据权利要求5所述的方法,其特征在于,所述对所述第四子节点数组进行新增同层处理,得到第八子节点数组,包括:
8.一种面向字符串数据的学习索引构建装置,其特征在于,包括:
9.一种面向字符串数据的学习索引构建装置,其特征在于,包括:
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执
...【技术特征摘要】
1.一种面向字符串数据的学习索引构建方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的方法,其特征在于,所述对若干个所述第一子字符串进行编码,得到对应的第一编码整数,包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述根据所述待查找字符串数据,计算待查找子字符串在对应的第一子节点数组中的存放位置,包括:
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。