CN103544208B - 海量特征串集合的匹配方法及*** - Google Patents

海量特征串集合的匹配方法及*** Download PDF

Info

Publication number
CN103544208B
CN103544208B CN201310363274.2A CN201310363274A CN103544208B CN 103544208 B CN103544208 B CN 103544208B CN 201310363274 A CN201310363274 A CN 201310363274A CN 103544208 B CN103544208 B CN 103544208B
Authority
CN
China
Prior art keywords
feature string
bit
bit vector
packet
algorithm
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
Application number
CN201310363274.2A
Other languages
English (en)
Other versions
CN103544208A (zh
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.)
Neusoft Corp
Original Assignee
Neusoft Corp
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 Neusoft Corp filed Critical Neusoft Corp
Priority to CN201310363274.2A priority Critical patent/CN103544208B/zh
Publication of CN103544208A publication Critical patent/CN103544208A/zh
Application granted granted Critical
Publication of CN103544208B publication Critical patent/CN103544208B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B40/00ICT specially adapted for biostatistics; ICT specially adapted for bioinformatics-related machine learning or data mining, e.g. knowledge discovery or pattern finding

Landscapes

  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Engineering & Computer Science (AREA)
  • Medical Informatics (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Epidemiology (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Public Health (AREA)
  • Bioethics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Biotechnology (AREA)
  • Evolutionary Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种海量特征串集合的匹配方法及***,其中的方法包括预处理阶段和特征串匹配阶段,其中,在预处理阶段通过对特征串进行统计并分组,建立位向量掩码表,使过滤算法在同等空间和规则数量下的通过率更低,进而能够容纳更多的特征串;在特征串匹配阶段,采用位并行方式进行后缀和前缀匹配,支持不等长特征串的匹配并且在匹配数据中能够以跳跃的方式大范围快速查找特征串;通过区分普通匹配窗口和长匹配窗口,来保证跳跃的安全和减少过滤通过率。通过本发明能够使匹配过程在相同资源条件下,能够容纳数量更多的特征串,并且具有性能稳定的特点,能够在极端情况下保持模式匹配的高效率。

Description

海量特征串集合的匹配方法及***
技术领域
本发明涉及信息识别技术领域,更为具体地,涉及一种海量特征串集合的匹配方法及***。
背景技术
模式匹配是信息识别中的重要核心技术之一,用于从目标串中发现特征串。随着信息技术的高速发展,模式匹配被越来越广泛地应用于网络信息搜索、数据流挖掘、网络入侵检测以及计算生物学等领域。
模式匹配是指在文本T=t1t2…tn中找出某个给定的特征串集合P={p1,p2,…,pr}的所有出现位置,其中T和pi(1≤i≤r)是在有限字符表∑上的字符序列。随着网络和生物学的发展,在匹配更多的特征串条目的同时,需要保持有较高的处理速度,这就对多模式匹配的处理能力提出了更高的要求。然而在很多现有的多模式匹配算法中,当特征串规模超过1万时,由于其处理能力的下降,已经无法满足需求,因而基于位并行与q-gram技术的多模式匹配方法应运而生。此种方法在数量10万以下规模的特征串匹配过程中能够取得较好的效果。
基于位并行技术的多模式匹配算法,例如Shift-And/Or算法、BNDM算法,其基本思想是:将特征串集合与文本串的匹配状态用位向量存储,匹配过程就是用位操作更新位向量的过程。由于Shift-And和Shift-Or算法的原理基本相同,以下着重介绍Shift-And算法和BNDM算法的原理。
(1)Shift-And算法维护一个字符串的集合,集合中的每个字符串既是特征串p的前缀,同时也是已读入文本的后缀。每读入一个新的文本字符,该算法采用位并行的方法更新该集合。该集合用一个位掩码D=dm...d1来表示。D的第j位被置为1,当且仅当p1…pj是t1…ti的后缀。
Shift-And算法首先构造一个表B,记录字母表中每个字符的位掩码bm...b1。如果pj=c,掩码B[c]的第j位被置为1,否则为0。首先置D=0m,对于每个新读入的文本字符ti+1,用如下公式对D进行更新:
Di+1←((Di<<1)|0m+11)&B[ti+1]
上面0m表示有连续m个0,例如,用031来表示0001。在匹配时,逐个扫描文本字符并更新向量D,测试是否匹配成功的掩码为10m-1。即当Di&10m-1≠0m时,在文本位置i处匹配成功。
(2)BNDM(BackwardNondeterministicDawgMatching,向后非确定性匹配)算法的搜索与BDM算法相同,但它使用位并行来识别特征串。在当前搜索窗口内,设已读入的字符串为u,BNDM算法维护一个集合,记录u在p中所有出现位置。同Shift-And算法一样,该集合可以用一个位向量D来表示。如果特征串p1…pj+|u|-1等于u,那么D的第m-j+1位是1,表示p的位置j是一个活动状态。
同Shift-And算法一样,BNDM算法预先计算一张表B,表B用一个位掩码记录了该字符在p中出现的位置。对于每个新读入的文本字符ti,利用如下公式,可以从D更新到D',其中,D'←(D<<1)&B[ti],初始化D=1m,且需要用额外变量last保存特征串前缀的最左位置。
为了能容纳更大的规则数,使用q-gram技术以扩大表的规模。该技术将q个字符转化为一个字符来处理。其中,将q个字符转化为一个q-gram字符有两种方式,即重叠q-gram和连续q-gram。当使用重叠q-gram时,依次从原字符串的每一个字符开始取q个字符进行转化,使用连续q-gram时,依次从原字符串的每q个字符开始去q个字符进行转化。例如,在转化字符串“pony”时,使用重叠q-gram转化为“po-on-ny”,而使用连续q-gram转化为“po-ny”。本文中使用q-gram技术时,使用的都是重叠q-gram。
为了实现快速的匹配,采用SOG算法或者BG算法来保证多模式匹配的执行效率。
SOG算法是使用q-gram将Shift-Or算法扩展成基于过滤技术的多模式匹配算法。该算法是以牺牲精确匹配为前提,将“确认能匹配”改成“确认不能匹配”,以一次相对快速的匹配过程,过滤掉大量不能成功匹配的数据,以保证算法的执行效率。对于少量过滤通过的情况,配合其他算法,再针对数据中的特定的位置进行精确匹配的校验。对于大多数匹配过程,最终不会产生命中,如果也没有误报产生,那么过滤算法的性能就等同于整个模式匹配过程的性能。
具体的方法是,首先在算法的预处理阶段,以每个特征串为基础,构建Shift-Or算法的掩码表B,然后将多个掩码表B,以每个字符位掩码为单位进行或运算,进而合并成为一张掩码表,后续的匹配过程不变。不同在于,当D[i]&10m-1≠0m时,在文本位置i处不再表示匹配成功,而是有可能会发生匹配,需要使用其他能够逐个字符比较的方法进行再次确认。
SOG算法需要将多个位向量进行或运算,位向量的位长就必须都是相等的,所以要求所有的特征串都是等长的。如果出现不等长的情况,就以最短串的长度为基准,将所有长串提取等长子串,让子串参与匹配。如果提取的等长子串长度lmin小于机器字长,lmin*r仍然不超过一个机器字长,还可以将一个机器字长划分成r个等长分组,将r个位向量包装进一个机器字内,从而节省空间。ShiftAnd/Or类的无跳跃的算法,还可支持不等长分组,使长字符串可以保留更长的子串。
作为实现快速模式匹配的另一种算法,BG是使用q-gram将BNDM算法扩展成为基于过滤技术的多模匹配算法,其扩展方法同Shift-And/Or算法类似。这里不再详述。
多模式匹配过滤类算法主要被应用于一次完整模式匹配的前端过滤,评价一个过滤算法的性能,主要体现在两个方面:过滤效率和过滤通过率。过滤效率,表示纯粹过滤过程的处理速度。过滤效率比较容易评价:匹配同等的数据量,执行时间越短,效率越高。过滤通过率也可以理解为“误报率”,每一次误报,还需要进行一次额外的精确匹配的确认过程,所以过滤通过率会影响整体匹配效率。一般来说同等特征串数目,通过率越低越好。
虽然SOG、BG算法与传统的多模匹配相比,在支持较大规模特征串的情况下,具有较好的处理速度。从实测数据看来,SOG算法与BG算法在特征串规模达到10000时,仍然保持了较好的处理速度,在这种规模下,传统的多模式匹配算法已经不再适用。然而,SOG算法与BG算法还存在一些不足,导致在特征串规模更大的情况下,其处理速度仍不能满足要求。其中,SOG算法与BG算法主要存在以下不足:
1)在利用q-gram技术时,q取2或3,对应SOG与BG算法的字母表取216或224,当字母表取216时,有较高的冲突概率,在一定的通过率下,算法能容纳的规则数相对较少,当字母表取224时,算法能容纳的规则数很大,但是掩码表所占用的空间也很大,无法充分利用处理器的cache,算法访存需消耗大量时间,降低了算法的性能。
2)SOG与BG算法在构造掩码表时,都没有对特征串进行分组。因此只能对所有特征串都截取等长的前缀。当将较长字符串截取为较短的前缀时,会丢失大量特征信息,也会造成掩码表空间浪费,直接导致过滤算法的过滤效果变差。虽然SOG、BG算法也可以进行分组,但其只是简单的将特征串分为2组或4组,并没有提出有效的自动分组的算法,因此,分组带来的效果并不理想。而BG算法,从算法的基本原理看,不能进行不等长分组,这样当实际特征串集合中含有较短特征串时,BNDM算法的跳跃优势就会大大削弱。
3)当特征串数量达到一定规模时,会导致BG算法失去跳跃能力,此时,BG会因为过度的校验计算,使整体效率变的很低。
4)虽然SOG具有稳定性能,不会因为特征串的数量增大而导致过度校验计算,但也因为它没有跳跃的能力,当特征串规模减少时,其匹配速度也不会提升。
发明内容
鉴于上述问题,本发明的目的是提供一种海量特征串集合的匹配方法及***,以实现在同等空间、同等规则数量下,使过滤算法具备容纳更多特征串的能力。
根据本发明的一个方面,提供一种海量特征串集合的匹配方法,包括预处理阶段和特征串匹配阶段,其中,预处理阶段包括:
确定位向量掩码表的空间容量;
根据对输入的特征串集合所包含的算法字符个数及特征串的数量的统计,对特征串进行分组,建立分组位向量掩码表;
根据算法字符的位长确定散列函数;
特征串匹配阶段包括:
根据输入的特征串所包含的算法字符的个数确定普通匹配窗口长度和长匹配窗口长度,并为当前待匹配数据设置一个偏移值作为起始偏移值,其中,通过机器字符与散列函数的转换获得算法字符;
根据起始偏移值为起点对当前待匹配数据进行偏移并定位,获取当前普通匹配窗口的数据;
从当前普通匹配窗口的末端获取一个算法字符,用直接寻址的方式从位向量掩码表中获取位向量;其中,
如果位向量中的所有有效位都不全为0,则以位向量为初始向量,以当前读入的算法字符作为新的长匹配窗口的起点,在新的长匹配窗口的长度范围内,采用位并行方式对位向量进行即时更新,并对即时更新的位向量进行非零判断;其中,在位向量进行更新的过程中,
如果位向量的有效位全为0,将当前读入的算法字符的位置作为新的起始偏移值,并结束更新;
如果位向量的有效位不全为0且位向量的某一个分组的最高位为1,则匹配当前分组特征串的后缀,保留初始向量中相应的有效位;其中,
在特征串的分组为不等长分组时,如果已经匹配后缀的特征串所属分组的长度小于等于后缀命中时在长匹配窗口中读入的算法字符的个数,则直接记录一次命中的可能,可能会发生命中的特征串的末尾即是当前读入的算法字符;
当位向量的更新过程结束时,如果特征串发生过后缀匹配,则仅保留初始向量中所有发生过后缀命中的活动位,其余全部清0,作为特征串前缀匹配的初始向量,在当前的起始偏移值所指向的普通匹配窗口中进行特征串匹配命中的确认;
如果在匹配特征串的后缀过程中,如果偏移值没有改变,则对偏移值进行重新定位,获取新的起始偏移值,并在偏移值重新定位的过程中,以位并行的方式同步进行特征串匹配。
其中,在对特征串进行分组的过程中,根据特征串的分组数、每组位长、每组所容纳的特征串的数量以及位掩码表的参数,获取每组的过滤通过率;通过每组的过滤通过率获得每组分组方式的过滤通过率,将所有分组方式中过滤通过率最低的分组方式作为最终的分组方式对特征串进行分组。
其中,在当前的起始偏移值所指向的普通匹配窗口中进行匹配命中的确认的过程中,依次从普通匹配窗口末端反向逐个获取算法字符,更新位向量;如果更新后的位向量的某一个分组的最低位是1,则记录一次特征串匹配命中的可能,其中,可能会发生命中的特征串的起点即是当前读入的算法字符。
另一方面,本发明还提供一种海量特征串集合的匹配***,包括特征串分组单元和特征串匹配单元:
其中,特征串分组单元包括:
空间容量确定单元,用于确定位向量掩码表的空间容量;
位向量掩码表建立单元,用于根据对输入的特征串集合所包含的算法字符个数及特征串的数量的统计,对特征串进行分组建立分组位向量掩码表;
散列函数确定单元,用于根据算法字符的位长确定散列函数;
特征串匹配单元包括:
初始单元,用于根据输入的特征串所包含的算法字符的个数确定普通匹配窗口长度和长匹配窗口长度,并为当前匹配数据设置一个偏移值作为起始偏移值,其中,通过机器字符与散列函数的转换获得算法字符;
数据获取单元,用于根据起始偏移值为起点对当前待匹配数据进行偏移并定位,获取当前普通匹配窗口的数据;
位向量获取单元,用于从当前普通匹配窗口的末端获取一个算法字符,用直接寻址的方式从掩码表中获取位向量;
匹配单元,用于当位向量中的所有有效位不全为0时,以位向量为初始向量,以当前读入的算法字符作为新的长匹配窗口的起点,在新的长匹配窗口的长度范围内,采用位并行方式对位向量进行即时更新,并对即时更新的位向量进行非零判断;其中,在位向量进行更新的过程中,
如果位向量的有效位全为0,将当前读入的算法字符的位置作为新的起始偏移值,并结束更新;
如果位向量的有效位不全为0且位向量的某一个分组的最高位为1,则已经匹配了当前分组特征串的后缀,保留初始向量中相应的有效位;其中,
在特征串的分组为不等长分组时,如果已经匹配后缀的特征串所属分组的长度小于等于后缀命中时在长匹配窗口中读入的算法字符的个数,则直接记录一次命中的可能,可能会发生命中的特征串的末尾即是当前读入的算法字符;
当位向量的更新过程结束时,如果特征串发生过后缀匹配,则仅保留初始向量中所有发生过后缀命中的活动位,其余全部清0,作为特征串前缀匹配的初始向量,在当前的起始偏移值所指向的普通匹配窗口中进行特征串匹配命中的确认;
匹配命中单元,用于当匹配单元中发生过特征串后缀命中时,在当前的起始偏移值所指向的普通匹配窗口中进行特征串命中的确认;
偏移值获取单元,用于在匹配特征串的后缀过程中,当偏移值没有改变时,对偏移值进行重新定位,获取新的起始偏移值,并在偏移值重新定位的过程中,以位并行的方式同步进行特征串匹配。
利用上述根据本发明的海量特征串集合的匹配方法及***,能够在同等空间和同等规则数量下,使过滤算法的通过率更低,实现容纳更多特征串的能力,并达到合理利用资源的目的。
为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
附图说明
通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
图1为根据本发明实施例的海量特征串集合的匹配方法流程示意图;
图2为根据本发明实施例的散列函数由机器字符转换为算法字符的转换关系示意图;
图3为根据本发明实施例的海量特征串集合的匹配***的方框示意图。
在所有附图中相同的标号指示相似或相应的特征或功能。
具体实施方式
以下将结合附图对本发明的具体实施例进行详细描述。
针对前述现有的过滤类多模式匹配方法存在空间利用率低算法访存消耗的时间多、跳跃性的匹配特征串不支持特征串不等长分组、过滤通过率高导致整体匹配效率不高的问题,本发明以位并行和q-grams作为技术基础,在预处理阶段通过对特征串的分组优化,使过滤算法在同等空间和规则数量下的通过率更低,进而能够容纳更多的特征串;在特征串匹配阶段,支持不等长特征串的匹配并且在匹配数据中能够以跳跃的方式大范围快速查找特征串,保证了特征串的匹配执行效率。
为了说明本发明提供的海量特征串集合的匹配方法,图1示出了根据本发明实施例的海量特征串集合的匹配方法流程示意图。
如图1所示,本发明提供的海量特征串集合的匹配方法包括:预处理阶段和匹配阶段:
其中,预处理阶段的工作流程包括:
S111:根据实际运行的硬件环境确定位向量掩码表的空间容量。
S112:根据对输入的特征串集合所包含的算法字符个数及特征串的数量的统计,对特征串进行分组建立分组位向量掩码表。
其中,在对特征串进行分组的过程中,根据特征串的分组数、每组位长、每组所容纳的特征串的数量以及位向量掩码表的参数,获取每组的过滤通过率;通过每组的过滤通过率获得每组分组方式的过滤通过率,将所有分组方式中过滤通过率最低的分组方式作为最终的分组方式对特征串进行分组。
其中,在获取每组的过滤通过率的过程中,将过滤通过率定义为:
其中,g表示分组数,Ri表示每一组内的过滤通过率,Si是前i组的过滤通过率,当i=g时,Sg表示每组分组方式的通过率。
在选取分组方式对特征串进行分组后,依据该分组自动建立位向量掩码表。其中,在构建位向量掩码表的过程中,依次获取每个特征串中的算法字符,依据该算法字符值,找到位向量掩码表中的相对应行,并依据当前特征串的所属分组,以及当前算法字符在特征串中的位置,找到位向量掩码表中的相应列,然后将算法字符在该列的对应位置置为1。
S113:根据算法字符的位长确定散列函数。
其中,在根据算法字符的位长确定散列函数时,尽量保留每个机器字符的低7位,溢出位通过一次位异或计算来消除。
特征匹配阶段包括:
S121:根据输入的特征串所包含的算法字符的个数确定普通匹配窗口长度和长匹配窗口长度,并为当前待匹配数据设置一个偏移值作为起始偏移值。
其中,通过机器字符与散列函数的转换,获得一个算法字符。
S122:根据起始偏移值为起点对当前待匹配数据进行偏移并定位,获取当前普通匹配窗口的数据。
S123:从当前普通匹配窗口的末端获取一个算法字符,用直接寻址的方式从位向量掩码表中获取位向量。
其中,如果在步骤S112中,已经对位向量掩码表进行了不等长分组,此时仅需要在获取的位向量的每个分组中,保留与最小分组位数相等的最低位,其余位清0。
S124:如果位向量中的所有有效位都为0,则改变偏移值,然后返回S122;否则,以位向量为特征串后缀匹配的初始向量,以当前读入的算法字符作为新的长匹配窗口的起点,在新的长匹配窗口的长度范围内,采用位并行方式对位向量进行即时更新,并对即时更新的位向量进行非零判断;其中,在位向量进行更新的过程中,如果位向量中所有有效位都为0,则将当前读入的算法字符位置设置为新的起始偏移值,结束位向量的更新,然后进入步骤S125;如果位向量的有效位不全为0且位向量的某一个分组的最高位为1,则匹配当前分组特征串的后缀,保留初始向量中相应的有效位。在后缀匹配结束后,在特征串后缀匹配的初始向量中保留所有发生过后缀命中的活动位,其余全部清0,然后将该值作为特征串前缀匹配的初始向量。
其中,在特征串的分组为不等长分组时,如果已经匹配后缀的特征串所属分组的长度小于等于后缀命中时在长匹配窗口中读入的算法字符的个数,则直接记录一次特征串完整命中的可能,可能会发生命中的特征串的末尾即是当前读入的算法字符。
需要说明的是,如果在长匹配窗口进行匹配时,如果出现位向量值有效位不全为0且分组最高位为1的情况,只是保留初始向量值中相应的有效活动位,不是立即进行命中确认。在长匹配窗口匹配结束后,即位向量值全为0或者长匹配窗口内字符全部读完时,将初始向量值中未被保留的活动位清除,然后再将清除后的初始向量值用于普通匹配窗口的匹配命中确认。
S125:如果特征串前缀匹配的初始向量的有效位不全为0,则在当前的起始偏移值所指向的普通匹配窗口中进行特征串匹配命中的确认。
其中,在当前的起始偏移值所指向的普通匹配窗口中进行匹配命中确认的过程中,依次从普通匹配窗口末端反向逐个获取算法字符,更新前缀匹配初始向量;如果更新后的位向量的某一个分组的最低位是1,则记录一次特征串匹配命中的可能,其中,可能会发生命中的特征串的起点即是当前读入的算法字符;
S126:如果在步骤S124中偏移值发生过改变,则返回S122,否则,即在特征串的后缀匹配过程中没有改变偏移值时,对偏移值进行重新定位,获取新的起始偏移值。获取偏移值的方法包括,以步骤S124更新后的后缀匹配向量作为对偏移值重新定位的初始向量,以长匹配窗口后面的第一个算法字符作为起点,依次正向获取算法字符,采用位并行方式进行向量即时更新,并对即时更新的位向量进行非零判断,如果位向量中所有有效位都为0,则将当前读入的算法字符位置设置为新的起始偏移值,返回S122;如果位向量的有效位不全为0且位向量的某一个分组的最高位为1,则记录一次特征串命中可能,可能会发生命中的特征串的末尾即是当前读入的算法字符。
S127:将记录的所有的可能匹配命中的位置进行逐个字符比较,进行最终的匹配确认。
其中,该确认过程可以在每次记录命中时立即执行,也可以在所有的可能会命中的记录被记录完成之后才执行。
从图1所示的流程示意图可以看出,本发明提供的海量特征串集合的匹配方法能够在同等空间和同等规则数量下,使过滤算法的通过率更低,进而具备能够容纳更多特征串的能力;在特征串的匹配效率方面,能够减少冗余校验,支持不等长的字符串匹配并且在匹配数据中采用大范围跳跃的方式快速查找特征串,从而使得在大量特征串匹配时,可以保持性能的稳定;在少量特征串匹配时也会有更高的执行效率。
为了更为清楚具体地说明本发明提供的海量特征串的匹配方法,下面将以示例的方式对图1的每个步骤作具体说明。
在步骤S111中,根据实际运行的硬件环境选定位向量掩码表B的空间大小。假设表B的空间大小是m*2n字节,那么n和m的取值有如下原则:
1)m*8不大于一个机器字长。m取值可以是8/8、16/8、32/8或64/8,即1、2、4、8。
2)m*2n不大于处理器缓存(三级缓存)。减少匹配过程中的内存交换次数以保证高效。以3MB的缓存为例说明。由于只能利用其中2n的整数倍,所以只能利用其中的2MB(221字节)。那么n的取值如下表1所示,有如下备选:
m取值 1 2 4 8
n取值 21 20 19 18
表1
后文也以2MB缓存为例,会引用此表的取值,通过计算比较,从备选当中选择最终的m、n取值。
在步骤S112中,由步骤S111可知,若将表B按位来划分列,共有m*8列。若干相邻列可被分为一组,每组列数等于允许容纳特征串的长度。通过对输入特征串长度进行分析、统计,进而将输入特征串进行分组,每组特征对应掩码表的一部分,这样利用位并行,可以同时对这些分组进行匹配。这样做有两方面的优点:
1)当输入中含有较短的特征时,不必将所有特征都按最短特征进行前缀截取,降低了算法的通过率;
2)有效的利用了位向量掩码表的空间,这样可以在同样的掩码表大小且保持通过率不变情况下,容纳更多的特征串。
如果给出每种分组方式的:分组数g、每组位长l1l2...lg、每组容纳的特征串数量r1r2...rg,以及掩码表B的相关参数,包括:列数m*8、行数2n、一次算法字符转换所需的机器字符数H,即可计算得到该分组方式下的过滤通过概率。这里通过率定义为:其中,Si是前i组的过滤通过率,当i=g时,Sg即整个分组的过滤通过率。S0=0,当i>=1且i<=g时,Si满足关系式:Si=Si-1+(1-Si-1)Ri
其中g表示分组数,Ri表示每一组内的过滤通过率:即前缀长度li,对应特征串数量为Ri,每一次向量更新后的命中概率(特征串和数据的内容均为随机数据)。Ri计算方法如下:设a=li-H+1,则Ri=(Pr)a/(Qr)a-1,其中Pr与Qr计算方法如下:其中,Pr表示特征串数量为r时,一个算法字符的匹配概率,与之相邻的算法字符匹配概率是Pr/Qr,k是算法字符规模,b是机器字符规模,即k=2n。Pr的计算方法有多种,这里只给出了一种。P0=0,易知当i>=1且i<=r时,Pi满足关系式:Pi=Pi-1+(1-Pi-1)/k。Qr与Pr计算方法相似。
对于给定的特征串集合,有多种分组方法,分组的关键在于给出最优分组的方法,即按照这种分组方法建立的位向量掩码表,通过率是最低的,这样能极大的发挥算法的过滤功能,提高匹配***的整体效率。理论上讲,通过穷举和比较即可得到最优分组。
设给定的特征串集合为P={p1,p2,…,pi,…,pw},pi表示集合中的每一个关键词,穷举集合P的所有分组共有2w-1种情况。w取值可以超过百万,因而我们无法穷举比较2w-1个取值。下面从每分组位长及容纳特征串数量两方面考虑,消减这个比较范围,以得到近似最优分组。
首先,穷举每分组位长,可以认为是求和为m*8的数字组合。我们已知,m*8的备选取值为8、16、32、64。我们从其中排除64,不仅仅因为求和为64的数字组合情况较多(约174万),还因为即使经过穷举和比较,总长是64的分组,最终也很难成为最优分组,过多计算量并不会换来实际效果。具体原因不在此详细描述。
获得分组位长之后,需要依此得到每个分组中包含的特征串数量。理论上讲,每个特征串,可以选择任何一个分组位长小于该特征串长度的分组。通常情况下,我们可以采用最简单的原则,即:选择分组位长不大于特征串长度,且最接近的。这样保留的前缀也越长,信息损失越小。
同时,信息损失程度也受该分组当前已容纳的特征串数量所影响,已经容纳的特征串越多,继续放入一个特征串的信息损失也越大。如果两个分组已容纳特征串的数量差距较大,且位长差距较小时,该方法无法获得理论的最优分组。
综上,按下面方法列举出备选分组:
1)分别穷举求和为8、16、32的数字组合,每种组合被视为一种分组方式;
2)从以上组合当中,删除最小数字仍大于最短特征串长度的数字组合。即,设数字组合为m1m2…mg,且m1≤m2…≤mg-1mg。如果m1大于最短特征串所包含的算法字符数,则说明这个分组是无效的。
3)为组合中的每个数字(分组)分配特征串数量。由最大的数字mg开始,特征串集合当中,所有长度不小于mg的,被分配到mg组中。特征串长度不小于mg-1且小于mg的被分配到mg-1组中。直至所有特征串都被分配完毕。
至此,备选分组列举完成,只需使用前面提到的方法对每种分组情况计算通过率,并进行比较,进而选出近似最优分组。
根据优化的分组自动构造位向量掩码表B。其中,假设分组数量为g,每组的位长分别为m1m2…mg,且m1≤m2…≤mg。那么,当某一个特征串长度大于等于mi,且小于mi+1时,这个特征串属于第i个分组。当某一个特征串长度大于mg时,那么这个特征串属于最后一个分组。在对表B进行赋值时,每个特征串会依据其所属分组,对相应位置的向量掩码进行赋值。
表B的赋值过程,和ShiftAnd算法相同。依次获取每个特征串中的算法字符,依据该算法字符值,找到表B中的相对应行,依据当前特征串的所属分组,以及当前算法字符在特征串中的位置,找到表B中的相应列,然后将该位置为1。
在步骤S113中,根据算法字符位长n确定散列算法,原则是尽量保留每个机器字符的低7位,溢出位通过一次位异或计算来消除。假设机器字符位长为8,如果n超过16,就表示必须使用3个机器字符通过散列算法得到一个算法字符,其中,有一些位信息是被浪费的。通常文本信息使用的ASCII范围是32-127,仅使用了8个位长之中的7个有效位。模式匹配主要应用于文本匹配领域,所以应尽可能保留每个机器字符的低7位。以n取值20为例,选取3个机器字符散列得到一个算法字符。设选取的字符分别是a、b、c。散列的公式为:((a)<<13^(b)<<6^(c))&(0xfffff)。
当n有不同取值时,可根据此原则得到不同的散列函数。
在步骤S121中,根据最短特征串长度确定窗口长度W,根据最长特征串长度确定长匹配窗口LW。这里特征串长度指输入最短特征串的算法字符个数。为了方便表述,后文中关于长度的表述,如果未经特殊说明,均按算法字符数表示。其中,图2示出了根据本发明实施例的散列函数由机器字符转换为算法字符的转换关系示意图。如图2所示,
假设最短特征串的机器字符个数是L,散列函数由机器字符数转为算法字符数的转换比是H/1,那么换算公式为:W←L-H+1。
如果在步骤S112中,对位向量掩码表B进行了等长的分组,那么W等于LW。如果进行了不等长分组,那么W小于LW。
设当前匹配数据的偏移值是q,q的初始偏移值是0。那么在步骤S122中,当前匹配数据根据起始偏移值为起点进行偏移并定位,获取当前匹配窗口的数据。也就是说,以当前匹配数据偏移q为起点,得到当前匹配窗口的数据。如果剩余未匹配的数据长度不足一个窗口,匹配结束,进入步骤S127做最终确认,否则执行步骤S123。
在步骤S123中,从当前匹配窗口的末端获取一个算法字符u,用直接寻址的方式从位向量掩码表B中获取位向量D。具体为:D←B[u]。
其中,如果在步骤S112中,已经对位向量掩码表B进行了不等长的分组,此时仅需要在位向量D的每个分组中,保留与最小分组位数相等的最低位,其余位清0;假设已经将16位长的向量掩码表分成了6和10两个分组,此时只需要保留位向量D中10分组的低6位。
在步骤S124中,如果位向量D中所有有效位都为0,表示字符u不是任何一个特征串的子串,也表示当前窗口中不包含任何一个特征串的前缀。此时改变匹配数据偏移值q,使其向前跳跃一个窗口长度W,即q←q+W,然后返回到S122继续执行。也就是说,在改变偏移值的过程中,偏移值为起始偏移值加上普通匹配窗口长度。
如果位向量D中的有效位不全为0,则以当前的向量D为初始向量,以当前读入的字符作为一个新的长匹配窗口的起点,在LW长度的数据范围内(如果剩余数据不足,则以剩余数据长度为准),进行类似ShiftAnd算法的向量更新。设t1...ti-1ti是从下一个窗口中依次获取的字符,DI是ShiftAnd算法的初始状态,Di是由第i个读入字符更新的向量,i不超过长匹配窗口长度LW,则向量更新公式如下:Di←((Di-1<<1)|DI)&B[ti]。
在位向量D每次更新时进行如下判定:
1)在读入字符u为起点的一个长匹配窗口内,是否包含任何一个特征串的后缀。判定方法和ShiftAnd算法的命中判定相似。设DF←10mr-1...10m2-110m1-1,如果DF&Di非0表示已经匹配后缀,为0表示没有匹配。
在不等长分组情况下,上面判定为真时,可能不仅仅是匹配了后缀,也有完整匹配的可能。此时需要判定当前命中的特征串所属分组的长度是否小于等于i(即判定命中特征串的长度是否小于等于i),如果是的话,此时不需要记录后缀,而是直接记录一次命中的可能。
匹配结束后,在初始向量D中保留所有发生过后缀命中的活动位,其余全部清0,赋值给向量BD。
整个过程有多种计算方法,不等长分组情况稍微复杂,多了一次判定,但原理与等长分组相同。下面列举一种等长分组时的伪代码,仅为表述以上步骤,并不表示是该方案的唯一实例:
2)向量更新的过程中,如果Di等于0,说明不会再出现命中。将匹配数据偏移值q设定为当前读入字符的下一个字符。
在步骤S125中,在经过步骤S124的执行后,如果BD的有效位全为0,则跳过步骤S125,直接进入步骤S126继续执行。若BD的有效位不全为0,则在当前偏移值q所指向的窗口中进行匹配命中的确认。确认的方法是:
a、依次从窗口末端反向逐个获取字符,更新向量BD,首先从倒数第2个字符开始。更新公式如下:BDi-1←(BDi>>1)&B[ti-1]
b、如果更新的过程中,位向量BD中的所有有效位为0,则结束该步骤的执行,进入步骤S126。
c、如果更新的过程中,位向量BD的某一个分组的最低位是1,则记录一次子串命中可能。可能会发生命中子串的起点,即是当前读入的字符。
在步骤S126中,如果在步骤S124中已经对偏移值q进行设置,则跳过S126步骤,返回步骤S122;如果在步骤S124中没有对偏移值q进行设置,此时需要让偏移值q重新定位。其中,重新定位的方法如下:
a、继续使用ShiftAnd的向量更新方法更新步骤S124结束时的向量Di,即:Di+1←((Di<<1)|DI)&B[ti+1];
b、如果在向量更新过程中,发现DF&Di!=0,则记录一次子串命中可能。当前读入的字符是可能发生命中特征串的后缀;
c、如果在向量更新过程中,发现向量Di中所有有效位都为0,将下一个字符的位置可以赋值给偏移值q,结束当前步骤的执行并回到步骤S122继续执行。
在步骤S127中,将上面所有步骤中记录可能命中的位置,逐字符比较确认。这个确认过程完全独立,不属本文讨论范畴,可以由开发者结合实际情况自行选择,例如采用RKBT等算法。这个步骤可以在上述所有步骤都完成后执行,也可以在每次记录命中时立即执行,对整体效果影响不大。至此,整个匹配过程完成。
其中,在步骤S124、S125和S126中,都充分利用位运算的内在并行性,包含一定程度的并行计算,保证安全跳跃与校验的同时,也兼顾后续的匹配以及识别继续进行跳跃查找的可能性,使整个计算过程不存在冗余,保证了性能的稳定性。考虑到预处理阶段,对位向量掩码表B进行了不等长分组的情况,将匹配窗口区分为普通匹配窗口和长匹配窗口两种,保证了安全跳跃,也保持了长字符串不易命中的优势,提升了过滤过程的效率。
具体地,本发明设计了两组实验,以说明本发明提供的海量特征串集合的匹配方法的匹配效率。其中,第一组实验完全加载等长的特征串,目的在于体现容纳字符串的能力。第二组产生随机数量的不等长特征串,目的在于体现采用不等长优化分组的优势。
实验一:表2示出了在使用2MB的位向量掩码表(由于目前中档的cpu例如inteli5有6MB的三级缓存,2MB可以适合大多数场景),匹配64KB长度的随机数据,特征串和匹配数据的ASCII取值范围都是0~127的情况下的特征串数量与通过次数的关系。如表2所示:
表2
当通过次数是0或者接近0时,过滤效率也等于是整体匹配效率。超过0时,性能下降幅度取决于校验算法实现。通常情况下,如果匹配64KB数据的通过次数不超过1000,都不会有明显的性能损失。从上面实验结果数据看,容纳长度不小于6的字符串,数量应该可以达到100万。
实验二:使用2MB的位向量掩码表,匹配64KB数据。生成随机数量的不等长特征串集合,每次生成的特征串集合都分别统计了等长分组和优化分组两种情况下的通过次数。
其中,等长分组情况下,每个特征串只能截取最短特征串长度的前缀,所以等长分组的通过率取决于最短特征串的长度。另外,由于特征串数量完全随机,所以实验所得的通过率也有一定随机行性,每项测试执行多次,数据仅为比较两种分组方式的效果。
其中,表3示出了特征串长度范围是4~10,每种长度的特征串数量不超过10万个的情况下,特征串总数与等长分组通过次数和优化分组通过次数的关系。如表3所示:
第一次 第一次 第一次 第一次 第五次
特征串总数 306302 226466 365270 399261 386271
等长分组通过次数 336 185 474 564 529
优化分组通过次数 43 20 40 104 110
表3
表4示出了特征串长度范围是4~16,每种长度的特征串数量不超过10万个的情况下,特征串总数与等长分组通过次数和优化分组通过次数的关系。如表4所示:
第一次 第一次 第一次 第一次 第五次
特征串总数 560349 741504 601793 515548 639082
等长分组通过次数 1087 1856 1247 926 139912 -->
优化分组通过次数 37 297 156 43 337
表4
表5示出了特征串长度范围是4~22,每种长度的特征串数量不超过10万个的情况下,特征串总数与等长分组通过次数和优化分组通过次数的关系。如表5所示:
第一次 第一次 第一次 第一次 第五次
特征串总数 944996 751712 785972 942869 789250
等长分组通过次数 2925 1904 2071 2912 2088
优化分组通过次数 209 203 302 422 201
表5
由实验二结果可知,最短串特征串数量,占总数的比例越小,优化分组的优势越明显。
通过实验一和实验二可以看出,本发明提供的匹配方法在匹配效率方面,具备BNDM/BG类算法的快速过滤能力。从原理上分析,过滤效果同样取决于特征串集合与待匹配数据之间的相似度,假设掩码表分组以及散列函数完全相同,本发明提供的匹配方法与BG算法或者BNDM类算法相比,在特征串数量较少或者特征串和匹配数据之间的相似度较低的情况下,具有相同的匹配效率。
其中,当特征串的规模达到一定程度时,BG算法的性能下降会很明显,但本发明方法提供的匹配方法不会低于ShiftAnd/Or类算法的扫描效率。另外,BG算法或者BNDM类算法在每次子串匹配时,必须根据特征串长度来进行跳转,所以BG算法或者BNDM类算法无法支持不等长分组,本发明算法可以支持不等长分组,有更低的过滤通过率。
另外本发明算法相比于BG算法或者BNDM类算法,有更高的计算并行性,更容易利用并行计算的特性对其进一步的改进的和优化,例如针对SSE指令集优化,或针对GPU开发等。
与上述方法相对应,本发明提供一种海量特征串集合的匹配***。图3示出了根据本发明实施例的海量特征串集合的匹配***的方框示意图。
如图3所示,本发明提供的海量特征串集合的匹配***包括特征串分组单元310和特征串匹配单元320。其中,特征分组单元310包括空间容量确定单元311、位向量掩码表建立单元312和散列函数确定单元313;特征串匹配单元320包括初始单元321、数据获取单元322、位向量获取单元323、匹配单元324、匹配命中单元325、偏移值获取单元326。
其中,空间容量确定单元311用于确定位向量掩码表的空间容量;位向量掩码表建立单元312用于根据对输入的特征串集合所包含的算法字符个数及特征串的数量的统计,对特征串进行分组,建立分组位向量掩码表;散列函数确定单元313用于根据算法字符的位长确定散列函数;
初始单元321用于根据输入的特征串所包含的算法字符的个数确定普通匹配窗口长度和长匹配窗口长度,并为当前待匹配数据设置一个偏移值作为起始偏移值,其中,通过机器字符与散列函数的转换获得算法字符;
数据获取单元322用于根据起始偏移值为起点对当前待匹配数据进行偏移并定位,获取当前普通匹配窗口的数据;
位向量获取单元323用于从当前普通匹配窗口的末端获取一个算法字符,用直接寻址的方式从掩码表中获取位向量;
匹配单元324用于特征串后缀匹配,当位向量中的所有有效位不全为0时,以位向量为初始向量,以当前读入的算法字符作为新的长匹配窗口的起点,在新的长匹配窗口的长度范围内,采用位并行方式对位向量进行即时更新,并对即时更新的位向量进行非零判断及特征串后缀命中确认;
具体地,当位向量中的所有有效位不全为0时,以位向量为初始向量,以当前读入的算法字符作为新的长匹配窗口的起点,在新的长匹配窗口的长度范围内,采用位并行方式对位向量进行即时更新,并对即时更新的位向量进行非零判断;其中,在位向量进行更新的过程中,如果位向量的有效位全为0,将当前读入的算法字符的位置作为新的起始偏移值,并结束更新;如果位向量的有效位不全为0且位向量的某一个分组的最高位为1,则已经匹配了当前分组特征串的后缀,保留初始向量中相应的有效位。
其中,在特征串的分组为不等长分组时,如果已经匹配后缀的特征串所属分组的长度小于等于后缀命中时在长匹配窗口中读入的算法字符的个数,则直接记录一次命中的可能,可能会发生命中的特征串的末尾即是当前读入的算法字符;
当位向量的更新过程结束时,如果特征串发生过后缀匹配,则仅保留初始向量中所有发生过后缀命中的活动位,其余全部清0,作为特征串前缀匹配的初始向量。
匹配命中单元325用于在匹配单元324命中了特征串后缀时,在当前的起始偏移值所指向的普通匹配窗口中进行特征串命中的确认;
偏移值获取单元326用于在匹配单元324匹配特征串后缀的过程中,当偏移值没有改变时,对偏移值进行重新定位,获取新的起始偏移值,并在偏移值重新定位的过程中,以位并行的方式同步进行特征串匹配。
本发明在预处理阶段首先根据实际的硬件环境确定位向量掩码表的空间大小,然后通过对特征串长度的统计进行优化分组,自动建立分组位向量掩码表,并根据算法字符的位长确认散列函数。
在特征匹配阶段,以跳跃的方式快速匹配子串,在定位子串后,以当前读入字符作为窗口起点,以特征串长度作为窗口长度,用位并行方式进行后缀匹配。利用计算机机器字位运算的内在并行性,同时计算得到上一个窗口中所有分组可能会命中的有效位,以及继续向前进行匹配的位向量。同时对即时更新的位向量做非零判断,也可以即时获取继续进行跳跃的起始偏移。
以位并行方式,继续跟踪后缀匹配以得到前缀线索。利用其并行性,一次向量更新可以跟踪所有线索。不同于BNDM,任何两个步骤都不会对相同的数据做冗余计算。其中,如果失去了进行安全快速跳跃的起始偏移,则以ShiftAnd/Or类算法的方式,继续向前获取匹配数据,更新位向量,同时对位向量做非零判断,即时获取能够安全跳跃的起始偏移。
另外,当位向量掩码表B中包含不等长分组时,区分普通匹配窗口和长匹配窗口。分别由最短特征串长度和最长特征串长度计算得到。其中,普通匹配窗口用于查找子串以及命中确认,保证跳跃的安全,不会出现漏报;长匹配窗口用于后缀匹配,减少过滤部分通过概率,以避免因过度校验带来的性能损失,同时借助于后缀匹配过程的并行性,长匹配窗口并没有比普通匹配窗口增加计算量。
通过本发明提供的海量特征串集合的匹配方法及***,可以对位向量掩码表进行不等长的分组,使匹配过程在相同资源条件下,能够容纳数量更多的特征串,并且具备基于子串的快速过滤能力,可以在数据中大范围跳跃查找,并且具有性能稳定的特点,能够在极端情况下仍能保持模式匹配的高效率。
如上参照附图以示例的方式描述了根据本发明的海量特征串集合的匹配方法及***。但是,本领域技术人员应当理解,对于上述本发明所提出的海量特征串集合的匹配方法及***,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。

Claims (5)

1.一种海量特征串集合的匹配方法,包括预处理阶段和特征串匹配阶段,其中,所述预处理阶段包括:
确定位向量掩码表的空间容量;
根据对输入的特征串集合所包含的算法字符个数及特征串的数量的统计,对所述特征串进行分组,建立分组位向量掩码表;
根据所述算法字符的位长确定散列函数;
所述特征串匹配阶段包括:
根据输入的特征串所包含的算法字符的个数确定普通匹配窗口长度和长匹配窗口长度,并为当前待匹配数据设置一个偏移值作为起始偏移值,其中,通过机器字符与所述散列函数的转换获得所述算法字符;
根据所述起始偏移值为起点对当前待匹配数据进行偏移并定位,获取当前普通匹配窗口的数据;
从所述当前普通匹配窗口的末端获取一个算法字符,用直接寻址的方式从所述位向量掩码表中获取位向量;其中,
如果所述位向量中的所有有效位不全为0,则以所述位向量为初始向量,以当前读入的算法字符作为新的长匹配窗口的起点,在所述新的长匹配窗口的长度范围内,采用位并行方式对所述位向量进行即时更新,并对即时更新的位向量进行非零判断;其中,在所述位向量进行更新的过程中,
如果所述位向量的有效位全为0,将当前读入的算法字符的位置作为新的起始偏移值,并结束更新;
如果所述位向量的有效位不全为0且所述位向量的某一个分组的最高位为1,则匹配当前分组特征串的后缀,保留初始向量中相应的有效位;其中,
在所述特征串的分组为不等长分组时,如果已经匹配后缀的特征串所属分组的长度小于等于后缀命中时在长匹配窗口中读入的算法字符的个数,则直接记录一次命中的可能,可能会发生命中的特征串的末尾即是当前读入的算法字符;
当所述位向量的更新过程结束时,如果所述特征串发生过后缀匹配,则仅保留初始向量中所有发生过后缀命中的活动位,其余全部清0,作为所述特征串前缀匹配的初始向量,在当前的起始偏移值所指向的普通匹配窗口中进行所述特征串匹配命中的确认;
如果在匹配所述特征串的后缀过程中,所述偏移值没有改变,则对所述偏移值进行重新定位,获取新的起始偏移值,并在所述偏移值重新定位的过程中,以位并行的方式同步进行特征串匹配。
2.如权利要求1所述的海量特征串集合的匹配方法,其中,在对所述特征串进行分组的过程中,
根据所述特征串的分组数、每组位长、每组所容纳的特征串的数量以及所述位向量掩码表的参数,获取每组的过滤通过率;
通过每组的过滤通过率获得每组分组方式的过滤通过率,将所有分组方式中过滤通过率最低的分组方式作为最终的分组方式对所述特征串进行分组。
3.如权利要求2所述的海量特征串集合的匹配方法,其中,通过下述等式获取每组分组方式的过滤通过率:
s g = &Sigma; i = 1 g ( 1 - s i - 1 ) * R i
其中,g表示分组数,Ri表示每一组内的过滤通过率,si是前i组的过滤通过率,当i=g时,sg表示每组分组方式的过滤通过率。
4.如权利要求1所述的海量特征串集合的匹配方法,其中,在当前的起始偏移值所指向的普通匹配窗口中进行匹配命中的确认的过程中,
依次从所述普通匹配窗口末端反向逐个获取算法字符,更新所述位向量;
如果更新后的所述位向量的某一个分组的最低位是1,则记录一次特征串匹配命中的可能,其中,可能会发生命中的特征串的起点即是当前读入的算法字符。
5.一种海量特征串集合的匹配***,包括特征串分组单元和特征串匹配单元:
其中,所述特征串分组单元包括:
空间容量确定单元,用于确定位向量掩码表的空间容量;
位向量掩码表建立单元,用于根据对输入的特征串集合所包含的算法字符个数及特征串的数量的统计,对所述特征串进行分组,建立分组位向量掩码表;
散列函数确定单元,用于根据所述算法字符的位长确定散列函数;
所述特征串匹配单元包括:
初始单元,用于根据输入的特征串所包含的算法字符的个数确定普通匹配窗口长度和长匹配窗口长度,并为当前待匹配数据设置一个偏移值作为起始偏移值,其中,通过机器字符与所述散列函数的转换获得所述算法字符;
数据获取单元,用于根据所述起始偏移值为起点对当前待匹配数据进行偏移并定位,获取当前普通匹配窗口的数据;
位向量获取单元,用于从所述当前普通匹配窗口的末端获取一个算法字符,用直接寻址的方式从所述掩码表中获取位向量;
匹配单元,用于当所述位向量中的所有有效位不全为0时,以所述位向量为初始向量,以当前读入的算法字符作为新的长匹配窗口的起点,在所述新的长匹配窗口的长度范围内,采用位并行方式对所述位向量进行即时更新,并对即时更新的位向量进行非零判断;其中,在所述位向量进行更新的过程中,
如果所述位向量的有效位全为0,将当前读入的算法字符的位置作为新的起始偏移值,并结束更新;
如果所述位向量的有效位不全为0且位向量的某一个分组的最高位为1,则已经匹配了当前分组特征串的后缀,保留初始向量中相应的有效位;其中,
在所述特征串的分组为不等长分组时,如果已经匹配后缀的特征串所属分组的长度小于等于后缀命中时在长匹配窗口中读入的算法字符的个数,则直接记录一次命中的可能,可能会发生命中的特征串的末尾即是当前读入的算法字符;
当所述位向量的更新过程结束时,如果所述特征串发生过后缀匹配,则仅保留初始向量中所有发生过后缀命中的活动位,其余全部清0,作为所述特征串前缀匹配的初始向量;
匹配命中单元,用于在匹配单元发生过后缀命中时,在当前的起始偏移值所指向的普通匹配窗口中进行所述特征串命中的确认;
偏移值获取单元,用于在匹配所述特征串的后缀过程中,当所述偏移值没有改变时,对所述偏移值进行重新定位,获取新的起始偏移值,并在偏移值重新定位的过程中,以位并行的方式同步进行特征串匹配。
CN201310363274.2A 2013-08-16 2013-08-16 海量特征串集合的匹配方法及*** Active CN103544208B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310363274.2A CN103544208B (zh) 2013-08-16 2013-08-16 海量特征串集合的匹配方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310363274.2A CN103544208B (zh) 2013-08-16 2013-08-16 海量特征串集合的匹配方法及***

Publications (2)

Publication Number Publication Date
CN103544208A CN103544208A (zh) 2014-01-29
CN103544208B true CN103544208B (zh) 2016-07-06

Family

ID=49967661

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310363274.2A Active CN103544208B (zh) 2013-08-16 2013-08-16 海量特征串集合的匹配方法及***

Country Status (1)

Country Link
CN (1) CN103544208B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3206200B1 (en) * 2014-10-08 2020-12-09 Nippon Telegraph and Telephone Corporation Device, method and program for detecting positions of partial character strings
CN104699747B (zh) * 2014-12-15 2017-10-31 宁波大学 一种基于高维数据过滤器的近似成员查询方法
CN106649217A (zh) * 2016-10-28 2017-05-10 东软集团股份有限公司 数据的匹配方法及装置
CN106599097B (zh) * 2016-11-24 2021-06-25 东软集团股份有限公司 海量特征串集合的匹配方法和装置
CN106776965B (zh) * 2016-12-05 2019-11-26 东软集团股份有限公司 特征串集合的分组方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101359325A (zh) * 2007-08-01 2009-02-04 北京启明星辰信息技术有限公司 一种快速内容分析的多关键词匹配方法
CN101398820A (zh) * 2007-09-24 2009-04-01 北京启明星辰信息技术有限公司 一种大规模关键词匹配方法
US8407245B2 (en) * 2010-11-24 2013-03-26 Microsoft Corporation Efficient string pattern matching for large pattern sets

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101359325A (zh) * 2007-08-01 2009-02-04 北京启明星辰信息技术有限公司 一种快速内容分析的多关键词匹配方法
CN101398820A (zh) * 2007-09-24 2009-04-01 北京启明星辰信息技术有限公司 一种大规模关键词匹配方法
US8407245B2 (en) * 2010-11-24 2013-03-26 Microsoft Corporation Efficient string pattern matching for large pattern sets

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
孙德才等.基于匹配区域特征的相似字符串匹配过滤算法.《计算机研究与发展》.2010, *

Also Published As

Publication number Publication date
CN103544208A (zh) 2014-01-29

Similar Documents

Publication Publication Date Title
CN103544208B (zh) 海量特征串集合的匹配方法及***
CN102253889B (zh) 一种回归测试中基于分布的测试用例优先级划分方法
Chikhi et al. Data structures to represent a set of k-long DNA sequences
JP5183155B2 (ja) 大量配列の一括検索方法及び検索システム
CN110719106B (zh) 一种基于节点分类排序的社交网络图压缩方法及***
US20220005546A1 (en) Non-redundant gene set clustering method and system, and electronic device
Jiang et al. Incremental evaluation of top-k combinatorial metric skyline query
US20110219143A1 (en) Path calculation order deciding method, program and calculating apparatus
Thachuk Indexing hypertext
JP4491480B2 (ja) インデクス構築方法、文書検索装置及びインデクス構築プログラム
CN100527134C (zh) 多模式搜寻的方法与***
Wei et al. A branch elimination-based efficient algorithm for large-scale multiple longest common subsequence problem
Kianfar et al. Optimum Search Schemes for approximate string matching using bidirectional FM-index
Huang et al. Truss-based structural diversity search in large graphs
CN112768081B (zh) 基于子图及节点的共调控生物网络模体发现方法及装置
Chang et al. A hash trie filter method for approximate string matching in genomic databases
CN114036345A (zh) 一种轨迹数据的处理方法、设备及存储介质
Jiang et al. Fast subgraph matching by dynamic graph editing
Jiang et al. Combined covariance model for non-coding RNA gene finding
JP7422367B2 (ja) 近似文字列照合方法及び該方法を実現するためのコンピュータプログラム
Li et al. An improved method for tree-based clone detection in web applications
Li et al. Study on reference-based FASTQ genome sequences compression
Huang et al. Mining Sequential Patterns in Data Stream
Prestwich et al. Partial symmetry breaking by local search in the group
Kumar et al. Multi-Row, Multi-Span Distant Supervision For Table+ Text Question

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant