CN110457531A - 一种基于OpenMP的并行字符串查询方法 - Google Patents
一种基于OpenMP的并行字符串查询方法 Download PDFInfo
- Publication number
- CN110457531A CN110457531A CN201910666139.2A CN201910666139A CN110457531A CN 110457531 A CN110457531 A CN 110457531A CN 201910666139 A CN201910666139 A CN 201910666139A CN 110457531 A CN110457531 A CN 110457531A
- Authority
- CN
- China
- Prior art keywords
- character string
- partition
- openmp
- character
- subregion
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000005192 partition Methods 0.000 claims abstract description 41
- 230000001174 ascending effect Effects 0.000 claims abstract description 12
- 238000013480 data collection Methods 0.000 claims abstract description 11
- 238000002203 pretreatment Methods 0.000 claims abstract description 6
- 238000012546 transfer Methods 0.000 claims description 5
- 238000013459 approach Methods 0.000 claims description 2
- 238000003491 array Methods 0.000 claims description 2
- 235000013399 edible fruits Nutrition 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract 1
- 238000000638 solvent extraction Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 9
- 238000003780 insertion Methods 0.000 description 8
- 230000037431 insertion Effects 0.000 description 8
- 238000010276 construction Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于OpenMP的并行字符串查询方法,属于数据库技术领域。包括字符串数据集预处理步骤,对字符串数据集和查询集按照字典序升序排序并统计各首字母下所有字符串的字符串数量;索引创建步骤,基于贪婪分区方法将数据集划分成K个分区并创建分区表,然后基于OpenMP并行为每个分区创建独立的双数组Trie索引结构;检索步骤,对一批待查询的字典序有序的查询集,根据分区表确定各查询对应的分区号并在相应分区内进行并行检索。本发明通过贪婪分区算法和OpenMP等技术创建分区双数组,使分区负载更为均衡,进而可提高双数组创建以及检索的效率。
Description
技术领域
本发明涉及一种基于OpenMP的并行字符串查询方法,属于数据库技术领域。
背景技术
随着信息量的急剧增长,大量的数据需要以字符串的形式存储,例如文档,网页,基因组数据等等,提高字符串的存储和检索效率具有非常重要的意义。为了解决这一问题,许多学者提出了处理字符串数据的有效算法和数据结构,其中,在1989年AOE提出的一种双数组索引结构(DA)是一个典型的代表。DA使用两个一维数组BASE和CHECK来存储每个字符串能与其他字符串区分的前缀部分,使用一维数组TAIL来存储字符串的后缀部分。在查询过程中,只需要通过数学加法运算即可确定每个字符是否存储在DA中,但在DA的构造过程中,因不同字符竞争位置产生冲突,从而导致索引创建的开销加大,随着字符串数量的增加,DA构造效率急剧降低。
目前对DA的优化算法的目标大多是提高索引结构的空间利用率,这也就导致了其创建效率往往不高。例如Yata等人提出了一种压缩的双数组索引结构,其将字符信息存储在CHECK数组中来提升空间效率,然而这种方法需要额外的开销来满足BASE值的唯一性,从而导致双数组创建效率的降低。为提高索引创建效率,Jia等人提出了一种基于首字母分区的双数组索引结构,这种结构根据字符串的首字母将字符串划分到不同的分区中,从而可将冲突限定在分区内,降低了冲突的数量及冲突处理的代价。其算法可有效提高双数组构造效率,但其各个分区的字符串数量并不均衡,因此并不适用于并行环境。上述工作多为串行算法,未能充分利用目前越来越广泛的多核CPU的处理能力,因此效率有待提升。OpenMP是一种已被广泛接受的,用于共享内存并行***的多处理器程序设计的一套指导性编译处理方案,可很好地用于实现并行分区双数组的构建及字符串查询工作。
发明内容
本发明要解决的技术问题是提供一种基于OpenMP的并行字符串查询方法,用于解决上述问题。
本发明的技术方案是:一种基于OpenMP的并行字符串查询方法,具体为:
字符串数据集预处理步骤:将字符串数据集按字典序升序排序,按首字母分区,并统计各分区的字符串的数量,将查询集同样按字典序升序排序;
索引创建步骤:基于贪婪分区方法将数据集分区并创建分区表简称PT,通过OpenMP并行为每个分区创建分区双数组(DA)索引结构;
查询步骤:对待查询的字典序有序的一批字符串,在相应的DA上进行检索,获取查询结果。
所述字符串数据集预处理步骤具体为:
Step110:将字符串数据集按字典序升序排序;
Step120:统计各首字母对应的字符串数量La,Lb,Lc…Lz;
Step130:将查询集按字典序升序排序。
所述索引创建步骤具体为:
Step210:构建分区表PT,将数据集划分为K个近似均匀的分区;
Step220:基于OpenMP为每个分区构建独立的DA索引结构。
所述Step 210具体为:
Step211:初始化分区表PT,PT的每一项包含首字母C、字符串数量L、分区号P三个属性,并依次写入预处理阶段得到的每个首字母及其对应的字符串数量,分区号均初始化为0;第i行,0≤i≤25对应的字符、字符串数量和分区号分别用Ci,Li和Pi表示;
Step212:将分区表PT按照字符串数量降序排序,置PT的前K项,0到K-1项的分区号为1,2,3…K;
Step213:按照L的大小,为PT中前K个表项建造一个小根堆,记堆顶元素对应的字符串数量和分区号分别为LH和PH;
Step214:将PT的第i项,K≤i≤25归并到堆顶,置Pi=PH,更新堆顶元素LH=LH+Li后调整小根堆;
Step215:重复步骤214直到PT中的所有项都归并到堆中;
Step216:将分区表PT按照首字母C升序排序。
所述Step 220具体为:
Step221:基于OpenMP启动K个线程,并行地为每个分区创建分区双数组索引结构,第i个线程负责第i个分区双数组的构建;对线程i读取的字符串s,将其特定长度的前缀(s能与任何其他字符相区别的前缀)中的字符***到第i个分区双数组中;对待***字符ch,从状态x转换到状态y,对应的状态转移公式为:
BASE[x]+CODE[ch]=y (1)
CHECK[y]=x (2)
式中,CODE[ch]表示字符ch的数值编码,将字符“#”,“a”,“b”,“c”···“z”的编码值设置为1,2,3,4···27;
所述查询步骤具体为:
Step310:将一系列按字典序有序排序的字符串集Q组成一个查询池;
Step320:每个线程取Q中一个字符串,根据所取字符串的首字母ch在Pch-‘a’对应的分区内执行DA的检索算法,并返回检索结果。
本发明的有益效果是:本发明解决了传统双数组索引结构创建效率过低的问题,大大提升了双数组索引结构的创建效率,分区负载更为均衡,对比现有技术,时间更短,效率更高,可显著提升双数组创建和查询效率。
附图说明
图1是本发明基于分区双数组的索引查询功能模块图;
图2是本发明初始小根堆的示意图;
图3是本发明归并第一个表项后的小根堆示意图;
图4是本发明最终小根堆示意图;
图5是本发明字符串集合T及其对应的分区表;
图6是本发明双数组的初始化图;
图7是本发明***“beach#”后的reducedtrie以及双数组示意图;
图8是本发明***“beach#”和“bedam#”的reduced trie以及双数组示意图;
图9是本发明1号分区创建索引完成后的reducedtrie以及双数组示意图;
图10是本发明2号分区创建索引完成后的reducedtrie以及双数组示意图;
图11是本发明2号分区创建索引完成后的reducedtrie以及双数组示意图;
具体实施方式
下面结合附图和具体实施方式,对本发明作进一步说明。
字符串数据集预处理步骤,对字符串数据集按字典序升序排序,以字符串集合T={“abcde”,“bedf”,“eak”,“cabin”,“fate”,“cbmpelete”,“dache”,“beach”,“dirivation”,“dafch”,“eaghe”,“bedam”,“end”,“bagage”,“dack”,“dabia”,“dacela”}为例,为了区分“ab”和“abc”这样的字符串,在每个字符串后面加上“#”作为标记,则集合T1={“abcde#”,“bedf#”,“eak#”“cabin#”,“fate#”,“cbmpelete#”,“dache”,“beach#”,“diribation#”,“dafch#”,“eaghe#”,“bedam#”,“end#”,“baggage#”,“dack#”,“dabia#”,“dacela#”},对字符串集合T1进行字典序排序后得到T2={“abcde#”,“baggage#”,“beach#”,“bedf#”,“bedam#”,“cabin#”,“cbmpletes#”,“dabia#”,“dacela#”,“dache#”,“dack#”,“dafch#”,“diribation#”,“eak#”,“eaghe#”“end#”,“fate#”}。
统计各首字母对应的字符串数量并设置分区参数为K=3,对于集合T2中,La=1,Lb=4,Lc=2,Ld=6,Le=3,Lf=1。
建立分区表PT,表中的表项为<a,1,0>,<b,4,0>,<c,2,0>,<d,6,0>,<e,3,0>,<f,1,0>。
对分区表PT按字符长度从大到小排序,排序结果为<d,6,0>,<b,4,0>,<e,3,0>,<c,2,0>,<a,1,0>,<f,1,0>,分区参数为3,置前三项分区号为1,2,3即<d,6,1>,<b,4,2>,<e,3,3>。
建立一个大小为3的堆,堆中存储PT的前三项即<d,6,1>,<b,4,2>,<e,3,3>,对堆根据已存储表项中的字符串数量从小到大排序,生成的堆如图3所示,堆顶为L最小的一项<e,3,3>。
从PT表中的第四项开始将表项归并到小根堆堆顶,将<c,2,0>归并到堆顶表项<e,3,3>中,更新分区表中的<c,2,0>为<c,2,3>,堆顶为<e,5,3>,调整小根堆,结果如图3所示。
重复上述步骤直到PT中所有表项都归并到堆中,最后堆中存储的表项为<d,6,1>,<e,5,3>,<b,6,2>,如图4所示,最终构建的分区表如图5所示。
在DA索引结构中,建立了两个一维整数数组BASE和CHECK来存储每个字符串能够相互区分的前缀部分(例如字符串“beach#”和字符串“bedam#”,只需要在BASE和CHECK中存储前缀“bea”和“bed”就能使这两个字符串区分开来)即redecetrie部分,其余部分存储在TAIL数组中。BASE数组中存储的是状态转移的基值,CHECK数组中存储校验值,用于检验状态转移的正确性。在DA索引结构中,一个字符的状态转移需要满足以下两个关系式:
BASE[x]+CODE[ch]=y (1)
CHECK[y]=x (2)
在上述公式中CODE[ch]表示字符ch的数值编码,在本发明中,英文字符“#”,“a”,“b”,“c”···“z”的编码值分别对应1,2,3,4···27。
对于数组BASE和CHECK中存储的值,当下标i中的BASE[i]和CHECK[i]中的值为0时表明该位置为空,该位置可以***字符,BASE[i]中的值为负数时表明该字符串前缀部分索引结束,该负值的绝对值指向该字符串的后缀部分在TAIL数组中的位置。
下面以字符串“beach#”,“bedam#”为例说明DA索引结构的创建过程。
双数组Trie的初始状态如图6所示,其中POS的值表明当前向TAIL数组中***字符的位置。
***字符串“beach#”,按以下步骤执行:
步骤A1:从BASE数组位置1开始字符的***,字符'b'的编码值为3,根据公式(1)和(2):
BASE[1]+CODE['b']=1+3=4,CHECK[4]=0≠1
步骤A2:CHECK值为0表明要将剩余的字符串***到TAIL数组中,此时BASE数组中仅存储了字符'b',将剩余部分“each#”从POS=1处开始依次***到TAIL数组中。
步骤A3:字符串“beach#”***完成,更新数组中的值
BASE[4]←-POS=-1
表明字符串的剩余部分在TAIL数组中开始***的位置,再更新POS的值
POS=1+length(“each#”)=1+5=6
表明下一个需要***的字符串的后缀在TAIL数组中的起始位置;
最后,更新CHECK值:
CHECK[4]=1
表明节点4是从节点1跳转过来的,此时构造的reducetrie以及其DA索引结构如图7所示
接着***字符串“bedam#”:
步骤B1:从BASE数组位置1开始进行索引的创建,字符'b'的编码值为3,根据公式(1)和(2):
BASE[1]+CODE['b']==1+3=4,CHECK[4]=1
CHECK值非0说明字符'b'已经存储在数组中。
步骤B2:需要索引更多的字符到双数组中以区分这两个字符串,从节点4开始继续***字符,此时BASE[4]=-1,表明前缀部分索引结束。将当前BASE[4]的值存在一个临时变量TEMP中,访问X_CHECK(LIST)(X_CHECK(LIST)函数是返回最小的整数q,q满足q>0并且CHECK[q+c]=0即找到一个空位置,c是LIST里的字符,q的值总是从1开始递增)函数并为BASE[4]寻找一个新的基值。
TEMP←BASE[4]=-1
步骤B3:为BASE[4]寻找一个新的基值使得字符'e'能够***空位置,编码值为6,接着访问X_CHECK(LIST)函数,从q=1开始
CHECK[q+'e']=CHECK[1+6]=CHECK[7]=0
表明该位置可用,且q的值为1,更新BASE[4]的值:
BASE[4]=1
步骤B4:将字符'a','d'分别***数组中以区分“beach#”,“bedam#”,访问X_CHECK(LIST)函数找到空位置***字符'a','d',即为BASE[7]寻找一个合适的基值进行状态的转移:
CHECK[q+“a”]=CHECK[1+2]=CHECK[3]=0,q=1可用
因为字符'a'和'd'需要从同一个状态转移过来,所以继续用q=1尝试能不能存储字符'd',即
CHECK[1+“d”]=CHECK[1+5]=CHECK[6]=0
表明q=1可用,更新BASE[7]的值:
BASE[7]=1
此时字符串的前缀部分***结束,将字符串的剩余部分“am#”***到TAIL数组中,更新BASE[3]和BASE[6]的值,其绝对值指向字符串在TAIL中的起始位置:
BASE[3]=TEMP=-1
BASE[6]=-POS=-6
更新POS的值:
POS=6+length(“am#”)=9
此时字符串“bedam#”和“beach#”***完成。
字符串“bedam#”和“beach#”***完成后的reducedtrie和双数组索引结构如图8所示。分区1、分区2、分区3索引创建完成后的reducedtrie和双数组索引结构分别如图9、10、11所示。
DA索引结构的检索过程以字符串“end#”为例,根据图11中的DA索引进行检索。
字符串“end#”的首字母为'e',查分区表可知在三号分区内查找
步骤D1:从BASE[1]开始检索。
步骤D2:检索第一个字符'e',根据公式(1):
BASE[1]+CODE['e']=1+6=7且CHECK[7]=1
步骤D3:检索第二个字符'n',根据公式(1)
BASE[7]+CODE['n']=4+15=19且CHECK[19]=-20<0
检索到负值表明该字符串在BASE和CHECK数组中的查询结束,继续在TAIL数组中即TAIL[20]开始检索到该字符串的剩余部分“k#”,此时字符串“end#”的查询结束,返回查询结果。
以上结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (6)
1.一种基于OpenMP的并行字符串查询方法,其特征在于:
字符串数据集预处理步骤:将字符串数据集按字典序升序排序,按首字母分区,并统计各分区的字符串的数量,将查询集同样按字典序升序排序;
索引创建步骤:基于贪婪分区方法将数据集分区并创建分区表简称PT,通过OpenMP并行为每个分区创建分区双数组索引结构;
查询步骤:对待查询的字典序有序的一批字符串,在相应的DA上进行检索,获取查询结果。
2.根据权利要求1所述的基于OpenMP的并行字符串查询方法,其特征在于所述字符串数据集预处理步骤具体为:
Step110:将字符串数据集按字典序升序排序;
Step120:统计各首字母对应的字符串数量La,Lb,Lc…Lz;
Step130:将查询集按字典序升序排序。
3.根据权利要求1所述的基于OpenMP的并行字符串查询方法,其特征在于所述索引创建步骤具体为:
Step210:构建分区表PT,将数据集划分为K个近似均匀的分区;
Step220:基于OpenMP为每个分区构建独立的DA索引结构。
4.根据权利要求3所述的基于OpenMP的并行字符串查询方法,其特征在于所述Step210具体为:
Step211:初始化分区表PT,PT的每一项包含首字母C、字符串数量L、分区号P三个属性,并依次写入预处理阶段得到的每个首字母及其对应的字符串数量,分区号均初始化为0;第i行,0≤i≤25对应的字符、字符串数量和分区号分别用Ci,Li和Pi表示;
Step212:将分区表PT按照字符串数量降序排序,置PT的前K项,0到K-1项的分区号为1,2,3…K;
Step213:按照L的大小,为PT中前K个表项建造一个小根堆,记堆顶元素对应的字符串数量和分区号分别为LH和PH;
Step214:将PT的第i项,K≤i≤25归并到堆顶,置Pi=PH,更新堆顶元素LH=LH+Li后调整小根堆;
Step215:重复步骤214直到PT中的所有项都归并到堆中;
Step216:将分区表PT按照首字母C升序排序。
5.根据权利要求3所述的基于OpenMP的并行字符串查询方法,其特征在于所述Step220具体为:
Step221:基于OpenMP启动K个线程,并行地为每个分区创建分区双数组索引结构,第i个线程负责第i个分区双数组的构建;对线程i读取的字符串s,将其特定长度的前缀中的字符***到第i个分区双数组中;对待***字符ch,从状态x转换到状态y,对应的状态转移公式为:
BASE[x]+CODE[ch]=y (1)
CHECK[y]=x (2)
式中,CODE[ch]表示字符ch的数值编码,将字符“#”,“a”,“b”,“c”···“z”的编码值设置为1,2,3,4···27。
6.根据权利要求1所述的并行分区双数组字符串批量查询检索方法,其特征在于所述查询步骤具体为:
Step310:将一系列按字典序有序排序的字符串集Q组成一个查询池;
Step320:每个线程取Q中一个字符串,根据所取字符串的首字母ch在Pch-‘a’对应的分区内执行DA的检索算法,并返回检索结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910666139.2A CN110457531B (zh) | 2019-07-23 | 2019-07-23 | 一种基于OpenMP的并行字符串查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910666139.2A CN110457531B (zh) | 2019-07-23 | 2019-07-23 | 一种基于OpenMP的并行字符串查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110457531A true CN110457531A (zh) | 2019-11-15 |
CN110457531B CN110457531B (zh) | 2022-11-01 |
Family
ID=68483134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910666139.2A Active CN110457531B (zh) | 2019-07-23 | 2019-07-23 | 一种基于OpenMP的并行字符串查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110457531B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339381A (zh) * | 2020-03-06 | 2020-06-26 | 昆明理工大学 | 一种字典序分区双数组的字符串批量查询方法及装置 |
CN112364027A (zh) * | 2020-12-09 | 2021-02-12 | 北京海量数据技术股份有限公司 | 并行创建openGauss分区表索引方法、装置及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120310915A1 (en) * | 2011-06-02 | 2012-12-06 | Alibaba Group Holding Limited | Finding indexed documents |
US20150052124A1 (en) * | 2013-08-13 | 2015-02-19 | Mapquest, Inc. | Systems and methods for processing search queries utilizing hierarchically organized data |
CN107239549A (zh) * | 2017-06-07 | 2017-10-10 | 传神语联网网络科技股份有限公司 | 数据库术语检索的方法、装置及终端 |
CN107798054A (zh) * | 2017-09-04 | 2018-03-13 | 昆明理工大学 | 一种基于Trie的范围查询方法及装置 |
CN108509505A (zh) * | 2018-03-05 | 2018-09-07 | 昆明理工大学 | 一种基于分区双数组Trie的字符串检索方法及装置 |
-
2019
- 2019-07-23 CN CN201910666139.2A patent/CN110457531B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120310915A1 (en) * | 2011-06-02 | 2012-12-06 | Alibaba Group Holding Limited | Finding indexed documents |
US20150052124A1 (en) * | 2013-08-13 | 2015-02-19 | Mapquest, Inc. | Systems and methods for processing search queries utilizing hierarchically organized data |
CN107239549A (zh) * | 2017-06-07 | 2017-10-10 | 传神语联网网络科技股份有限公司 | 数据库术语检索的方法、装置及终端 |
CN107798054A (zh) * | 2017-09-04 | 2018-03-13 | 昆明理工大学 | 一种基于Trie的范围查询方法及装置 |
CN108509505A (zh) * | 2018-03-05 | 2018-09-07 | 昆明理工大学 | 一种基于分区双数组Trie的字符串检索方法及装置 |
Non-Patent Citations (1)
Title |
---|
陈文焰: "基于双数组Trie的高效索引结构及其并行化的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339381A (zh) * | 2020-03-06 | 2020-06-26 | 昆明理工大学 | 一种字典序分区双数组的字符串批量查询方法及装置 |
CN112364027A (zh) * | 2020-12-09 | 2021-02-12 | 北京海量数据技术股份有限公司 | 并行创建openGauss分区表索引方法、装置及*** |
CN112364027B (zh) * | 2020-12-09 | 2023-06-30 | 北京海量数据技术股份有限公司 | 并行创建openGauss分区表索引方法、装置及*** |
Also Published As
Publication number | Publication date |
---|---|
CN110457531B (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3771271B2 (ja) | コンパクト0完全木における順序付けられたキーの集まりの記憶と検索のための装置及び方法 | |
CN100444167C (zh) | 完美双数组trie树词典管理与检索方法 | |
CN108509505B (zh) | 一种基于分区双数组Trie的字符串检索方法及装置 | |
US10521441B2 (en) | System and method for approximate searching very large data | |
US6785687B2 (en) | System for and method of efficient, expandable storage and retrieval of small datasets | |
EP1234258B1 (en) | System for managing rdbm fragmentations | |
CN104268280B (zh) | 一种基于键值数据库的层次化存储与查询方法 | |
US7062499B2 (en) | Enhanced multiway radix tree and related methods | |
CN105335481B (zh) | 一种大规模字符串文本的后缀索引构造方法及装置 | |
CN103365992A (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
CN111801665A (zh) | 用于大数据应用的分层局部敏感哈希(lsh)分区索引 | |
CN103365991A (zh) | 一种基于一维线性空间实现Trie树的词典存储管理方法 | |
CN110457531A (zh) | 一种基于OpenMP的并行字符串查询方法 | |
CN111339381A (zh) | 一种字典序分区双数组的字符串批量查询方法及装置 | |
CN115391495A (zh) | 在中文语境中检索关键词的方法、装置及设备 | |
CN103064841A (zh) | 检索装置和检索方法 | |
CN101944086A (zh) | 全字索引词典 | |
Beal et al. | Efficient pattern matching for RNA secondary structures | |
Boffa et al. | Compressed string dictionaries via data-aware subtrie compaction | |
Xu et al. | Top-k string auto-completion with synonyms | |
CN100531179C (zh) | 保存字符串匹配规则及利用保存规则进行字串匹配的方法 | |
CN114758727B (zh) | 基于携带缓存Trie树加速生物基因的检索方法 | |
Chan et al. | Faster query algorithms for the text fingerprinting problem | |
CN117216054A (zh) | 一种索引树的创建方法及终端 | |
Jia et al. | Collision Analysis and an Efficient Double Array Construction Method |
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 |