CN111797285A - 字符串模糊匹配方法、装置、设备及可读存储介质 - Google Patents

字符串模糊匹配方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN111797285A
CN111797285A CN202010615358.0A CN202010615358A CN111797285A CN 111797285 A CN111797285 A CN 111797285A CN 202010615358 A CN202010615358 A CN 202010615358A CN 111797285 A CN111797285 A CN 111797285A
Authority
CN
China
Prior art keywords
character string
hash value
character
standard
strings
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.)
Pending
Application number
CN202010615358.0A
Other languages
English (en)
Inventor
朱怡霖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
OneConnect Smart Technology Co Ltd
OneConnect Financial Technology Co Ltd Shanghai
Original Assignee
OneConnect Financial Technology Co Ltd Shanghai
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by OneConnect Financial Technology Co Ltd Shanghai filed Critical OneConnect Financial Technology Co Ltd Shanghai
Priority to CN202010615358.0A priority Critical patent/CN111797285A/zh
Publication of CN111797285A publication Critical patent/CN111797285A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables

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

本申请涉及大数据技术领域,公开了一种字符串模糊匹配方法,包括:获取待进行匹配的目标字符串,并计算目标字符串对应的目标哈希值,其中目标字符串存储于区块链的节点中;将目标哈希值与标准哈希值进行对比,以在目标字符串中进行匹配得到第一字符串集合;计算第一字符串集合中所包含的第一字符串所对应的第一散列值;将第一散列值与标准散列值进行对比,以根据所得到的对比结果确定第二字符串集合;当第二字符串集合满足预设遍历条件时,遍历第二字符串集合中所包含的字符串,以述第二字符串集合中与标准字符串相匹配的匹配字符串进行输出。本申请还提供一种装置、计算机设备和存储介质。实现提高字符串匹配的效率和准确性。

Description

字符串模糊匹配方法、装置、设备及可读存储介质
技术领域
本申请涉及大数据技术领域,尤其涉及一种字符串模糊匹配方法、装置、计算机设备及计算机可读存储存储介质。
背景技术
在数据治理平台项目中,每个页面展示数据时都会有很多筛选框请用户去输入选择,然后根据用户输入的字符串与整个字符串集合匹配后,点击查询,筛选数据,进行将符合要求的表格数据进行展示。
在庞大的数据量里精准的找到与用户输入字段相似的字段,这个匹配过程就是通过对特定字段中的大数据量的字符串进行模糊匹配,然后对数据筛选遍历,展示出符合用户输入字符串的部分数据的过程。但是在大数据库中进行查询匹配时,由于匹配机制的原因使得会出现匹配卡死的情况,且匹配时长较长,匹配效率不高。
因此,现在亟需一种提高字符串匹配的效率和准确性的字符串匹配方法。
发明内容
本申请提供了一种字符串模糊匹配方法、装置、计算机设备及存储介质,以提高字符串匹配的效率和准确性。
第一方面,本申请提供了一种字符串模糊匹配方法,所述方法包括:
获取待进行匹配的目标字符串,并计算所述目标字符串对应的目标哈希值;
将所述目标哈希值与标准哈希值进行对比,以在所述目标字符串中进行匹配得到第一字符串集合,其中,所述标准哈希值为标准字符串对应的哈希值;
计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值;
将所述第一散列值与标准散列值进行对比,以根据所得到的对比结果确定第二字符串集合;
当所述第二字符串集合满足预设遍历条件时,遍历所述第二字符串集合中所包含的字符串,以将所述第二字符串集合中与所述标准字符串相匹配的匹配字符串进行输出。
第二方面,本申请还提供了一种字符串模糊匹配装置,所述装置包括:
第一计算模块,用于获取待进行匹配的目标字符串,并计算所述目标字符串对应的目标哈希值;
第一对比模块,用于将所述目标哈希值与标准哈希值进行对比,以在所述目标字符串中进行匹配得到第一字符串集合,其中,所述标准哈希值为标准字符串对应的哈希值;
第二计算模块,用于计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值;
第二对比模块,用于将所述第一散列值与标准散列值进行对比,以根据所得到的对比结果确定第二字符串集合;
字符输出模块,用于当所述第二字符串集合满足预设遍历条件时,遍历所述第二字符串集合中所包含的字符串,以将所述第二字符串集合中与所述标准字符串相匹配的匹配字符串进行输出。
第三方面,本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器;所述存储器用于存储计算机程序;所述处理器,用于执行所述计算机程序并在执行所述计算机程序时实现如上述的字符串模糊匹配方法。
第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上述的字符串模糊匹配方法。
本申请公开了一种字符串模糊匹配方法方法、装置、计算机设备及存储介质,对进行匹配查询的文本中所有的字符串进行查询匹配,计算每一个字符串对应的哈希值,将与标准字符串所对应的哈希值相同的待匹配字符串进行集合,然后对集合中的每一个字符串进行分裂以及散列值的计算,以得到对应的散列值,通过散列值实现对待匹配字符串的进一步筛选,最后在所得到的字符串集合中所包含的字符串数量满足预设遍历条件时进行遍历匹配,以输出得到最终的相匹配的字符串。实现了在大数据量的情况下,也可以快速准确的实现字符串的查询匹配,有效的提高了字符串匹配的效率和准确性。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一个实施例中字符串模糊匹配方法的流程示意图;
图2为本申请一个实施例中得到第一散列值的步骤的流程示意图;
图3为本申请一个实施例中字符串模糊匹配装置的示意性框图;
图4为一个实施例中计算机设备的结构示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图1,图1为本申请一个实施例中字符串模糊匹配方法的流程示意图。
如图1所示,该字符串模糊匹配方法包括步骤S101至步骤S105。
步骤S101、获取待进行匹配的目标字符串,并计算所述目标字符串对应的目标哈希值。
在进行字符串的匹配时,通过在对应的匹配文本中进行字符串的查询,以实现字符串的匹配。在匹配文本中进行目标字符串的获取时,通过对匹配文本中所包含的所有字符串进行获取,以得到进行匹配的目标字符串,其中匹配文本存储于区块链中,那么目标字符串即为从区块链中所获取。
需要强调的是,在一些实施例中,为进一步保证上述匹配文本或者目标字符串的私密和安全性,上述匹配文本或者目标字符串还可以存储于一区块链的某一/某些节点中。
在得到目标字符串之后,计算目标字符串所对应的目标哈希值。对于每一个字符串而言,都有着各自所对应的哈希值,通过相应的计算得到目标字符串所对应的哈希值,进而实现字符串的匹配。
哈希,其实就是把一个定义域较宽的集合映射到一个值域较小的集合。
一般来说,我们映射的结果是一个整数,也就是俗称的地址。比如说现在有一个数为x,我们希望进行哈希运算之后的H(x)是一个整数,然后我们把x放到哈希表中地址为H(x)的地方。如果x是一个数字,这个理解起来比较直观,我们可以定义哈希函数为对这个数字的四则运算,得到一个新的数字作为x的哈希值。
而在本申请一实施例中,并不是直接将一个数字哈希化得到对应的哈希值,而是对一个字符串进行哈希处理,其中字符串可以是数字和字母等,以得到字符串所对应的哈希值。在对字符串进行哈希计算时,通过将字符串转化为对应的数值,可以更加快速的实现字符串的对比。
在计算目标字符串所对应的目标哈希值时是依据相应的计算公式所得到的,而具体所使用的计算公式以计算字符串S的哈希值为例:
Figure BDA0002563563000000041
其中,a代表的是字符串S的定义域大小,比如说如果S全是英文字母,那么a的值为26,因为英文字母就只有26个,然后char()这个函数是一个映射函数,映射S的定义域中的每一个字符到数字的函数。根据此公式可以讲一个任意长度的字符串映射为一个整数数值,也就是得到字符串所对应的哈希值。
在匹配文本中获取目标字符串时,并不是按照标准字符串的字符长度来获取的,对于一个文本而言,除了包含有相应的字符串,比如英文、汉字、数字等,还会包含有其他的间隔符,比如空格或者其他标点符号等,因此在匹配文本中获取进行相匹配的目标字符串时,可以根据文本中的间隔符对相邻的字符串进行区分。同时还可以根据标准字符串的形式来确定,比如标准字符串中带有一个间隔符,那么目标字符串中也会带有一个间隔符。
进一步地,在本申请的一实施例中,在获取进行匹配的目标字符串之前,还包括:当接收到到字符串匹配指令时,获取标准字符串,并计算所述标准字符串对应的标准哈希值。
示例性的,在需要进行字符串的匹配时,显然需要触发系统进行字符串匹配的功能,以使得系统可以接收到字符串匹配指令,进而进行相应的操作。其中,触发系统的字符串匹配功能以发出字符串匹配指令的操作是基于人的行为而产生的,比如在进行字符串匹配的设备的显示界面上进行触控操作。
而在接收到字符串匹配指令时,首先获取进行字符串匹配的标准字符串,然后对标准字符串所对应的标准哈希值进行计算,得到标准字符串对应的哈希值,以供后续在进行匹配时进行哈希值的比对。
步骤S102、将所述目标哈希值与标准哈希值进行对比,以在所述目标字符串中进行匹配得到第一字符串集合。
在得到目标字符串以及对应的目标哈希值之后,将目标哈希值与预先所得到的标准哈希值进行对比,其中,对比结果包括:哈希值相等与哈希值不相等,通过将目标字符串中哈希值与标准哈希值相同的字符串进行汇总集合,以得到第一字符串集合,其中,第一字符串集合中所包含的字符串的数量可以是一个,也可以是多个,且第一字符串集合中每个字符串所对应的哈希值与标准哈希值相同。
在实际应用中,通常情况下,哈希值相同时说明两个字符串相同,但是由于哈希函数自身的冲突,会使得存在两个哈希值相同的字符串可能不是一个完全相同的字符串的情况,因此在进行哈希值的对比时,为了保证字符串匹配的准确性,并不是直接将与标准哈希值相同的目标哈希值所对应的目标字符串作为相匹配的字符串进行输出,而是利用哈希值进行第一次匹配,得到哈希值相同的第一字符串集合。
由于第一字符串集合中所包含的字符串仅仅是与标准哈希值相同的字符串,并不一定能保证第一字符串集合中所包含的字符串与标准字符串完全相同,因此在得到了第一字符串集合之后,需要进行进一步地筛选,以得到更加准确的结果,也就是得到与标准字符串相匹配的字符串,进而进行相应的输出。
在一实施例中,在得到第一字符串集合之后,会进行进一步的匹配,因此在得到第一字符串集合之后将计算标准字符串所对应的标准散列值,用于在后续进行匹配时,利用散列值对第一字符串集合进行进一步的筛选。具体还包括:根据所述第一字符串集合构建对应的散列函数,并基于所述散列函数确定所述标准散列值对应的标准散列值,其中所述散列函数还用于计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值。
在实际应用中,由于存在哈希值相同但字符串不相同的情况,因此使用哈希值进行匹配时是进行第一步的筛选和匹配,然后在利用哈希值完成第一次匹配之后,利用散列值对所匹配的字符串进行进一步的筛选,以得到与标准字符串相匹配的字符串或者一个包含极少数量的字符串集合。
散列值,是将值从一个大的(可能很大)定义域映射到一个较小值域的(数学)函数,一个"好的"散列函数是把该函数应用到大的定义域中的若干值的(大)集合的结果可以均匀地(和随机地)被分布在该范围上。
通常情况下,一个散列值对应着一个字符串,但是会存在极少的情况会使得一个三类之会对应着多个字符串。而在实际应用中,散列值的确定是用于将对应的字符串存在相应的地址中,在散列表的表长足够时,一个合理的散列函数可以将大量的字符串/数据进行记录和存储。
其中,散列值通常是利用相应的散列函数所得到,而散列函数的构建方式有多种,比如:直接定址法、数字分析法、平方取中法、折叠法、除留余数法以及随机数法,但是不同的方法所适合的场景会有所不同,比如直接定址法由于需要预先知道关键字的分布,因此适合查找表较小且连续的情况,而不适合分布不均数据,再比如平方取中法比较适合于不知道关键字的分布,而位数又不是很大的情况。而使用最为常见的方式为除留余数法,通过此方法构建相应的散列函数,进而实现将相应的数据记录存储在对应的存储空间中。
以除留余数法构建散列函数以实现对字符串进行散列值计算的方式进行说明,此时散列函数的构建为f(key)=keymodp(p≤m),其中,key为用于匹配的待匹配字符串,p为一质数,m为散列表长,在实际使用过程中,p的数值越大越好,可以更好的避免散列冲突。因此在计算标准字符串对应的散列值时,最主要的是确定对应的散列函数,进而根据散列函数计算得到标准字符串对应的标准散列值。
示例性的,若原始字符串为十进制的3141592653589793(......)要找到字符串为26535,此时根据散列表长设定p=997,则散列函数f(key)=keymod997,则字符串26535对应的散列值为26535mod997=613,那么在进行对比和匹配时,只有字符串对应的散列值为613,在确定与标准字符串相对应,由于散列冲突,那么此时所得到的字符串可以来确定是否与标准字符串完全相同,而对于散列值不相同的字符串,则无需进行判断确定。
步骤S103、计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值。
第一字符串集合是通过哈希值进行第一次筛选所得到的,对于第一字符串集合中所包含的字符串而言,有可能与标准字符串完全匹配,也有可能与标准字符串不匹配,因此需要进行进一步地的匹配以确定更加准确的字符串。
在一实施例中,在进行进一步匹配和判断时,通过散列值实现对第一字符串集合的进一步筛选,因此计算第一字符串集合所包含的第一字符串所对应的第一散列值。需要说明的是,第一字符串集合中所包含的字符串的数量可以是多个,因此所得到的第一字符串的数量是多个的,此时所对应的第一散列值也是多个,但是每个字符串与散列值是唯一对应的。
在计算得到第一字符串对应的第一散列值时,使用与计算得到标准散列值相同的散列函数进行计算。
进一步地,如图2所示,图2为本申请一个实施例中得到第一散列值的步骤的流程示意图。在一实施例中,步骤S103包括子步骤S201至子步骤S203。
子步骤S201、确定所述标准字符串的标准字符长度,并在所述第一字符串集合中获取第一字符串,以确定是否需要对所述第一字符串进行散列值计算。
在进行进一步地的筛选和匹配时,利用相同的散列函数计算对应的散列值,进而进行相应的对比,以实现字符串的模糊匹配。
在实际应用过程中,进行字符串的模糊匹配可以确定一个字符串是否等于另一个字符串,或者一个字符串中是否包含有另一个字符串。因此,在利用标准散列值进行匹配时,需要将在第一字符串集合中所获取的第一字符串进行分裂,使得首先需要确定标准字符串所对应的标准字符长度,比如字符数量,如字符串12123对应的字符长度为5,同时还将在第一字符串集合中得到进行计算的第一字符串,进而确定第一字符串是否可以进行散列值的计算。
在一实施例中,在确定是否需要对第一字符串进行散列值计算时,通过利用标准字符串来确定。示例性的,将标准字符串与第一字符串进行对比,确定首字符位置相等,利用标准字符长度来确定第一字符串是否需要进行散列值计算。在实际应用中,若进行查询匹配的字符串长度小于标准字符串长度,则说明进行匹配的字符串一定不会等于或者包含标准字符串,如,标准字符串为121212,而所得到的进行匹配的字符串的字符长度为5,显然不会等于标准字符串或者包含标准字符串,只有在待匹配的字符串的字符长度大于等于6时,在可能等于或者包含标准字符串,如待匹配字符串为121212或者31212123等。
需要说明的是,第一字符串用于对第一字符串集合中的某一字符串进行表述,具体可以代表第一字符串集合中的任一字符串。对于第一字符串集合中所包含的字符串而言,其所对应的字符串长度(即字符串的字符数量)是可以相同,也可以不相同的,因此可以在进行散列值的计算之后,确定是否需要对第一字符串集合中所包含的第一字符串进行散列值计算。
具体地,在得到第一字符串集合之后,对第一字符串的长度进行识别,其中第一字符串为第一字符串集合中的任一字符串,以确定第一字符串的长度是否大于或者等于标准字符串,并在第一字符串的长度小于标准字符串时,将第一字符串进行删除,以使得进行散列值计算的第一字符串均可以进行分裂。
子步骤S202、若确定需要对所述第一字符串进行散列值计算,则对所述第一字符串进行分裂,得到对应的若干子第一字符串。
在确定需要对第一字符串进行散列值计算时,对第一字符串进行分裂处理,得到第一字符串对应的若干子第一字符串。
在计算第一字符串的散列值时,首先对第一字符串进行分裂,将第一字符串分裂为字符长度与标准字符串的字符长度相同的若干子第一字符串,然后再对所得到的若干子第一字符串所对应的散列值进行计算。
示例性的,比如标准字符串的字符长度为m,第一字符串的字符长度为n,其中n≥m,那么此时所得到的子第一字符串的数量为n-m+1,显然此时对应的子第一字符串的数量大于等于一。
例如,以字符串为数字为例,标准字符串为941031,第一字符串为19410312,那么此时在对第一字符串进行分裂时,子第一字符串的数量为8-6+1=3,其中所得到子第一字符串包括:194103、941031、410312。
子步骤S203、计算所述若干子第一字符串分别对应的散列值,以将所得到的散列值汇总得到所述第一散列值。
在对第一字符串进行分裂得到若干子第一字符串之后,按照计算得到标准字符串对应的散列值的散列函数计算每个子第一字符串对应的散列值,进而将每个子第一字符串所得到的散列值进行汇总得到对应的第一散列值。
由上述描述的实施例可知,所得到的子第一字符串的数量可以是多个,因此在进行散列值的计算得到第一散列值之后,第一散列值所包含的散列值的数量也会是多个,且与子第一字符串的数量相同。比如标准字符串为941031,第一字符串为19410312,由于第一字符串可以分裂为3个字符串,因此第一散列值中包含有三个散列值。同样的,第一字符串集合中包含有若干第一字符串,使得第一散列值中包含有所有的进行分裂之后的字符串对应的散列值。
步骤S104、将所述第一散列值与标准散列值进行对比,以根据所得到的对比结果确定确定第二字符串集合。
在得到第一散列值之后,将第一散列值与预先所得到的标准散列值进行对比,以根据所得到的对比结果在第一字符串集合中确定第二字符串集合。
实际上,对于第一字符串而言,其所对应的第一散列值的数量通常是多个,需要根据第一字符串的实际字符长度与标准字符串的字符长度来确定,只有在第一字符串的字符长度与标准字符串的字符长度相等时,第一字符串所对应的第一散列值为一个,反之则为多个。需要说明的是,对于字符长度小于标准字符串的字符长度的情况,会直接进行过滤,即不会进行散列值的计算。
由于散列值为具体的数值,因此直接将所得到的第一散列值与标准散列值进行对比,确定是否与标准散列值相等,通过对比,将第一散列值中与标准散列值相等的散列值所对应的字符串进行汇总,以得到第二字符串集合。
进一步地,在一个实施例中,在得到第二字符串集合时,确定当前是否可以根据标准字符串对第二字符串集合中所包含的字符串进行遍历。
此时,在进行判断确定时包括:确定所述第二字符串集合所包含的字符串的字符串数量,并将所述字符串数量与预设的第一数量阈值进行对比;根据所得到的对比结果确定所述第二字符串集合是否满足预设遍历条件;其中,若所述字符串数量小于或者等于所述第一数量阈值,则确定满足所述预设遍历条件;若所述字符串数量大于所述第一数量阈值,则确定不满足所述预设遍历条件。
在进行字符串的匹配时,是通过一次次的筛选,将初始查询库中的字符串数据进行过滤,然后在过滤之后所得到的结果满足一定条件时对所得到的字符串进行遍历,以确定进行输出的字符串,也就是将相匹配的字符串进行输出。
在得到第二字符串集合之后,确定第二字符串所包含的字符串的字符数量,然后将字符数量与预设的第一数量阈值进行对比,确定两者时间的大小关系,通过两则之间的大小关系确定当前是否满足预设遍历条件,示例性的,在第二字符串所包含的字符串的字符数量小于或者等于预设的第一数量阈值时,确定第二字符串集合满足预设遍历条件,反之则不满足。
步骤S105、当所述第二字符串集合满足预设遍历条件时,遍历所述第二字符串集合所包含的字符串,以将所述第二字符串集合中与所述标准字符串集合相匹配的匹配字符串进行输出。
在确定第二字符串集合满足预设遍历条件时,将对第二字符串所包含的字符串进行遍历,通过将第二字符串集合中所包含的字符串进行遍历,以在第二字符串集合中确定与标准字符串相匹配的匹配字符串,进而将所得到的相匹配的字符串进行输出。
在一实施例中,预设遍历条件为第二字符串集合中所包含的字符串的数量是否达到预设数量,那么满足预设表里条件即为第二字符串集合中所包含的字符串数量足够少,此时将对第二字符串集合中所包含的字符串进行遍历,并与标准字符串进行对比。
利用散列值的对比,所得到的第二字符串集合中所包含的字符串的字符长度与标注字符串的字符长度相同,此时通过对字符串进行读取和对比,确定字符串是否为相同字符串。在进行对比时,将字符串中对应位置的字符进行对比,比如,标准字符串有5个字符,那么在对第二字符串集合中所包含的字符串进行遍历和对比时,将每个字符对应的进行对比,如将所得到的字符串的第一个字符与标准字符串的第一个字符进行对比,第二个与第二个进行对比,以此类推至对比完成。
在实际应用中,在对第二字符串中所得到的字符串进行遍历以及与标准字符串进行对比时,在对比过程中,在出现字符不相同时,直接将此时所遍历对比的字符串视为不匹配字符串,只有在字符相同时才会接着进行对比。
比如,标准字符串为12345,在进行遍历和对比时,理论上需要对比的次数为5次,若此时所得到的进行遍历的字符串为12368以及12345,对于字符串12368,在进行对比时只需要对比4次即可,因为在对比两个字符串的第四个字符时出现比相同的情况,那么说明字符串12368为不匹配字符串,对于字符串12345,在进行对比时需要对比5次,因为两个字符串完全相同。同样的,若所得到的需要遍历的字符串为12348,那么此时进行遍历匹配时同样也需要进行5次对比,但因为第五个字符的不同,会判定字符串12348为不匹配字符串。
以将字符串12368与标准字符串12345进行对比,首先将第一“1”与标准字符串的第一位“1”对比,确认第一位相同时将第二位“2”与标准字符串的第二位“2”对比,确认第二位相同时将第三位“3”与标准字符串的第三位“3”对比,确认第三位相同时将第四位“6”与标准字符串的第四位“4”对比,此时确认不相同,由于理论上需要对比5次,那么确定字符串“12368”为不相匹配字符串。
另外,在将与标准字符串相匹配的字符串进行输出时,还可以获取匹配字符串的原始字符串进行输出,比如,标准字符串为12345,在进行哈希值计算的对比之后得到字符串32123456为哈希值相同的一个字符串,此时在进行散列值的计算之前,由于进行字符串的分裂,所得到的字符串包括:32123、21234、12345以及23456,此时可以将所得到的4个字符串与母字符串32123456相关联,由于在进行散列值计算对比之后,会确定字符串12345为相匹配的字符串,此时在确定相匹配的字符串时还可以将字符串32123456进行输出,因为字符串32123456中包含有字符串12345。
在上述描述的字符串模糊匹配方法中,对进行匹配查询的文本中所有的字符串进行查询匹配,计算每一个字符串对应的哈希值,将与标准字符串所对应的哈希值相同的待匹配字符串进行集合,然后对集合中的每一个字符串进行分裂以及散列值的计算,以得到对应的散列值,通过散列值实现对待匹配字符串的进一步筛选,最后在所得到的字符串集合中所包含的字符串数量满足预设遍历条件时进行遍历匹配,以输出得到最终的相匹配的字符串。实现了在大数据量的情况下,也可以快速准确的实现字符串的查询匹配,有效的提高了字符串匹配的效率和准确性。
请参阅图3,图3为本申请一个实施例中字符串模糊匹配装置的示意性框图,该装置用于执行前述的字符串模糊匹配方法。
如图3所示,该字符串模糊匹配装置300包括:
第一计算模块301,用于获取待进行匹配的目标字符串,并计算所述目标字符串对应的目标哈希值,其中所述目标字符串存储于区块链的节点中;
第一对比模块302,用于将所述目标哈希值与标准哈希值进行对比,以在所述目标字符串中进行匹配得到第一字符串集合,其中,所述标准哈希值为标准字符串对应的哈希值;
第二计算模块303,用于计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值;
第二对比模块304,用于将所述第一散列值与标准散列值进行对比,以根据所得到的对比结果确定第二字符串集合;
字符输出模块305,用于当所述第二字符串集合满足预设遍历条件时,遍历所述第二字符串集合中所包含的字符串,以将所述第二字符串集合中与所述标准字符串相匹配的匹配字符串进行输出。
进一步地,在一个实施例中,所述第一计算模块301具体还用于:
当接收到到字符串匹配指令时,获取标准字符串,并计算所述标准字符串对应的标准哈希值。
进一步地,在一个实施例中,所述字符串模糊匹配装置300还包括函数构建模块306,所述函数构建模块306具体用于:
根据所述第一字符串集合构建对应的散列函数,并基于所述散列函数确定所述标准散列值对应的标准散列值,其中所述散列函数还用于计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值。
进一步地,在一个实施例中,所述第二计算模块303具体还用于:
确定所述标准字符串的标准字符长度,并在所述第一字符串集合中获取第一字符串,以确定是否需要对所述第一字符串进行散列值计算;若确定需要对所述第一字符串进行散列值计算,则对所述第一字符串进行分裂,得到对应的若干子第一字符串;计算所述若干子第一字符串分别对应的散列值,以将所得到的散列值汇总得到所述第一散列值。
进一步地,在一个实施例中,所述字符串模糊匹配装置300还包括判断比较确定模块307,所述比较确定模块307具体还用于:
确定所述第二字符串集合所包含的字符串的字符串数量,并将所述字符串数量与预设的第一数量阈值进行对比,其中所述目标字符串存储于区块链的节点中;根据所得到的对比结果确定所述第二字符串集合是否满足预设遍历条件;若所述字符串数量小于或者等于所述第一数量阈值,则确定所述第二字符串集合满足所述预设遍历条件;若所述字符串数量大于所述第一数量阈值,则确定所述第二字符串集合不满足所述预设遍历条件。
进一步地,在一个实施例中,所述字符串模糊匹配装置300具体还用于:
根据所述第二字符串集合更新所述散列函数;根据所述更新后的散列函数确定更新后的标准散列值;根据所述更新后的标准散列值对所述第二字符串集合进行处理,至所得到的字符串集合满足所述预设遍历条件。
进一步地,在一个实施例中,所述字符串模糊匹配装置300具体还用于:
确定所述第一字符串集合所包含的字符串数量;若确定所述字符串数量小于或者等于第二数量阈值,则将所述第一字符串集合所包含的字符串与所述标准字符串进行遍历对比,以得到相匹配的字符串;若确定所述字符串数量大于第二数量阈值,则执行步骤:计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值。
需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
上述的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图4所示的计算机设备上运行。
请参阅图4,图4为本申请一个实施例中计算机设备的结构示意性框图。该计算机设备可以是服务器。
参阅图4,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口,其中,存储器可以包括非易失性存储介质和内存储器。
非易失性存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种风险预警的事件图谱构建方法。
处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种字符串模糊匹配方法。
该网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应当理解的是,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
其中,在一个实施例中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:
获取待进行匹配的目标字符串,并计算所述目标字符串对应的目标哈希值;将所述目标哈希值与标准哈希值进行对比,以在所述目标字符串中进行匹配得到第一字符串集合,其中,所述标准哈希值为标准字符串对应的哈希值;计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值;将所述第一散列值与标准散列值进行对比,以根据所得到的对比结果确定第二字符串集合;当所述第二字符串集合满足预设遍历条件时,遍历所述第二字符串集合中所包含的字符串,以将所述第二字符串集合中与所述标准字符串相匹配的匹配字符串进行输出。
在一个实施例中,所述处理器在实现所述计算机程序时,还用于实现:
当接收到到字符串匹配指令时,获取标准字符串,并计算所述标准字符串对应的标准哈希值。
在一个实施例中,所述处理器在实现所述计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值之前,还用于实现:
根据所述第一字符串集合构建对应的散列函数,并基于所述散列函数确定所述标准散列值对应的标准散列值,其中所述散列函数还用于计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值。
在一个实施例中,所述处理器在实现所述计算所述第一字符串集合中所包含的第一字符串所对应的第一散列时,还用于实现:
确定所述标准字符串的标准字符长度,并在所述第一字符串集合中获取第一字符串,以确定是否需要对所述第一字符串进行散列值计算;若确定需要对所述第一字符串进行散列值计算,则对所述第一字符串进行分裂,得到对应的若干子第一字符串;计算所述若干子第一字符串分别对应的散列值,以将所得到的散列值汇总得到所述第一散列值。
在一个实施例中,所述处理器在实现所述将所述第一散列值与标准散列值进行对比,以根据所得到的对比结果确定第二字符串集合之后,还用于实现:
确定所述第二字符串集合所包含的字符串的字符串数量,并将所述字符串数量与预设的第一数量阈值进行对比;根据所得到的对比结果确定所述第二字符串集合是否满足预设遍历条件;若所述字符串数量小于或者等于所述第一数量阈值,则确定所述第二字符串集合满足所述预设遍历条件;若所述字符串数量大于所述第一数量阈值,则确定所述第二字符串集合不满足所述预设遍历条件。
在一个实施例中,所述处理器在实现所述确定所述第二字符串集合不满足所述预设遍历条件之后,还用于实现:
根据所述第二字符串集合更新所述散列函数;根据所述更新后的散列函数确定更新后的标准散列值;根据所述更新后的标准散列值对所述第二字符串集合进行处理,至所得到的字符串集合满足所述预设遍历条件。
在一个实施例中,所述处理器在实现所述将所述目标哈希值与标准哈希值进行对比,以在所述目标字符串中进行匹配得到第一字符串集合之后,还用于实现:
确定所述第一字符串集合所包含的字符串数量;若确定所述字符串数量小于或者等于第二数量阈值,则将所述第一字符串集合所包含的字符串与所述标准字符串进行遍历对比,以得到相匹配的字符串;若确定所述字符串数量大于第二数量阈值,则执行步骤:计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值。
本申请的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本申请实施例提供的任一项字符串模糊匹配方法。
其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
另外,本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种字符串模糊匹配方法,其特征在于,所述方法包括:
获取待进行匹配的目标字符串,并计算所述目标字符串对应的目标哈希值;
将所述目标哈希值与标准哈希值进行对比,以在所述目标字符串中进行匹配得到第一字符串集合,其中,所述标准哈希值为标准字符串对应的哈希值;
计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值;
将所述第一散列值与标准散列值进行对比,以根据所得到的对比结果确定第二字符串集合;
当所述第二字符串集合满足预设遍历条件时,遍历所述第二字符串集合中所包含的字符串,以将所述第二字符串集合中与所述标准字符串相匹配的匹配字符串进行输出。
2.根据权利要求1所述的方法,其特征在于,所述获取待进行匹配的目标字符串,并计算所述目标字符串对应的目标哈希值之前,还包括:
当接收到字符串匹配指令时,获取标准字符串,并计算所述标准字符串对应的标准哈希值。
3.根据权利要求1所述的方法,其特征在于,所述计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值之前,还包括:
根据所述第一字符串集合构建对应的散列函数,并基于所述散列函数确定所述标准散列值对应的标准散列值,其中所述散列函数还用于计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值。
4.根据权利要求3所述的方法,其特征在于,所述计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值,包括:
确定所述标准字符串的标准字符长度,并在所述第一字符串集合中获取第一字符串,以确定是否需要对所述第一字符串进行散列值计算;
若确定需要对所述第一字符串进行散列值计算,则对所述第一字符串进行分裂,得到对应的若干子第一字符串;
计算所述若干子第一字符串分别对应的散列值,以将所得到的散列值汇总得到所述第一散列值。
5.根据权利要求1所述的方法,其特征在于,所述将所述第一散列值与标准散列值进行对比,以根据所得到的对比结果确定第二字符串集合之后,还包括:
确定所述第二字符串集合所包含的字符串的字符串数量,并将所述字符串数量与预设的第一数量阈值进行对比;
根据所得到的对比结果确定所述第二字符串集合是否满足预设遍历条件;
若所述字符串数量小于或者等于所述第一数量阈值,则确定所述第二字符串集合满足所述预设遍历条件;
若所述字符串数量大于所述第一数量阈值,则确定所述第二字符串集合不满足所述预设遍历条件。
6.根据权利要求5所述的方法,其特征在于,所述确定所述第二字符串集合不满足所述预设遍历条件之后,还包括:
根据所述第二字符串集合更新所述散列函数;
根据所述更新后的散列函数确定更新后的标准散列值;
根据所述更新后的标准散列值对所述第二字符串集合进行处理,至所得到的字符串集合满足所述预设遍历条件。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述将所述目标哈希值与标准哈希值进行对比,以在所述目标字符串中进行匹配得到第一字符串集合之后,包括:
确定所述第一字符串集合所包含的字符串数量;
若确定所述字符串数量小于或者等于第二数量阈值,则将所述第一字符串集合所包含的字符串与所述标准字符串进行遍历对比,以得到相匹配的字符串;
若确定所述字符串数量大于第二数量阈值,则执行步骤:计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值。
8.一种字符串模糊匹配装置,其特征在于,所述装置包括:
第一计算模块,用于获取待进行匹配的目标字符串,并计算所述目标字符串对应的目标哈希值;
第一对比模块,用于将所述目标哈希值与标准哈希值进行对比,以在所述目标字符串中进行匹配得到第一字符串集合,其中,所述标准哈希值为标准字符串对应的哈希值;
第二计算模块,用于计算所述第一字符串集合中所包含的第一字符串所对应的第一散列值;
第二对比模块,用于将所述第一散列值与标准散列值进行对比,以根据所得到的对比结果确定第二字符串集合;
字符输出模块,用于当所述第二字符串集合满足预设遍历条件时,遍历所述第二字符串集合中所包含的字符串,以将所述第二字符串集合中与所述标准字符串相匹配的匹配字符串进行输出。
9.一种计算机设备,其特征在于,包括存储器和处理器:
所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述的字符串模糊匹配方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机可读指令被所述处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项所述的字符串模糊匹配方法的步骤。
CN202010615358.0A 2020-06-30 2020-06-30 字符串模糊匹配方法、装置、设备及可读存储介质 Pending CN111797285A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010615358.0A CN111797285A (zh) 2020-06-30 2020-06-30 字符串模糊匹配方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010615358.0A CN111797285A (zh) 2020-06-30 2020-06-30 字符串模糊匹配方法、装置、设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN111797285A true CN111797285A (zh) 2020-10-20

Family

ID=72809628

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010615358.0A Pending CN111797285A (zh) 2020-06-30 2020-06-30 字符串模糊匹配方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN111797285A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112329758A (zh) * 2020-11-04 2021-02-05 深圳市极致科技股份有限公司 基于车牌的模糊匹配方法、装置,电子设备及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040049493A1 (en) * 2002-09-05 2004-03-11 Andrew Davis String matching process for ASCII strings using two arrays and hash table
CN101329680A (zh) * 2008-07-17 2008-12-24 安徽科大讯飞信息科技股份有限公司 句子层面的大规模快速匹配方法
US8661341B1 (en) * 2011-01-19 2014-02-25 Google, Inc. Simhash based spell correction
CN106484730A (zh) * 2015-08-31 2017-03-08 北京国双科技有限公司 字符串匹配方法和装置
CN107431624A (zh) * 2015-03-30 2017-12-01 高通股份有限公司 加速的口令句校验
US9912351B1 (en) * 2017-05-17 2018-03-06 Via Alliance Semiconductor Co., Ltd. Methods for accelerating hash-based compression and apparatuses using the same
CN108304469A (zh) * 2017-12-27 2018-07-20 中国银联股份有限公司 用于字符串模糊匹配的方法和装置
CN108984695A (zh) * 2018-07-04 2018-12-11 科大讯飞股份有限公司 一种字符串匹配方法及装置
CN109241360A (zh) * 2018-08-21 2019-01-18 阿里巴巴集团控股有限公司 组合字符串的匹配方法及装置和电子设备
CN109408681A (zh) * 2018-10-11 2019-03-01 广东工业大学 一种字符串匹配方法、装置、设备及可读存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040049493A1 (en) * 2002-09-05 2004-03-11 Andrew Davis String matching process for ASCII strings using two arrays and hash table
CN101329680A (zh) * 2008-07-17 2008-12-24 安徽科大讯飞信息科技股份有限公司 句子层面的大规模快速匹配方法
US8661341B1 (en) * 2011-01-19 2014-02-25 Google, Inc. Simhash based spell correction
CN107431624A (zh) * 2015-03-30 2017-12-01 高通股份有限公司 加速的口令句校验
CN106484730A (zh) * 2015-08-31 2017-03-08 北京国双科技有限公司 字符串匹配方法和装置
US9912351B1 (en) * 2017-05-17 2018-03-06 Via Alliance Semiconductor Co., Ltd. Methods for accelerating hash-based compression and apparatuses using the same
CN108304469A (zh) * 2017-12-27 2018-07-20 中国银联股份有限公司 用于字符串模糊匹配的方法和装置
CN108984695A (zh) * 2018-07-04 2018-12-11 科大讯飞股份有限公司 一种字符串匹配方法及装置
CN109241360A (zh) * 2018-08-21 2019-01-18 阿里巴巴集团控股有限公司 组合字符串的匹配方法及装置和电子设备
CN109408681A (zh) * 2018-10-11 2019-03-01 广东工业大学 一种字符串匹配方法、装置、设备及可读存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112329758A (zh) * 2020-11-04 2021-02-05 深圳市极致科技股份有限公司 基于车牌的模糊匹配方法、装置,电子设备及存储介质

Similar Documents

Publication Publication Date Title
US10642515B2 (en) Data storage method, electronic device, and computer non-volatile storage medium
US10726356B1 (en) Target variable distribution-based acceptance of machine learning test data sets
CN102460404B (zh) 生成混淆数据
US20230032882A1 (en) Systems and methods for database investigation tool
US9361307B2 (en) Rejecting rows when scanning a collision chain that is associated with a page filter
US10061758B2 (en) Tabular widget with mergable cells
AU2015347304B2 (en) Testing insecure computing environments using random data sets generated from characterizations of real data sets
CN109815226B (zh) 基于区块链的数据存储方法、装置、设备和存储介质
US11100087B2 (en) Data tokenization system maintaining data integrity
Wunderer A detailed analysis of the hybrid lattice-reduction and meet-in-the-middle attack
Xylogiannopoulos et al. Repeated patterns detection in big data using classification and parallelism on LERP reduced suffix arrays
CN112035478A (zh) 目录展示方法、装置、计算机设备及计算机可读存储介质
CN111797285A (zh) 字符串模糊匹配方法、装置、设备及可读存储介质
Ahsaan et al. Big data analytics: challenges and technologies
US20180067938A1 (en) Method and system for determining a measure of overlap between data entries
US20230359769A1 (en) Systems and Methods for Anonymizing Large Scale Datasets
US8407187B2 (en) Validating files using a sliding window to access and correlate records in an arbitrarily large dataset
CN112001158A (zh) 文书生成方法、装置、计算机设备及计算机可读存储介质
CN112528189B (zh) 基于数据的组件封装方法、装置、计算机设备及存储介质
CN113434122A (zh) 多角色页面创建方法、装置、服务器及可读存储介质
US10642789B2 (en) Extended attribute storage
CN112667721A (zh) 数据分析方法、装置、设备及存储介质
CN113283677A (zh) 指标数据处理方法、装置、设备及存储介质
CN113282218A (zh) 多维报表生成方法、装置、设备及存储介质
Joseph A phase transition for the heights of a fragmentation tree

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