CN110502611A - 字符串检索方法和装置 - Google Patents
字符串检索方法和装置 Download PDFInfo
- Publication number
- CN110502611A CN110502611A CN201910706480.6A CN201910706480A CN110502611A CN 110502611 A CN110502611 A CN 110502611A CN 201910706480 A CN201910706480 A CN 201910706480A CN 110502611 A CN110502611 A CN 110502611A
- Authority
- CN
- China
- Prior art keywords
- character string
- database
- string
- data block
- address
- 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
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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种字符串检索方法和装置,其中方法包括:基于预设字符串长度,将待匹配字符串分割为第一字符串和第二字符串;基于多叉树数据库,获取第一字符串对应的叶子数据块的地址;对第二字符串进行移位处理,得到第二移位数据,将第二移位数据作为叶子数据块中的偏移地址;基于叶子数据块的地址和偏移地址,获取待匹配字符串对应的检索信息。本发明实施例提供的方法和装置,通过移位处理取代乘除法运算,极大地降低了内存占用率,减少检索一次耗费的时间;此外,通过构建多叉树结构和叶子数据块建立多叉树数据库,能够有效节省内存空间,在此基础上直接检索获取检索信息,实现了时间复杂度和空间复杂度的平衡。
Description
技术领域
本发明涉及信息检索技术领域,尤其涉及一种字符串检索方法和装置。
背景技术
国际移动用户识别码(International Mobile Subscriber IdentificationNumber,IMSI)通常用于区别移动用户的有效信息。在安全防护技术领域,为了满足各个安防区域,例如各大城市的高速出入口的安防需求,可以解析获取安防区域内无线网络覆盖下的移动终端的IMSI字符串,并将IMSI字符串在本地IMSI数据库中进行检索,得到移动终端用户的精确信息。
以目前的网络安防设备为例,本地IMSI数据库中至少60万条IMSI字符串及其对应的信息,实现IMSI字符串的检索需要在嵌入式CPU(Central Processing Unit,中央处理器)上,完成60万条数据的检索。如果检索算法的时间复杂度过高,必然会影响CPU的其它功能;如果检索算法所占用的内存过多,则会直接将设备拖垮,因此IMSI字符串的检索算法尤为关键,需要同时兼顾时间复杂度和空间复杂度。
图1为现有技术中的字符串检索方法的流程示意图,如图1所示,字符串检索方法通常包括:步骤110,初始化数据库;步骤120,将IMSI字符串转换为长整型数据;步骤130,基于长整型数据检索数据库,输出对应的IMSI信息。
步骤120中,将IMSI字符串转换为长整型数据的方法流程图如图2所示。由图2可知,在IMSI字符串转换过程中,无可避免地需要应用乘除法,而对于嵌入式系统而言,乘除法非常耗费CPU资源。
步骤130中,基于长整型数据检索数据库的方法通常是哈希表查找算法或者直接检索算法,然而由于IMSI关键字符串有10位或者11位,哈希表查找算法在执行过程中会出现冲突,导致时间复杂度显著提升。此外,由于数据库中的IMSI并不连续,其间可能有超过10万之多的IMSI不在库,在应用直接检索算法之前必须将这些缺失的位置填满,因此导致了巨大的空间浪费,导致了空间复杂度的提升。
发明内容
本发明实施例提供一种字符串检索方法和装置,用以解决现有的字符串检索方法必须应用乘除法,且需要填充缺失位置,导致时间复杂度和空间复杂度过高的问题。
第一方面,本发明实施例提供一种字符串检索方法,包括:
基于预设字符串长度,将待匹配字符串分割为第一字符串和第二字符串;
基于多叉树数据库,获取所述第一字符串对应的叶子数据块的地址;
对所述第二字符串进行移位处理,得到第二移位数据,将所述第二移位数据作为所述叶子数据块中的偏移地址;
基于所述叶子数据块的地址和偏移地址,获取所述待匹配字符串对应的检索信息;
其中,所述多叉树数据库包括多叉树结构,以及所述多叉树结构的末级节点对应的叶子数据块;所述叶子数据块是在所述末级节点存在对应的任一数据库字符串的第一数据库字符串时构建的;所述叶子数据块中,以所述任一数据库字符串的第二数据库移位数据为偏移地址存储有所述任一数据库字符串对应的检索信息。
优选地,所述基于预设字符串长度,将待匹配字符串分割为第一字符串和第二字符串,之前还包括:
基于任一所述数据库字符串的第一数据库字符串,判断所述多叉树结构对应的末级节点是否存在叶子数据块:
若否,则建立所述末级节点对应的叶子数据块;
获取所述任一数据库字符串对应的所述叶子数据块的地址;
对所述任一数据库字符串的第二数据库字符串进行移位处理,得到第二数据库移位数据,将所述第二数据库移位数据作为所述任一数据库字符串对应的叶子数据块中的偏移地址;
基于所述任一数据库字符串对应的所述叶子数据块的地址和偏移地址,存储所述任一数据库字符串对应的检索信息。
优选地,所述对所述第二字符串进行移位处理,得到第二移位数据,将所述第二移位数据作为所述叶子数据块中的偏移地址,具体包括:
获取初始化移位数据;
依次将所述第二字符串中的每一字符作为当前字符,将所述初始化移位数据左移预设位数后与所述当前字符相或,得到所述第二移位数据;
所述预设位数为所述第二字符串的长度减1。
优选地,还包括:
若基于所述多叉树数据库,未得到所述第一字符串对应的叶子数据块的地址,则确认所述多叉树数据库中未存储所述待匹配字符串对应的检索信息。
优选地,所述待匹配字符串为IMSI字符串,所述待匹配字符串的长度为10个字节或11个字节。
优选地,当所述待匹配字符串的长度为10个字节时,所述待匹配字符串的所述第一字符串和所述第二字符串的长度分别为5个字节;
当所述待匹配字符串的长度为11个字节时,所述待匹配字符串的所述第一字符串和所述第二字符串的长度分别为6个字节和5个字节;
所述第二移位数据为5位16进制数据。
优选地,所述多叉树结构为十叉树。
第二方面,本发明实施例提供一种字符串检索装置,包括:
字符串分割单元,用于基于预设字符串长度,将待匹配字符串分割为第一字符串和第二字符串;
数据块地址获取单元,用于基于多叉树数据库,获取所述第一字符串对应的叶子数据块的地址;
偏移地址获取单元,用于对所述第二字符串进行移位处理,得到第二移位数据,将所述第二移位数据作为所述叶子数据块中的偏移地址;
检索信息获取单元,用于基于所述叶子数据块的地址和偏移地址,获取所述待匹配字符串对应的检索信息;
其中,所述多叉树数据库包括多叉树结构,以及所述多叉树结构的末级节点对应的叶子数据块;所述叶子数据块是在所述末级节点存在对应的任一数据库字符串的第一数据库字符串时构建的;所述叶子数据块中,以所述任一数据库字符串的第二数据库移位数据为偏移地址存储有所述任一数据库字符串对应的检索信息。
第三方面,本发明实施例提供一种电子设备,包括处理器、通信接口、存储器和总线,其中,处理器,通信接口,存储器通过总线完成相互间的通信,处理器可以调用存储器中的逻辑指令,以执行如第一方面所提供的方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。
本发明实施例提供的一种字符串检索方法和装置,通过移位处理取代乘除法运算,极大地降低了内存占用率,减少检索一次耗费的时间;此外,通过构建多叉树结构和叶子数据块建立多叉树数据库,能够有效节省内存空间,在此基础上直接检索获取检索信息,实现了时间复杂度和空间复杂度的平衡。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的字符串检索方法的流程示意图;
图2为现有技术中将IMSI字符串转换为长整型数据的流程示意图;
图3为本发明实施例提供的字符串检索方法的流程示意图;
图4为本发明实施例提供的第二字符串进行移位处理的流程示意图;
图5为本发明实施例提供的多叉树数据库的结构示意图;
图6为本发明实施例提供的IMSI字符串检索方法的流程示意图;
图7为本发明实施例提供的字符串检索装置的结构示意图;
图8为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有的字符串检索方法在进行检索前需要进行字符串转换,而字符串转换是应用乘除法完成的,非常耗费CPU资源。在检索过程中,哈希表查找算法会出现冲突,会导致时间复杂度显著提升,直接检索算法执行前必须填充缺失位置,会导致空间复杂度的提升。对此,本发明实施例提供了一种字符串检索方法。图3为本发明实施例提供的字符串检索方法的流程示意图,如图3所示,该方法包括:
步骤310,基于预设字符串长度,将待匹配字符串分割为第一字符串和第二字符串。
此处,预设字符串长度是指预先设定的第一字符串和/或第二字符串的长度。基于预设字符串长度,可以对待匹配字符串进行分割,得到第一字符串和第二字符串,其中第一字符串和第二字符串分别为分割后处于待匹配字符串的前一部分和后一部分的字符串。分割待匹配字符串的方法有多种,例如预设字符串长度为预先设定的第一字符串的长度,将待匹配字符串的前预设字符串长度个字符作为第一字符串,剩余的字符作为第二字符串,又例如预设字符串长度为预先设定的第二字符串的长度,将待匹配字符串的最尾的预设字符串长度个字符作为第二字符串,剩余的字符作为第一字符串。
步骤320,基于多叉树数据库,获取第一字符串对应的叶子数据块的地址;其中,多叉树数据库包括多叉树结构,以及多叉树结构的末级节点对应的叶子数据块;叶子数据块是在末级节点存在对应的任一数据库字符串的第一数据库字符串时构建的;叶子数据块中,以该数据库字符串的第二数据库移位数据为偏移地址存储有该数据库字符串对应的检索信息。
具体地,多叉树结构是基于二叉树理论得到的一种数据结构,多叉树结构中每级节点与第一字符串中的每一字符之间存在映射关系。多叉树结构的末级节点上可能挂载有叶子数据块。基于第一字符串遍历多叉树数据库中的多叉树结构,即可得到与第一字符串对应的多叉树结构的末级节点,若该末级节点上挂载有叶子数据块,则获取该叶子数据块的地址。
在执行步骤320之前,还可以根据数据库字符串构建多叉树数据库,具体步骤包括:将任一数据库字符串分割为第一数据库字符串和第二数据库字符串,基于第一数据库字符串遍历多叉树结构,得到对应的末级节点,若该末级节点处不存在叶子数据块,则申请内存建立叶子数据块,并将第二数据库字符串移位处理后得到的第二数据库移位数据作为偏移地址,将该数据库字符串的检索信息存入叶子数据块;若该末级节点处存在叶子数据块,则直接将第二数据库移位数据作为偏移地址,将该数据库字符串的检索信息存入叶子数据块。
步骤330,对第二字符串进行移位处理,得到第二移位数据,将第二移位数据作为叶子数据块中的偏移地址。
具体地,通过移位处理可以将第二字符串转换为相同数字的对应数据,即第二移位数据。采用移位处理进行字符串的转换,相对于图2示出的将IMSI字符串转换为长整型数据的方法,无需应用乘除法,能够有效避免CPU资源的大量耗用。
步骤340,基于叶子数据块的地址和偏移地址,获取待匹配字符串对应的检索信息。
具体地,基于步骤320中得到的叶子数据块的地址,以及步骤330中得到的叶子数据块的偏移地址,可以直接定位待匹配字符串对应的检索信息的存储位置,从而获取待匹配字符串对应的检索信息。
本发明实施例提供的方法,通过移位处理取代乘除法运算,极大地降低了内存占用率,减少检索一次耗费的时间;此外,通过构建多叉树结构和叶子数据块建立多叉树数据库,能够有效节省内存空间,在此基础上直接检索获取检索信息,实现了时间复杂度和空间复杂度的平衡。
基于上述任一实施例,该方法中,步骤310之前还包括:
步骤301,基于任一数据库字符串的第一数据库字符串,判断多叉树结构对应的末级节点是否存在叶子数据块:若否,则建立末级节点对应的叶子数据块。
具体地,在进行待匹配字符串的检索之前,还需要构建多叉树数据库。针对任一数据库字符串,对其进行分割,得到第一数据库字符串和第二数据库字符串。需要说明的是,其分割规则与待匹配字符串的分割规则一致。在得到第一数据库字符串和第二数据库字符串后,首先基于第一数据库字符串对多叉树结构进行遍历,获取第一数据库字符串对应的末级节点,并判断该末级节点是否存在叶子数据块,如果存在,则直接进入步骤302,如果不存在,则建立该末级节点对应的叶子数据块。
步骤302,获取该数据库字符串对应的叶子数据块的地址。
步骤303,对该数据库字符串的第二数据库字符串进行移位处理,得到第二数据库移位数据,将第二数据库移位数据作为该数据库字符串对应的叶子数据块中的偏移地址。
具体地,通过移位处理可以将第二数据库字符串转换为相同数字的对应数据,即第二数据库移位数据。
步骤304,基于该数据库字符串对应的叶子数据块的地址和偏移地址,存储该数据库字符串对应的检索信息。
具体地,基于步骤302中得到的叶子数据块的地址,以及步骤303中得到的叶子数据块的偏移地址,可以直接定位可用于存储该数据库字符串对应的检索信息的位置,并将该数据库字符串对应的检索信息存入该叶子数据块中的偏移位置。
基于上述任一实施例,该方法中,步骤330具体包括:获取初始化移位数据;依次将第二字符串中的每一字符作为当前字符,将初始化移位数据左移预设位数后与当前字符相或,得到第二移位数据;预设位数为第二字符串的长度减1。
具体地,图4为本发明实施例提供的第二字符串进行移位处理的流程示意图,图4中,以字符串为IMSI字符串为例,初始化移位数据IMSI_Sum=0。假设IMSI字符串的第二字符串长度为5个字节,对应的预设位数为4,从第二字符串的首个字节开始,依次从第二字符串中选取一个字节作为当前字符,将当前字符的ASCII(American Standard Code forInformation Interchange)码减去“0”,得到当前字符的对应的数字,将初始化移位数据左移4位后,与当前字符的对应的数字相与,得到更新后的初始化移位数据。针对每一第二字符串中字符依次执行上述操作,并将完成后更新的初始化移位数据作为第二移位数据输出。基于上述方法得到的第二移位数据,与第二字符串中的数字完全一致。
基于上述任一实施例,该方法还包括:若基于多叉树数据库,未得到第一字符串对应的叶子数据块的地址,则确认多叉树数据库中未存储待匹配字符串对应的检索信息。
具体地,在基于第一字符串对多叉树数据库中的多叉树结构进行遍历后,可以得到第一字符串对应的末级节点,如果该末级节点处不存在对应的叶子数据块,也就无法得到叶子数据块的地址,说明在多叉树数据库构建中,不存在第一数据库字符串与第一字符串一致的数据库字符串,因此多叉树数据库中不存在待匹配字符串,也未存储待匹配字符串对应的检索结果。
基于上述任一实施例,该方法中,待匹配字符串为IMSI字符串,待匹配字符串的长度为10个字节或11个字节。
进一步地,在对待匹配字符串进行划分时,需要参考待匹配字符串的长度:当待匹配字符串的长度为10个字节时,待匹配字符串的第一字符串和第二字符串的长度分别为5个字节;当待匹配字符串的长度为11个字节时,待匹配字符串的第一字符串和第二字符串的长度分别为6个字节和5个字节,即无论待匹配字符串的长度为10个字节或11个字节,第二字符串的长度均为5个字节,由此得到的第二移位数据均为5位16进制数据,对应大小为0x9ffff的叶子数据块。
进一步地,多叉树结构为十叉树。图5为本发明实施例提供的多叉树数据库的结构示意图,如图5所示,多叉树数据库为十叉树结构,根级包括0至9共10个节点,每一节点的下级同样包括0至9共10个节点。根据数据库字符串的第一字符串长度的不同,存在第五级节点即为末级节点,配置叶子数据包的情况,以及第六级节点为末级节点,配置叶子数据包的情况。
基于上述任一实施例,当数据库字符串为IMSI字符串时,建立多叉树数据库的方法如下:
准备IMSI信息的文件,其中每一条目按照相同的格式记录数据库IMSI字符串及检索信息。
4600100000,22,280,A省,A市
4600100001,22,280,A省,A市
4600100002,25,395,B省,B市
4600100003,2,393,C省,C市
46003000000,209,16,D省,D市
46003000001,209,16,D省,D市
46003000002,209,16,D省,D市
46003000003,209,16,D省,D市
本发明实施例中,检索信息为归属城市信息。文件中共涉及315个城市,可以应用2字节的城市编码代替城市名的字符串。
逐行读取IMSI信息条目文件,截取其中的IMSI字符串,即数据库字符串。如果IMSI字符串的长度为10个字节,则截取前5个字符作为第一数据库字符串,对应使用5级树杈;如果为11字节,则截取前6个字符作为第一数据库字符串,对应使用6级树杈。以“4600100000”为例,共10个字节,则使用5级数叉;第一个字节“4”,表示先找到根级的索引4的节点;第二个字节“6”,表示接下来找到第二级的索引6的节点;第三个字节“0”,表示找到第三级的索引0的节点;依次找到第四级的索引0的节点,第五级索引1的节点。若末级节点不存在叶子,则以64字节对齐的方式申请0x9aaaa的内存,挂在第五级索引1的节点后,成为其叶子数据块;若末级节点存在叶子,则直接获取叶子数据块的起始地址,并将城市信息填写在叶子数据块的0x00000偏移处。如此反复执行,直到处理完所有的IMSI信息条目文件,从来没有被经过的最后一级节点将不会申请内存,其叶子为NULL。如此将数据库的树形结构填充完成,构成多叉树数据库。
图6为本发明实施例提供的IMSI字符串检索方法的流程示意图,如图6所示,当待匹配字符串为IMSI字符串时,对应的字符串检索方法如下:
步骤610,针对待匹配的IMSI字符串中的第一字符串,从首个字符开始,顺次选取一个字符作为当前字符。
步骤620,将当前字符对应的多叉树结构的当前级节点中检索当前字符,得到当前字符对应的节点,并判断该节点的下级节点为空、叶子还是枝杈;若为空,则确定待匹配的IMSI字符串未录入数据库;若为枝杈,则返回步骤610,将下一字符作为当前字符;若为叶子,则执行步骤630。
步骤630,获取叶子数据块的地址。
步骤640,针对待匹配的IMSI字符串中的第二字符串进行移位处理,得到第二移位数据。
步骤650,在叶子数据块中将第二移位数据作为偏移地址进行直接检索,得到待匹配的IMSI字符串对应的检索信息并输出。
例如待匹配字符串为“460023119950660”时,第一个字符“4”,找到根级的索引4的节点,接下来找到第二级索引6的节点,第三级索引0的节点,第四级索引0的节点,第五级索引2的节点,发现其下的叶子为NULL,检索结束,不存在该IMSI对应的检索信息。
又例如,待匹配字符串为“460030000012769”时,第一个字符“4”,找到根级的索引4的节点,接下来找到第二级索引6的节点,第三级索引0的节点,第四级索引0的节点,第五级索引3的节点,第六级索引0的节点,其下的叶子不为NULL,获取到叶子数据块的首地址,其偏移0x00001即为该IMSI信息,检索结束,返回偏移0x00001地址存储的信息,即检索信息。
本发明实施例提供的字符串检索方法,能在嵌入式的开发环境下,通过设计合理级数的十叉树和块存储相结合的结构减少占用的内存,且设计将数字字符串使用移位方式转化为相同数字的16进制数的算法避免使用乘除法,以降低CPU占用率。本发明实施例中采用5级或6级的十叉树,是依据IMSI字符串设计的。
基于上述任一实施例,图7为本发明实施例提供的字符串检索装置的结构示意图,如图7所示,该装置包括字符串分割单元710、数据块地址获取单元720、偏移地址获取单元730和检索信息获取单元740;
其中,字符串分割单元710用于基于预设字符串长度,将待匹配字符串分割为第一字符串和第二字符串;
数据块地址获取单元720用于基于多叉树数据库,获取所述第一字符串对应的叶子数据块的地址;
偏移地址获取单元730用于对所述第二字符串进行移位处理,得到第二移位数据,将所述第二移位数据作为所述叶子数据块中的偏移地址;
检索信息获取单元740用于基于所述叶子数据块的地址和偏移地址,获取所述待匹配字符串对应的检索信息;
其中,所述多叉树数据库包括多叉树结构,以及所述多叉树结构的末级节点对应的叶子数据块;所述叶子数据块是在所述末级节点存在对应的任一所述数据库字符串的第一数据库字符串时构建的;所述叶子数据块中,以所述任一数据库字符串的第二数据库移位数据为偏移地址存储有所述任一数据库字符串对应的检索信息。
本发明实施例提供的装置,通过移位处理取代乘除法运算,极大地降低了内存占用率,减少检索一次耗费的时间;此外,通过构建多叉树结构和叶子数据块建立多叉树数据库,能够有效节省内存空间,在此基础上直接检索获取检索信息,实现了时间复杂度和空间复杂度的平衡。
基于上述任一实施例,该装置还包括:
数据库构建单元,用于基于任一所述数据库字符串的第一数据库字符串,判断所述多叉树结构对应的末级节点是否存在叶子数据块:
若否,则建立所述末级节点对应的叶子数据块;
获取所述任一数据库字符串对应的所述叶子数据块的地址;
对所述任一数据库字符串的第二数据库字符串进行移位处理,得到第二数据库移位数据,将所述第二数据库移位数据作为所述任一数据库字符串对应的叶子数据块中的偏移地址;
基于所述任一数据库字符串对应的所述叶子数据块的地址和偏移地址,存储所述任一数据库字符串对应的检索信息。
基于上述任一实施例,该装置中,偏移地址获取单元730具体用于:
获取初始化移位数据;
依次将所述第二字符串中的每一字符作为当前字符,将所述初始化移位数据左移预设位数后与所述当前字符相或,得到所述第二移位数据;
所述预设位数为所述第二字符串的长度减1。
基于上述任一实施例,该装置还包括:
确认未存储单元,用于若基于所述多叉树数据库,未得到所述第一字符串对应的叶子数据块的地址,则确认所述多叉树数据库中未存储所述待匹配字符串对应的检索信息。
基于上述任一实施例,该装置中,所述待匹配字符串为IMSI字符串,所述待匹配字符串的长度为10个字节或11个字节。
基于上述任一实施例,该装置中,当所述待匹配字符串的长度为10个字节时,所述待匹配字符串的所述第一字符串和所述第二字符串的长度分别为5个字节;
当所述待匹配字符串的长度为11个字节时,所述待匹配字符串的所述第一字符串和所述第二字符串的长度分别为6个字节和5个字节;
所述第二移位数据为5位16进制数据。
基于上述任一实施例,该装置中,所述多叉树结构为十叉树。
图8为本发明实施例提供的电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)801、通信接口(Communications Interface)802、存储器(memory)803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信。处理器801可以调用存储在存储器803上并可在处理器801上运行的计算机程序,以执行上述各实施例提供的字符串检索方法,例如包括:基于预设字符串长度,将待匹配字符串分割为第一字符串和第二字符串;基于多叉树数据库,获取所述第一字符串对应的叶子数据块的地址;对所述第二字符串进行移位处理,得到第二移位数据,将所述第二移位数据作为所述叶子数据块中的偏移地址;基于所述叶子数据块的地址和偏移地址,获取所述待匹配字符串对应的检索信息;其中,所述多叉树数据库包括多叉树结构,以及所述多叉树结构的末级节点对应的叶子数据块;所述叶子数据块是在所述末级节点存在对应的任一所述数据库字符串的第一数据库字符串时构建的;所述叶子数据块中,以所述任一数据库字符串的第二数据库移位数据为偏移地址存储有所述任一数据库字符串对应的检索信息。
此外,上述的存储器803中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的字符串检索方法,例如包括:基于预设字符串长度,将待匹配字符串分割为第一字符串和第二字符串;基于多叉树数据库,获取所述第一字符串对应的叶子数据块的地址;对所述第二字符串进行移位处理,得到第二移位数据,将所述第二移位数据作为所述叶子数据块中的偏移地址;基于所述叶子数据块的地址和偏移地址,获取所述待匹配字符串对应的检索信息;其中,所述多叉树数据库包括多叉树结构,以及所述多叉树结构的末级节点对应的叶子数据块;所述叶子数据块是在所述末级节点存在对应的任一所述数据库字符串的第一数据库字符串时构建的;所述叶子数据块中,以所述任一数据库字符串的第二数据库移位数据为偏移地址存储有所述任一数据库字符串对应的检索信息。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种字符串检索方法,其特征在于,包括:
基于预设字符串长度,将待匹配字符串分割为第一字符串和第二字符串;
基于多叉树数据库,获取所述第一字符串对应的叶子数据块的地址;
对所述第二字符串进行移位处理,得到第二移位数据,将所述第二移位数据作为所述叶子数据块中的偏移地址;
基于所述叶子数据块的地址和偏移地址,获取所述待匹配字符串对应的检索信息;
其中,所述多叉树数据库包括多叉树结构,以及所述多叉树结构的末级节点对应的叶子数据块;所述叶子数据块是在所述末级节点存在对应的任一数据库字符串的第一数据库字符串时构建的;所述叶子数据块中,以所述任一数据库字符串的第二数据库移位数据为偏移地址存储有所述任一数据库字符串对应的检索信息。
2.根据权利要求1所述的字符串检索方法,其特征在于,所述基于预设字符串长度,将待匹配字符串分割为第一字符串和第二字符串,之前还包括:
基于任一所述数据库字符串的第一数据库字符串,判断所述多叉树结构对应的末级节点是否存在叶子数据块:
若否,则建立所述末级节点对应的叶子数据块;
获取所述任一数据库字符串对应的所述叶子数据块的地址;
对所述任一数据库字符串的第二数据库字符串进行移位处理,得到第二数据库移位数据,将所述第二数据库移位数据作为所述任一数据库字符串对应的叶子数据块中的偏移地址;
基于所述任一数据库字符串对应的所述叶子数据块的地址和偏移地址,存储所述任一数据库字符串对应的检索信息。
3.根据权利要求1所述的字符串检索方法,其特征在于,对所述第二字符串进行移位处理,得到第二移位数据,将所述第二移位数据作为所述叶子数据块中的偏移地址,具体包括:
获取初始化移位数据;
依次将所述第二字符串中的每一字符作为当前字符,将所述初始化移位数据左移预设位数后与所述当前字符相或,得到所述第二移位数据;
所述预设位数为所述第二字符串的长度减1。
4.根据权利要求1所述的字符串检索方法,其特征在于,还包括:
若未得到所述第一字符串对应的叶子数据块的地址,则确认所述多叉树数据库中未存储所述待匹配字符串对应的检索信息。
5.根据权利要求1至4中任一项所述的字符串检索方法,其特征在于,所述待匹配字符串为IMSI字符串,所述待匹配字符串的长度为10个字节或11个字节。
6.根据权利要求5所述的字符串检索方法,其特征在于,当所述待匹配字符串的长度为10个字节时,所述待匹配字符串的所述第一字符串和所述第二字符串的长度分别为5个字节;
当所述待匹配字符串的长度为11个字节时,所述待匹配字符串的所述第一字符串和所述第二字符串的长度分别为6个字节和5个字节;
所述第二移位数据为5位16进制数据。
7.根据权利要求5所述的字符串检索方法,其特征在于,所述多叉树结构为十叉树。
8.一种字符串检索装置,其特征在于,包括:
字符串分割单元,用于基于预设字符串长度,将待匹配字符串分割为第一字符串和第二字符串;
数据块地址获取单元,用于基于多叉树数据库,获取所述第一字符串对应的叶子数据块的地址;
偏移地址获取单元,用于对所述第二字符串进行移位处理,得到第二移位数据,将所述第二移位数据作为所述叶子数据块中的偏移地址;
检索信息获取单元,用于基于所述叶子数据块的地址和偏移地址,获取所述待匹配字符串对应的检索信息;
其中,所述多叉树数据库包括多叉树结构,以及所述多叉树结构的末级节点对应的叶子数据块;所述叶子数据块是在所述末级节点存在对应的任一数据库字符串的第一数据库字符串时构建的;所述叶子数据块中,以所述任一数据库字符串的第二数据库移位数据为偏移地址存储有所述任一数据库字符串对应的检索信息。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7中任一项所述的字符串检索方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7中任一项所述的字符串检索方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910706480.6A CN110502611B (zh) | 2019-08-01 | 2019-08-01 | 字符串检索方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910706480.6A CN110502611B (zh) | 2019-08-01 | 2019-08-01 | 字符串检索方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110502611A true CN110502611A (zh) | 2019-11-26 |
CN110502611B CN110502611B (zh) | 2022-04-12 |
Family
ID=68586954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910706480.6A Active CN110502611B (zh) | 2019-08-01 | 2019-08-01 | 字符串检索方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110502611B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111125449A (zh) * | 2019-12-24 | 2020-05-08 | 腾讯科技(深圳)有限公司 | 对象信息存储方法、装置及存储介质 |
CN111767024A (zh) * | 2020-07-09 | 2020-10-13 | 北京猿力未来科技有限公司 | 一种面向简便运算的解答方法与装置 |
CN118069898A (zh) * | 2024-04-25 | 2024-05-24 | 北京长亭科技有限公司 | 一种多日志源的日志泛化方法及装置 |
CN118069898B (zh) * | 2024-04-25 | 2024-06-25 | 北京长亭科技有限公司 | 一种多日志源的日志泛化方法及装置 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1691581A (zh) * | 2004-04-26 | 2005-11-02 | 彭诗力 | 基于特征值的多模式匹配算法及硬件实现 |
CN101154228A (zh) * | 2006-09-27 | 2008-04-02 | 西门子公司 | 一种分段模式匹配方法及其装置 |
CN101409878A (zh) * | 2008-11-21 | 2009-04-15 | 闻泰集团有限公司 | 电话号码归属地名称信息块及来电归属地查询方法 |
CN101470710A (zh) * | 2007-12-27 | 2009-07-01 | Tcl集团股份有限公司 | 多媒体文件中的内容的定位方法 |
US20120054196A1 (en) * | 2010-08-27 | 2012-03-01 | Raj Narayan Marndi | System and method for subsequence matching |
CN102622359A (zh) * | 2011-01-27 | 2012-08-01 | 联想移动通信科技有限公司 | 搜索数据库中字符串的方法和装置 |
US20130061130A1 (en) * | 2011-09-02 | 2013-03-07 | Fuji Xerox Co., Ltd. | Information processing apparatus, information processing method and non-transitory computer readable medium |
CN103314371A (zh) * | 2010-12-31 | 2013-09-18 | 肖岩 | 一种检索的方法和系统 |
CN103532565A (zh) * | 2012-06-28 | 2014-01-22 | 富士通株式会社 | 码处理技术 |
CN105488172A (zh) * | 2015-11-30 | 2016-04-13 | 北京奇艺世纪科技有限公司 | 一种基于位置的数据查询方法及装置 |
CN108399050A (zh) * | 2018-02-02 | 2018-08-14 | 新华三技术有限公司 | 一种数据处理方法及装置 |
CN109871435A (zh) * | 2019-03-01 | 2019-06-11 | 陈包容 | 从文本中抽取社交账号的方法 |
-
2019
- 2019-08-01 CN CN201910706480.6A patent/CN110502611B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1691581A (zh) * | 2004-04-26 | 2005-11-02 | 彭诗力 | 基于特征值的多模式匹配算法及硬件实现 |
CN101154228A (zh) * | 2006-09-27 | 2008-04-02 | 西门子公司 | 一种分段模式匹配方法及其装置 |
CN101470710A (zh) * | 2007-12-27 | 2009-07-01 | Tcl集团股份有限公司 | 多媒体文件中的内容的定位方法 |
CN101409878A (zh) * | 2008-11-21 | 2009-04-15 | 闻泰集团有限公司 | 电话号码归属地名称信息块及来电归属地查询方法 |
US20120054196A1 (en) * | 2010-08-27 | 2012-03-01 | Raj Narayan Marndi | System and method for subsequence matching |
CN103314371A (zh) * | 2010-12-31 | 2013-09-18 | 肖岩 | 一种检索的方法和系统 |
CN102622359A (zh) * | 2011-01-27 | 2012-08-01 | 联想移动通信科技有限公司 | 搜索数据库中字符串的方法和装置 |
US20130061130A1 (en) * | 2011-09-02 | 2013-03-07 | Fuji Xerox Co., Ltd. | Information processing apparatus, information processing method and non-transitory computer readable medium |
CN103532565A (zh) * | 2012-06-28 | 2014-01-22 | 富士通株式会社 | 码处理技术 |
CN105488172A (zh) * | 2015-11-30 | 2016-04-13 | 北京奇艺世纪科技有限公司 | 一种基于位置的数据查询方法及装置 |
CN108399050A (zh) * | 2018-02-02 | 2018-08-14 | 新华三技术有限公司 | 一种数据处理方法及装置 |
CN109871435A (zh) * | 2019-03-01 | 2019-06-11 | 陈包容 | 从文本中抽取社交账号的方法 |
Non-Patent Citations (5)
Title |
---|
TAMILSELVI,M: "Approximate String Search in Large Spatial Database", 《GRAPH ALGORITHMS, HIGH PERFORMANCE IMPLEMENTATIONS AND ITS APPLICATIONS (ICGHIA 2014)》 * |
夏小玲等: "列存储数据仓库中基于概率的保序字符串压缩方法", 《计算机研究与发展》 * |
姚全珠等: "StringB-tree在软件复用中的应用研究", 《计算机工程与应用》 * |
王管冲: "自适应检索树与对GPERF的改进算法", 《中国优秀博硕士学位论文全文数据库(硕士)》 * |
黄秦等: "兴趣点数据的组织模型与检索算法", 《测绘科学》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111125449A (zh) * | 2019-12-24 | 2020-05-08 | 腾讯科技(深圳)有限公司 | 对象信息存储方法、装置及存储介质 |
CN111767024A (zh) * | 2020-07-09 | 2020-10-13 | 北京猿力未来科技有限公司 | 一种面向简便运算的解答方法与装置 |
CN118069898A (zh) * | 2024-04-25 | 2024-05-24 | 北京长亭科技有限公司 | 一种多日志源的日志泛化方法及装置 |
CN118069898B (zh) * | 2024-04-25 | 2024-06-25 | 北京长亭科技有限公司 | 一种多日志源的日志泛化方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110502611B (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9553771B1 (en) | Bloom filter index for device discovery | |
CN111339382B (zh) | 字符串数据检索方法、装置、计算机设备及存储介质 | |
US10073876B2 (en) | Bloom filter index for device discovery | |
CN111095421B (zh) | 基因文件的上下文感知增量算法 | |
CN108363686A (zh) | 一种字符串分词方法、装置、终端设备及存储介质 | |
CN113946546B (zh) | 异常检测方法、计算机存储介质及程序产品 | |
CN110502611A (zh) | 字符串检索方法和装置 | |
CN107480205A (zh) | 一种进行数据分区的方法和装置 | |
CN104484391B (zh) | 字符串相似度的计算方法和装置 | |
CN112148217B (zh) | 全闪存储系统的重删元数据的缓存方法、装置及介质 | |
CN115525580A (zh) | 一种namespace设置方法、装置及可读存储介质 | |
CN102725754B (zh) | 一种索引数据处理方法及设备 | |
CN108153585A (zh) | 一种基于局部性表达函数优化MapReduce框架的运行效率的方法和装置 | |
CN110825846B (zh) | 数据处理方法及装置 | |
CN105095276B (zh) | 一种挖掘最大重复序列的方法及装置 | |
CN104008136A (zh) | 一种文本查找的方法和装置 | |
CN106777178A (zh) | 一种手机号码的存储方法及查询方法 | |
CN107688567B (zh) | 一种索引存储方法及相关装置 | |
CN107943519B (zh) | 一种时序数据乱序操作处理方法和装置 | |
CN112765099A (zh) | 一种数据文件的处理方法及处理装置 | |
CN109684439A (zh) | 分词过程中进行前缀索引的方法及装置 | |
CN111858917A (zh) | 文本分类方法和装置 | |
CN112612925B (zh) | 数据的存储方法、读取方法以及电子设备 | |
CN111966691B (zh) | 一种分布式存储系统快速查询对象所属目录的配置方法及系统 | |
CN105740272B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20201026 Address after: 430205 Hubei city of Wuhan province Jiangxia Hidden Dragon Island Tan lake two Road No. 1 Applicant after: Wuhan Hongxin Technology Development Co.,Ltd. Address before: 430073 Hubei province Wuhan Dongxin East Lake high tech Development Zone, Road No. 5 Applicant before: Wuhan Hongxin Telecommunication Technologies Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |