一种支持逻辑组合状态更新的多模式内容匹配方法

文档序号:6383734阅读:211来源:国知局
专利名称:一种支持逻辑组合状态更新的多模式内容匹配方法
技术领域
本发明涉及一种支持逻辑组合高效状态更新的多模式内容匹配方法,属于计算机软件技术领域。具体地说,是 优化传统多模式匹配算法中对关键字逻辑组合以及模糊匹配的支持算法,提高内容匹配效率。此外,本发明还公开了这种即时状态更新算法的实现方法。
背景技术
多模式内容匹配算法现在在网络安全、大数据处理以及信息检索等领域被广泛使用,甚至是这些领域技术实现的基础核心算法。在使用这一算法的技术领域有两个特点一个特点就是处理数据量特别大,动则几十G甚至几个T ;另一个就是实时性要求很高,很小的延时增加都可能导致系统性能的严重降低。因此多模式内容匹配算法时间效率成为这些技术成败的关键点。尽可能的提高多模式内容匹配算法时间效率不仅仅可以极大的提高系统的性能优势,同时也可以极大的节省设备成本。随着技术的进步以及现在社会信息越来越复杂,对内容的查找匹配过滤往往需要通过多个模式串的逻辑组合,与、或、非以及“(”和“)”来实现更为复杂严格的表达逻辑。逻辑表达式的应用在算法中会引入两个新的影响算法时间效率的运算,一个是逻辑表达式中每个模式位匹配状态的更新;另一个是最终逻辑表达式的计算。现有的技术实现往往是在匹配的过程中,每当有一个模式串被匹配上后,更新每个包含有此模式串的逻辑组合的逻辑表达式中对应的模式位,如图I所示。然后在完成整个内容目标的过滤后,遍历所有逻辑组合,计算逻辑表达式的值,根据最后的计算值判断这个逻辑组合是否被匹配上了。可是在这个过程当中有很大一部分时间会被浪费掉。因为每一次对内容目标的匹配后,只有一部分逻辑组合会被匹配,遍历所有逻辑组合计算的过程中对那些没有模式串匹配的逻辑组合计算是没有必要的。尤其是当需要处理的逻辑组合数量很大的时候,比如几万。那么假设平均每次有模式串被匹配的逻辑组合的数量是1000,那么每次遍历,只有几百分之一的时间是必要的。解决这个问题的一个方法是引入一个可变数组,记录在对目标内容过滤过程当中有模式串被匹配的逻辑组合。这样在最后只需要对需要计算的逻辑组和进行计算。节省大量运行时间,极大的提高了系统性能。可是这个方法有个缺陷,就是每次有模式串被匹配的时候,需要遍历引入的可变数组,确认其所属的逻辑组合是不是在以前就已经被添加进来了。虽然在通常情况下这个时间相比现有技术中对所有逻辑组合遍历的时间小很多,但是当目标内容很大,而且模式串中标频率很高的时候。这个时间会迅速变大,甚至当逻辑组合数量不是很多的时候,所用的时间会比现有技术所需要的时间还要多。

发明内容
针对现有技术中的技术问题本发明的目的是提供一种在多模式匹配技术中高效的支持逻辑组合的算法,本发明的原理是当有模式串匹配的时候我们即时的计算包含此模式串的逻辑组合的逻辑表达式的值,从而极大的提高多模匹配的运算效率。本发明的主要内容为一种在多模式匹配技术中高效的支持逻辑组合的算法,它包括a.当有模式串匹配的时候,更新其对应的逻辑组合状态。b.计算逻辑表达式的值,并更新。本发明包含以下步骤a.当有一个模式串匹配,更新所有包含此模式串的逻辑组合; b.判断逻辑组合的逻辑表达式的值和对应状态位的值,这里对应状态位的值是还没有更新的值;c.判断是否需要再计算逻辑表达式的值,如需要则更新模式串对应状态位,如果不需要则跳过;d.计算逻辑组合逻辑表达式的值,并更新对应变量。图2是算法的流程图。为实现上述目的,本发明的解决方案是一种支持逻辑组合状态更新的多模式内容匹配方法,其步骤为I)将目标文本当前匹配窗口内的数据匹配所有模式串;2)当有某一模式串A匹配时,查找包含模式串A的逻辑组合对应的结构体变量;3)更新所述结构体变量中包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值;4)判断所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A状态更新前时该逻辑表达式值Hl 如果Hl为真,则计算该逻辑表达式中模式串A状态更新后时的逻辑表达式值H2,将Hl与H2进行比较,如果不一样,则从中标逻辑组合中删除包含模式串A的逻辑组合,然后继续对目标文本进行匹配,直到到达目标文本的末尾,如果一样,则继续对目标文本匹配,直到到达目标文本的末尾;如果Hl不为真,则计算该逻辑表达式中模式串A状态更新后时的逻辑表达式值H2,并更新结构体变量中记录对应逻辑表达式值H2的成员变量,如果H2为真,则在中标逻辑组合中添加包含模式串A的逻辑组合,然后继续对目标文本匹配,直到到达目标文本的末尾。一种支持逻辑组合状态更新的多模式内容匹配方法,其步骤为I)将目标文本当前匹配窗口内的数据匹配所有模式串;2)当有某一模式串A匹配时,查找包含模式串A的逻辑组合对应的结构体变量;3)判断所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值LI :如果LI为真,则然后继续对目标文本进行匹配,直到到达目标文本的末尾;如果LI不为真,则进行步骤4);4)更新所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值,并计算逻辑表达式的值H2 ;5)将逻辑表达式中模式串A对应状态比特位值更新前、后时的逻辑表达式值H1、H2进行比较,如果一样,则继续对目标文本匹配,直到到达目标文本的末尾;如果不一样,且更新前逻辑表达式值Hl为真,更新后逻辑表达式值H2不为真,则从中标逻辑组合中删除包含模式串A的逻辑组合,然后继续对目标文本进行匹配,直到到达目标文本的末尾;如果不一样,且更新前逻辑表达式值Hl不为真,更新后逻辑表达式值H2为真,则更新结构体变量中对应逻辑表达式值H2,在中标逻辑组合中添加包含模式串A的逻辑组合,然后继续对目标文本匹配,直到到达目标文本的末尾。一种支持逻辑组合状态更新的多模式内容匹配方法,其中,逻辑符号不需要支持非,其步骤为I)将目标文本当前匹配窗口内的数据匹配所有模式串;2)当有某一模式串A匹配时,查找包含模式串A的逻辑组合对应的结构体变量;3)判断所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式值Hl 如果Hl为真,则继续对目标文本进行匹配,直到到达目标文本的末尾;如果Hl不为真,则更新所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值,并计算逻辑表达式的值H2 ;更新逻辑表达式值,在中标逻辑组合中添加包含模式串A的逻辑组合,然后继续对目标文本匹配,直到到达目标文本的末尾。其中,上述方法中根据逻辑组合对应的状态比特数组即时计算逻辑表达式的值。本发明的优点和积极效果本发明的最大优点就是时间效率高,省略一切不必要的操作。这一点我们可以通过对比本发明方法与现有算法的推导得出,百分之九十九的不必要的状态更新的时间都可以节省下来。本方法没有多余的遍历过程,而且每个逻辑组合的逻辑表达式只计算一次。只有在少数含有非运算符的时候会计算两次。而且对比另外两种算法,本方法不需要中间变量,也不需要过多的参数传递,简化了具体实现,节省了内存空间。


图I是当有一个模式串匹配后对的状态更新;图2是算法步骤流程。具体实现方式具体实现I如下(101)对目标文本匹配所有模式串,直到到达匹配内容的末尾;(102)当有模式串匹配时,查找包含有此模式串的逻辑组合对应的结构体变量;(103)更新结构体变量记录的该逻辑组合对应的逻辑表达式中此模式串对应状态比特位的值;(104)判断结构体变量记录的该逻辑表达式状态更新前的值,为真的话进入步骤(105),不为真的话进入步骤(106);(105)根据新的状态比特数组计算逻辑表达式状态更新后的值,即当前值,和原有的逻辑表达式的值比较,不一样的话进入步骤(107),一样的话回到步骤(101),继续对后面的目标文本匹配;(106)根据新的状态比特数组计算逻辑表达式状态更新后的值,即当前值,更新结构体变量中记录对应逻辑表达式值的成员变量,如果为真的话在记录中标逻辑组合的变量中添加该逻辑组合,然后回到步骤(101),继续对后面的目标文本匹配;如果不为真,就不添加,直接返回步骤(101);(107)从记录中标逻辑组合的变量中删除该逻辑组合,然后回到步骤(101),继续对后面的目标文本匹配。具体实现2如下(201)对目标文本匹配所有模式串,直到到达匹配内容的末尾;(202)当有模式串匹配时,查找包含有此模式串的逻辑组合对应的结构体变量;(203)判断结构体变量记录的该逻辑组合对应的逻辑表达式中此模式串对 应状态比特位的值,为真的话回到步骤(201),为假的话进入步骤(204);(204)更新此模式串在该逻辑表达式中对应状态比特位的值,并根据新的状态比特数组计算逻辑表达式状态更新后的值;(205)对比该逻辑表达式原有的值和新计算的值,如果一样的话回到步骤(201),如果不一样的话,当原有的值为真新计算的值不为真的话进入步骤(206),当原有的值不为真新计算的值为真的话进入步骤(207);(206)从记录中标逻辑组合的变量中删除该逻辑组合,然后回到步骤(201),继续对后面的目标文本匹配;(207)如果更新后的值为真的话记录这个中标逻辑表达式,然后回到步骤(201)。如果更新后的值不为真,就不添加,直接返回步骤(201)。另外,如果逻辑符号不需要支持非的话,可以简化实现,进一步提高执行效率,具体如实现3。具体实现3如下(301)对目标文本匹配所有模式串,直到到达匹配内容的末尾;(302)当有模式串匹配时,查找包含有此模式串的逻辑组合对应的结构体变量。(303)判断结构体变量记录的该逻辑组合对应的逻辑表达式值,为真的话回到步骤(301),继续对后面的目标文本匹配,不为真的话进入步骤(304)。(304)更新结构体变量记录的该逻辑组合对应的逻辑表达式中此模式串对应状态比特位的值,根据新的状态比特数组计算逻辑表达式状态更新后的值,更新记录逻辑表达式的值,该值通过一变量记录,在记录中标逻辑组合的变量中添加该逻辑组合,然后回到步骤(301),继续对后面的目标文本匹配。
权利要求
1.一种支持逻辑组合状态更新的多模式内容匹配方法,其步骤为 1)将目标文本当前匹配窗口内的数据匹配所有模式串; 2)当有某一模式串A匹配时,查找包含模式串A的逻辑组合对应的结构体变量; 3)更新所述结构体变量中包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值; 4)判断所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A状态更新前时该逻辑表达式值Hl 如果Hl为真,则计算该逻辑表达式中模式串A状态更新后时的逻辑表达式值H2,将Hl与H2进行比较,如果不一样,则从中标逻辑组合中删除包含模式串A的逻辑组合,然后继续对目标文本进行匹配,直到到达目标文本的末尾,如果一样,则继续对目标文本匹配,直到到达目标文本的末尾; 如果Hl不为真,则计算该逻辑表达式中模式串A状态更新后时的逻辑表达式值H2,并更新结构体变量中对应逻辑表达式值H2,如果H2为真,则在中标逻辑组合中添加包含模式串A的逻辑组合,然后继续对目标文本匹配,直到到达目标文本的末尾。
2.如权利要求I所述的方法,其特征在于根据逻辑组合对应的状态比特数组即时计算 逻辑表达式的值。
3.一种支持逻辑组合状态更新的多模式内容匹配方法,其步骤为 1)将目标文本当前匹配窗口内的数据匹配所有模式串; 2)当有某一模式串A匹配时,查找包含模式串A的逻辑组合对应的结构体变量; 3)判断所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值LI :如果LI为真,则然后继续对目标文本进行匹配,直到到达目标文本的末尾;如果LI不为真,则进行步骤4); 4)更新所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值,并计算逻辑表达式的值H2 ; 5)将逻辑表达式中模式串A对应状态比特位值更新前、后时的逻辑表达式值H1、H2进行比较,如果一样,则继续对目标文本匹配,直到到达目标文本的末尾;如果不一样,且更新前逻辑表达式值Hl为真,更新后逻辑表达式值H2不为真,则从中标逻辑组合中删除包含模式串A的逻辑组合,然后继续对目标文本进行匹配,直到到达目标文本的末尾;如果不一样,且更新前逻辑表达式值Hl不为真,更新后逻辑表达式值H2为真,则更新结构体变量中记录对应逻辑表达式值H2,在中标逻辑组合中添加包含模式串A的逻辑组合,然后继续对目标文本匹配,直到到达目标文本的末尾。
4.如权利要求3所述的方法,其特征在于根据逻辑组合对应的状态比特数组即时计算逻辑表达式的值。
5.一种支持逻辑组合状态更新的多模式内容匹配方法,其中,逻辑符号不需要支持非,其步骤为 1)将目标文本当前匹配窗口内的数据匹配所有模式串; 2)当有某一模式串A匹配时,查找包含模式串A的逻辑组合对应的结构体变量; 3)判断所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式值Hl 如果Hl为真,则继续对目标文本进行匹配,直到到达目标文本的末尾;如果Hl不为真,则更新所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值,并计算逻辑表达式的值H2 ;更新逻辑表达式的值,在中标逻辑组合中添加包含模式串A的逻辑组合,然后继续对目标文本匹配,直到到达目标文本的末尾。
6.如权利要求5所述的方法,其特征在于根据逻辑组合对应的状态比特数组即时计算逻辑表达式的值。
全文摘要
本发明公开了一种支持逻辑组合状态更新的多模式内容匹配方法。本方法为1)将目标文本匹配所有模式串;2)当有某模式串A匹配时,查找包含A逻辑组合对应的结构体变量;3)更新结构体变量中A对应状态比特位的值;4)判断结构体变量中每一逻辑表达式中A状态更新前时该逻辑表达式值H1如果为真,则计算该逻辑表达式中A状态更新后时的逻辑表达式值H2,将H1与H2进行比较,如果不一样,则从中标逻辑组合中删除包含A的逻辑组合,然后继续对目标文本进行匹配,如果一样,则继续对目标文本匹配;如果H1不为真,则计算A状态更新后时的逻辑表达式值H2,如果为真,则在中标逻辑组合中添加包含A的逻辑组合,然后继续对目标文本匹配。
文档编号G06F17/30GK102968502SQ201210529868
公开日2013年3月13日 申请日期2012年12月10日 优先权日2012年12月10日
发明者原鹏 申请人:北京锐安科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1