CN102968502B - 一种支持逻辑组合状态更新的多模式内容匹配方法 - Google Patents
一种支持逻辑组合状态更新的多模式内容匹配方法 Download PDFInfo
- Publication number
- CN102968502B CN102968502B CN201210529868.1A CN201210529868A CN102968502B CN 102968502 B CN102968502 B CN 102968502B CN 201210529868 A CN201210529868 A CN 201210529868A CN 102968502 B CN102968502 B CN 102968502B
- Authority
- CN
- China
- Prior art keywords
- logical
- pattern string
- target text
- value
- logical combination
- 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
Links
Landscapes
- Document Processing Apparatus (AREA)
Abstract
本发明公开了一种支持逻辑组合状态更新的多模式内容匹配方法。本方法为:1)将目标文本匹配所有模式串;2)当有某模式串A匹配时,查找包含A逻辑组合对应的结构体变量;3)更新结构体变量中A对应状态比特位的值;4)判断结构体变量中每一逻辑表达式中A状态更新前时该逻辑表达式值H1:如果为真,则计算该逻辑表达式中A状态更新后时的逻辑表达式值H2,将H1与H2进行比较,如果不一样,则从中标逻辑组合中删除包含A的逻辑组合,然后继续对目标文本进行匹配,如果一样,则继续对目标文本匹配;如果H1不为真,则计算A状态更新后时的逻辑表达式值H2,如果为真,则在中标逻辑组合中添加包含A的逻辑组合,然后继续对目标文本匹配。
Description
技术领域
本发明涉及一种支持逻辑组合高效状态更新的多模式内容匹配方法,属于计算机软件技术领域。具体地说,是优化传统多模式匹配算法中对关键字逻辑组合以及模糊匹配的支持算法,提高内容匹配效率。此外,本发明还公开了这种即时状态更新算法的实现方法。
背景技术
多模式内容匹配算法现在在网络安全、大数据处理以及信息检索等领域被广泛使用,甚至是这些领域技术实现的基础核心算法。在使用这一算法的技术领域有两个特点:一个特点就是处理数据量特别大,动则几十G甚至几个T;另一个就是实时性要求很高,很小的延时增加都可能导致系统性能的严重降低。因此多模式内容匹配算法时间效率成为这些技术成败的关键点。尽可能的提高多模式内容匹配算法时间效率不仅仅可以极大的提高系统的性能优势,同时也可以极大的节省设备成本。
随着技术的进步以及现在社会信息越来越复杂,对内容的查找匹配过滤往往需要通过多个模式串的逻辑组合,与、或、非以及“(”和“)”来实现更为复杂严格的表达逻辑。逻辑表达式的应用在算法中会引入两个新的影响算法时间效率的运算,一个是逻辑表达式中每个模式位匹配状态的更新;另一个是最终逻辑表达式的计算。
现有的技术实现往往是在匹配的过程中,每当有一个模式串被匹配上后,更新每个包含有此模式串的逻辑组合的逻辑表达式中对应的模式位,如图1所示。
然后在完成整个内容目标的过滤后,遍历所有逻辑组合,计算逻辑表达式的值,根据最后的计算值判断这个逻辑组合是否被匹配上了。
可是在这个过程当中有很大一部分时间会被浪费掉。因为每一次对内容目标的匹配后,只有一部分逻辑组合会被匹配,遍历所有逻辑组合计算的过程中对那些没有模式串匹配的逻辑组合计算是没有必要的。尤其是当需要处理的逻辑组合数量很大的时候,比如几万。那么假设平均每次有模式串被匹配的逻辑组合的数量是1000,那么每次遍历,只有几百分之一的时间是必要的。
解决这个问题的一个方法是引入一个可变数组,记录在对目标内容过滤过程当中有模式串被匹配的逻辑组合。这样在最后只需要对需要计算的逻辑组和进行计算。节省大量运行时间,极大的提高了系统性能。可是这个方法有个缺陷,就是每次有模式串被匹配的时候,需要遍历引入的可变数组,确认其所属的逻辑组合是不是在以前就已经被添加进来了。虽然在通常情况下这个时间相比现有技术中对所有逻辑组合遍历的时间小很多,但是当目标内容很大,而且模式串中标频率很高的时候。这个时间会迅速变大,甚至当逻辑组合数量不是很多的时候,所用的时间会比现有技术所需要的时间还要多。
发明内容
针对现有技术中的技术问题:本发明的目的是提供一种在多模式匹配技术中高效的支持逻辑组合的算法,本发明的原理是当有模式串匹配的时候我们即时的计算包含此模式串的逻辑组合的逻辑表达式的值,从而极大的提高多模匹配的运算效率。
本发明的主要内容为:
一种在多模式匹配技术中高效的支持逻辑组合的算法,它包括:
a.当有模式串匹配的时候,更新其对应的逻辑组合状态。
b.计算逻辑表达式的值,并更新。
本发明包含以下步骤:
a.当有一个模式串匹配,更新所有包含此模式串的逻辑组合;
b.判断逻辑组合的逻辑表达式的值和对应状态位的值,这里对应状态位的值是还没有更新的值;
c.判断是否需要再计算逻辑表达式的值,如需要则更新模式串对应状态位,如果不需要则跳过;
d.计算逻辑组合逻辑表达式的值,并更新对应变量。
图2是算法的流程图。为实现上述目的,本发明的解决方案是:
一种支持逻辑组合状态更新的多模式内容匹配方法,其步骤为:
1)将目标文本当前匹配窗口内的数据匹配所有模式串;
2)当有某一模式串A匹配时,查找包含模式串A的逻辑组合对应的结构体变量;
3)更新所述结构体变量中包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值;
4)判断所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A状态更新前时该逻辑表达式值H1:
如果H1为真,则计算该逻辑表达式中模式串A状态更新后时的逻辑表达式值H2,将H1与H2进行比较,如果不一样,则从中标逻辑组合中删除包含模式串A的逻辑组合,然后继续对目标文本进行匹配,直到到达目标文本的末尾,如果一样,则继续对目标文本匹配,直到到达目标文本的末尾;
如果H1不为真,则计算该逻辑表达式中模式串A状态更新后时的逻辑表达式值H2,并更新结构体变量中记录对应逻辑表达式值H2的成员变量,如果H2为真,则在中标逻辑组合中添加包含模式串A的逻辑组合,然后继续对目标文本匹配,直到到达目标文本的末尾。
一种支持逻辑组合状态更新的多模式内容匹配方法,其步骤为:
1)将目标文本当前匹配窗口内的数据匹配所有模式串;
2)当有某一模式串A匹配时,查找包含模式串A的逻辑组合对应的结构体变量;
3)判断所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值L1:如果L1为真,则然后继续对目标文本进行匹配,直到到达目标文本的末尾;如果L1不为真,则进行步骤4);
4)更新所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值,并计算逻辑表达式的值H2;
5)将逻辑表达式中模式串A对应状态比特位值更新前、后时的逻辑表达式值H1、H2进行比较,如果一样,则继续对目标文本匹配,直到到达目标文本的末尾;如果不一样,且更新前逻辑表达式值H1为真,更新后逻辑表达式值H2不为真,则从中标逻辑组合中删除包含模式串A的逻辑组合,然后继续对目标文本进行匹配,直到到达目标文本的末尾;如果不一样,且更新前逻辑表达式值H1不为真,更新后逻辑表达式值H2为真,则更新结构体变量中对应逻辑表达式值H2,在中标逻辑组合中添加包含模式串A的逻辑组合,然后继续对目标文本匹配,直到到达目标文本的末尾。
一种支持逻辑组合状态更新的多模式内容匹配方法,其中,逻辑符号不需要支持非,其步骤为:
1)将目标文本当前匹配窗口内的数据匹配所有模式串;
2)当有某一模式串A匹配时,查找包含模式串A的逻辑组合对应的结构体变量;
3)判断所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式值H1:
如果H1为真,则继续对目标文本进行匹配,直到到达目标文本的末尾;
如果H1不为真,则更新所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值,并计算逻辑表达式的值H2;更新逻辑表达式值,在中标逻辑组合中添加包含模式串A的逻辑组合,然后继续对目标文本匹配,直到到达目标文本的末尾。
其中,上述方法中根据逻辑组合对应的状态比特数组即时计算逻辑表达式的值。
本发明的优点和积极效果:
本发明的最大优点就是时间效率高,省略一切不必要的操作。这一点我们可以通过对比本发明方法与现有算法的推导得出,百分之九十九的不必要的状态更新的时间都可以节省下来。本方法没有多余的遍历过程,而且每个逻辑组合的逻辑表达式只计算一次。只有在少数含有非运算符的时候会计算两次。而且对比另外两种算法,本方法不需要中间变量,也不需要过多的参数传递,简化了具体实现,节省了内存空间。
附图说明
图1是当有一个模式串匹配后对的状态更新;
图2是算法步骤流程。
具体实现方式
具体实现1如下:
(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),继续对后面的目标文本匹配。
Claims (3)
1.一种支持逻辑组合状态更新的多模式内容匹配方法,其步骤为:
1)将目标文本当前匹配窗口内的数据匹配所有模式串;
2)当有某一模式串A匹配时,查找包含模式串A的逻辑组合对应的结构体变量;
3)更新所述结构体变量中包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值;
4)判断所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A状态更新前时该逻辑表达式值H1:
如果H1为真,则根据状态比特数组计算该逻辑表达式中模式串A状态更新后时的逻辑表达式值H2,将H1与H2进行比较,如果不一样,则从中标逻辑组合中删除包含模式串A的逻辑组合,然后继续对目标文本进行匹配,直到到达目标文本的末尾,如果一样,则继续对目标文本匹配,直到到达目标文本的末尾;
如果H1不为真,则根据状态比特数组计算该逻辑表达式中模式串A状态更新后时的逻辑表达式值H2,并更新结构体变量中对应逻辑表达式值H2,如果H2为真,则在中标逻辑组合中添加包含模式串A的逻辑组合,然后继续对目标文本匹配,直到到达目标文本的末尾。
2.一种支持逻辑组合状态更新的多模式内容匹配方法,其步骤为:
1)将目标文本当前匹配窗口内的数据匹配所有模式串;
2)当有某一模式串A匹配时,查找包含模式串A的逻辑组合对应的结构体变量;
3)判断所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值L1:如果L1为真,则然后继续对目标文本进行匹配,直到到达目标文本的末尾;如果L1不为真,则进行步骤4);
4)更新所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值,并根据状态比特数组计算该逻辑表达式中模式串A状态更新后的逻辑表达式值H2;
5)将逻辑表达式中模式串A对应状态比特位值更新前、后时的逻辑表达式值H1、H2进行比较,如果一样,则继续对目标文本匹配,直到到达目标文本的末尾;如果不一样,且更新前逻辑表达式值H1为真,更新后逻辑表达式值H2不为真,则从中标逻辑组合中删除包含模式串A的逻辑组合,然后继续对目标文本进行匹配,直到到达目标文本的末尾;如果不一样,且更新前逻辑表达式值H1不为真,更新后逻辑表达式值H2为真,则更新结构体变量中记录对应逻辑表达式值H2,在中标逻辑组合中添加包含模式串A的逻辑组合,然后继续对目标文本匹配,直到到达目标文本的末尾。
3.一种支持逻辑组合状态更新的多模式内容匹配方法,其中,逻辑符号不需要支持非,其步骤为:
1)将目标文本当前匹配窗口内的数据匹配所有模式串;
2)当有某一模式串A匹配时,查找包含模式串A的逻辑组合对应的结构体变量;
3)判断所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式值H1:
如果H1为真,则继续对目标文本进行匹配,直到到达目标文本的末尾;
如果H1不为真,则更新所述结构体变量中每一包含模式串A逻辑组合的逻辑表达式中模式串A对应状态比特位的值,并根据状态比特数组计算该逻辑表达式中模式串A状态更新后的逻辑表达式值H2;更新逻辑表达式的值,在中标逻辑组合中添加包含模式串A的逻辑组合,然后继续对目标文本匹配,直到到达目标文本的末尾。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210529868.1A CN102968502B (zh) | 2012-12-10 | 2012-12-10 | 一种支持逻辑组合状态更新的多模式内容匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210529868.1A CN102968502B (zh) | 2012-12-10 | 2012-12-10 | 一种支持逻辑组合状态更新的多模式内容匹配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102968502A CN102968502A (zh) | 2013-03-13 |
CN102968502B true CN102968502B (zh) | 2016-04-20 |
Family
ID=47798640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210529868.1A Active CN102968502B (zh) | 2012-12-10 | 2012-12-10 | 一种支持逻辑组合状态更新的多模式内容匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102968502B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188113B (zh) * | 2019-05-09 | 2022-05-13 | 厦门市美亚柏科信息股份有限公司 | 一种利用复杂表达式进行数据比对的方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158948A (zh) * | 2006-10-08 | 2008-04-09 | 中国科学院软件研究所 | 文本内容过滤方法和系统 |
CN101359325A (zh) * | 2007-08-01 | 2009-02-04 | 北京启明星辰信息技术有限公司 | 一种快速内容分析的多关键词匹配方法 |
CN102801617A (zh) * | 2012-08-06 | 2012-11-28 | 北京锐安科技有限公司 | 一种基于硬件cam芯片的高效能网络数据包过滤方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101296114B (zh) * | 2007-04-29 | 2011-04-20 | 国际商业机器公司 | 基于流的并行模式匹配方法和系统 |
-
2012
- 2012-12-10 CN CN201210529868.1A patent/CN102968502B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158948A (zh) * | 2006-10-08 | 2008-04-09 | 中国科学院软件研究所 | 文本内容过滤方法和系统 |
CN101359325A (zh) * | 2007-08-01 | 2009-02-04 | 北京启明星辰信息技术有限公司 | 一种快速内容分析的多关键词匹配方法 |
CN102801617A (zh) * | 2012-08-06 | 2012-11-28 | 北京锐安科技有限公司 | 一种基于硬件cam芯片的高效能网络数据包过滤方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102968502A (zh) | 2013-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107885499A (zh) | 一种接口文档生成方法及终端设备 | |
CN102148805B (zh) | 特征匹配方法和装置 | |
US20140358895A1 (en) | Eigenvalue-based data query | |
CN102870116B (zh) | 内容匹配方法和装置 | |
CN102693317B (zh) | 数据挖掘流程生成方法及装置 | |
CN112597153B (zh) | 一种基于区块链的数据存储方法、装置及存储介质 | |
CN107870728A (zh) | 用于移动数据的方法和设备 | |
CN104246759A (zh) | 应用程序接口测试服务 | |
CN102760143A (zh) | 一种在数据库系统中动态整合执行结构的方法和装置 | |
CN112035841B (zh) | 一种基于专家规则与序列化建模的智能合约漏洞检测方法 | |
CN105183388A (zh) | 一种硬盘物理序列号的获取方法、装置以及系统 | |
CN110780879B (zh) | 一种基于智能编译技术的决策执行方法、装置、设备及介质 | |
CN105574032A (zh) | 规则匹配运算方法及装置 | |
CN105447021A (zh) | 用于数据库查询的方法和系统 | |
CN107977504A (zh) | 一种非对称堆芯燃料管理计算方法、装置及终端设备 | |
CN103136244A (zh) | 基于云计算平台的并行数据挖掘方法及系统 | |
CN104317850A (zh) | 数据处理方法和装置 | |
CN103140839B (zh) | 在能够进行高速缓存的存储装置上进行高效顺序记录的系统和方法 | |
CN110633318A (zh) | 一种数据提取的处理方法、装置、设备和存储介质 | |
CN102968502B (zh) | 一种支持逻辑组合状态更新的多模式内容匹配方法 | |
CN116911240B (zh) | 电子自动化设计软件的命令配置方法、装置、设备及介质 | |
CN102467537B (zh) | 删除词汇的方法和装置 | |
CN102314215B (zh) | 集成电路系统中小数乘法器的低功耗优化方法 | |
CN115641009B (zh) | 基于专利异构信息网络挖掘竞争者的方法及装置 | |
CN100426219C (zh) | 一种集成电路中的数据运算方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |