CN101398820B - 一种大规模关键词匹配方法 - Google Patents
一种大规模关键词匹配方法 Download PDFInfo
- Publication number
- CN101398820B CN101398820B CN200710122231XA CN200710122231A CN101398820B CN 101398820 B CN101398820 B CN 101398820B CN 200710122231X A CN200710122231X A CN 200710122231XA CN 200710122231 A CN200710122231 A CN 200710122231A CN 101398820 B CN101398820 B CN 101398820B
- Authority
- CN
- China
- Prior art keywords
- keyword
- string
- text
- hash
- bloom filters
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种大规模关键词匹配方法。包括预处理阶段和模式匹配阶段。预处理阶段包括关键词特征串裁剪、基于关键词特征串集合的多个简单布隆过滤器(Bloom Filter)的构造,基于关键词特征串集合的哈希表构造;模式匹配阶段包括:利用先前构造的简单布隆过滤器序列实现当前窗口中文本串不与任何关键词特征串匹配的快速判定;在判定失败情况下执行与候选关键词的精确匹配;文本扫描过程中,可以利用递归算法快速计算出当前文本相对于各简单布隆过滤器的当前散列值。本发明充分利用了待匹配文本与关键词匹配成功概率异常低的特点,利用了递归散列算法高效的特点,可实现大规模关键词场景下的高速匹配,非常适合病毒检测等在线病毒扫描应用。
Description
技术领域
本发明涉及计算机内容分析技术领域,具体涉及一种快速内容分析的多关键词匹配方法。
背景技术
多关键词匹配(Multiple Pattern String Matching)解决的问题是快速判断某一数据块中是否包含关键词集合中的某一或某些关键词。多关键词匹配技术广泛应用于文本处理、网络内容分析、入侵检测、信息检索和病毒检测等领域。
传统多关键词匹配方法包括文献[A.V.Aho,M.J.Corasick.EfficientString Matching:An Aid to Bibliographic Search,(中文名称:一种用于目录搜索的高效的字符串匹配方法)Communications of the ACM,1975,18(6):333-340]、文献[S.Wu,U.Manber.A Fast Algorithm For Multi-Pattern Searching(中文名称:一种快速的多模式匹配算法).TechnicalReport TR-94-17,University of Arizona.1994:1-11]和文献[K.G.Anagnostakis,S.Antonatos,M.Polychronakis,and E.P.Markatos.:A domain-specific string matching algorithm for intrusion detection(中文名称:一种领域相关的为入侵检测设计得多模式匹配算法).In Proceedings of IFIPIntemational Information Security Conference(SEC′03),May 2003]等。这些文献涉及的多关键词匹配方法都存在一个理想的应用条件,比如,Aho-Corasick方法的最佳应用条件为小规模关键词场合,Wu-Manber的最佳应用条件为中等规模关键词应用场合,E2XB的最佳应用为入侵检测场合。这些多关键词匹配方法在大规模关键词应用场合下效果并不理想,并不适合实时病毒检测类应用场合。实时病毒检测类应用场合下的多关键词匹配具有如下特点:1)关键词数量非常大,一般在6万到20万条左右;2)关键词长度一般比较大,最小为8字节;3)待检测文本长度较大,从几千字节到几兆字节不等;4)待检测文本与任何关键词匹配的成功概率异常低。
文献[Erdogan,O.;Pei Cao,Hash-AV:fast virus signature scanning bycache-resident filters(中文名称:HASH-AV:一种采用缓存驻留过滤器的快速病毒特征扫描方法),Global Telecommunications Conference,2005.GLOBECOM apos;05.IEEE Volume 3,Issue,28 Nov.-2 Dec.2005 Page(s):6pp.]给出了一种针对病毒检测类应用场合多关键词匹配特点而设计的多关键词匹配方法:HASH-AV,它构建一个可容纳于现代CPU高速缓存中的布隆过滤器(Bloom Filter),并巧妙设计了一组布隆过滤器散列函数,通过依次调用该组散列函数来实现当前窗口中文本串不与任一关键词匹配的快速判定。由于病毒检查等应用场合下,文本数据流与任一关键词匹配的概率异常低,绝大多数情况下这种基于布隆过滤器的快速判定都是成功的,绝大多数时候并不需要执行代价昂贵的全关键词比较操作。与其它关键词匹配方法相比,该关键词匹配方法更多地考虑了病毒检测领域独有的特性,在病毒检测应用场合表现出了较好的扫描速率。利用布隆过滤器在判定某一元素是否属于指定元素集合时不存在漏报,但是可能存在误报,特别在布隆过滤器表示的元素集合较大时误报率更大。理论上来说,可以通过增大布隆过滤器的位串大小来降低误报,但是实际上很难达到效果,因为实际情况中构造的布隆过滤器散列函数并不具有较好的随机性。HASH-AV方法采用一个布隆过滤器来表示所要查找的关键词集合,我们在实验中发现,当HASH-AV中查找的关键词集合大于10万时,基于单一布隆过滤器执行当前文本不与任何关键词匹配判定的误报率较高,这直接影响了HASH-AV的关键词匹配效率;同时,在每次文本匹配窗口移动后,HASH-AV方法需要基于当前文本重新执行各布隆过滤器散列函数,而没有考虑当前文本串与上一窗口中文本串大部分相同这个特点。
发明内容
本发明目的是克服现有技术的上述缺点,提供一种适合于实时病毒检测场合的大规模关键词匹配方法,它利用多个简单布隆过滤器实现当前窗口中文本不与任何关键词匹配的快速判定,使用递归散列函数改善各布隆过滤器的检索效率。
本发明的目的是通过以下技术方案实现的:
一种大规模关键词匹配方法,包括预处理阶段和模式匹配阶段,其中,
A)所述预处理阶段包括以下步骤:
A1、根据设定的关键词特征串长度,对关键词集合中各关键词进行特征串抽取,构成关键词特征串集合;
A2、构造多个包含唯一散列函数且该散列函数支持递归运算的简单布隆过滤器,将步骤A1所得到的关键词特征串集合同时映射到多个简单布隆过滤器中;
A3、构造一个哈希表,将关键词特征串集合映射到哈希表各单元中,对于具有哈希值冲突的元素,用链表方式串接起来;
A4、构建一个包含所有原始关键词的线性表,在步骤A3中建立的关键词特征串哈希表项中包含对应原始关键词的索引号;
B)所述模式匹配阶段包括以下步骤:
B1、设置一个与关键词特征串等长度的文本匹配窗口,首先将文本匹配窗口与待匹配文本左对齐;
B2、以当前文本匹配窗口中文本串为输入,依次使用各简单布隆过滤器及相关散列函数,实现当前文本串不与任何关键词特征串匹配的快速判定:如果基于某一简单布隆过滤器成功实现对当前文本串的快速排除判定,则直接跳跃到步骤B5执行;如果基于当前简单布隆过滤器的排除判定失败,则继续使用下一个简单布隆过滤器;如果所有简单布隆过滤器都执行排除判定失败,则进入步骤B3;
B3、依据文本匹配窗口中文本串检索关键词特征串哈希表,如果找到匹配的关键词特征串表项,则执行步骤B4;如果未找到任何匹配表项,则直接跳跃到步骤B5执行;
B4、根据关键词特征串表项中的索引号从原始关键词线性表读取对应的原始关键词,并与当前匹配窗口处文本串进行全长度字符串比较,如果匹配成功则报告一个成功的关键词匹配事件;最后,不管匹配成功与失败,都继续执行步骤B5;
B5、将当前文本匹配窗口向右移动1字节,并跳跃到步骤B2继续执行,直至整个文本扫描结束。
优选地,所述的大规模关键词匹配方法,其预处理阶段A的步骤A1为:对于原始关键词集合中各关键词,抽取的关键词特征串为整个关键词集合中出现次数最少的关键词子串。
优选地,所述的大规模关键词匹配方法,其预处理阶段A的步骤A2中构造的简单布隆过滤器只包含一个散列函数,该散列函数基于可递归运算的罗宾指纹多项式模算法构建。
优选地,所述的大规模关键词匹配方法,其预处理阶段A的步骤A3构造关键词特征串哈希表时,选择的哈希表散列函数是步骤A2中构造的多个简单布隆过滤器中最后一个布隆过滤器的散列函数。
由以上本发明提供的技术方案可以看出,本发明对关键词集合中各关键词进行特征串抽取后,基于关键词特征串集合构建了多个简单布隆过滤器,以实现文本扫描过程中当前文本不与任何关键词特征串匹配的快速判定,有效地降低了单个布隆过滤器导致的判定误报率高的问题,同时,本发明方法考虑了文本匹配过程中当前文本串与上一窗口中文本串大部分相同的特点,使用递归散列函数改善各布隆过滤器的检索效率,从而大大提高本发明方法所述的大规模关键词匹配效率。同等试验条件下,本发明方法在不同规模关键词场合下均比HASH-AV方法快,特别在大规模长关键词场合下,本发明方法的文本扫描速度比HASH-AV快0.7倍。本发明方法非常适合于在线实时入侵检测和病毒检测等应用场合。
附图说明
图1为将一个元素***到布隆过滤器数据结构的过程;
图2为判定某元素是否属于布隆过滤器所表示集合的过程;
图3为本发明方法的预处理阶段工作流程图;
图4是本发明方法的模式匹配阶段的文本扫描实现流程图。
具体实施方式
为使本领域的普通技术人员能够充分理解本发明,这里先介绍本发明中使用的一个重要数据结构-布隆过滤器。
布隆过滤器(Bloom Filter)是一个压缩的数据结构,用来表示一个集合中所有元素,并支持对该集合中元素的查找,即可以回答“某个元素是否属于某个集合?”的问题。
布隆过滤器使用长度为m的位串(bit Vector)V来表达数据元素集合A={a1,a2,...an}。设有k个具有均匀分布特性的散列函数{hi},i=1,...,k,满足如下条件:x∈A,hi(x)∈{1,2,...,m},基于布隆过滤器的集合元素表示法和集合元素查找法如下:
集合元素表示方法:对于集合中任一元素ai,使用预先定义的k个散列函数依次对ai进行哈希,得到k个散列值{b1,b2,...bk},bi∈[1..m],然后依次将位串V的b1,b2,...bk位置1。附图1示例了将一个元素***到布隆过滤器的过程(k=3)。
集合元素查找方法:当需要判定某一元素a是否属于布隆过滤器表示的集合时,方法如下:1)使用预先定义的k个散列函数依次对元素a进行散列运算,得到k个散列值{b1,b2,...bk},bi∈[1..m];然后判断位串V的b1,b2,...bk位置上是否都为1,如果都为1,则表示该元素在集合中,否则表示不在集合中。附图2示例了基于布隆过滤器的集合元素查找过程(即归属判定过程)。
基于布隆过滤器实现集合元素查找时可能存在误报,但是,可以通过控制位串V的长度m来将误报率控制在可接受的范围之内。
本发明方法包括预处理阶段和模式匹配阶段。下面结合附图详细说明本发明方法各个阶段的具体实施步骤。
在预处理阶段,本发明方法需要对原始关键词集合进行预处理,并生成几个关键的数据结构,以辅助模式匹配阶段的文本扫描过程。
如附图3所示,本发明方法预处理阶段的实施步骤如下:
步骤301、根据设定的关键词特征串长度,对关键词集合中各关键词进行特征串抽取;
步骤302、构造多个包含唯一散列函数且散列函数可递归计算的简单布隆过滤器组,将抽取的所有关键词特征串映射到所有布隆过滤器中;
步骤303、构造一个哈希表,将抽取的所有关键词特征串映射到哈希表各单元中,对于具有哈希值冲突的元素,用链表方式串接起来;
步骤304、构建一个包含所有原始关键词的线性表,在步骤303中建立的关键词特征串哈希表项中包含对应原始关键词的索引号。
实施例1:
假设有K个需要搜寻的原始关键词,表示为P={P1,P2,...,Pk}。在实际应用场合中,需要搜寻的原始关键词长度是不相等的。为便于实现多个关键词的并行匹配,本发明需要对所有关键词进行等长度裁剪,即选择一个关键词子串长度值W,对集合P中每个原始关键词Pi,将其裁剪为W字节长度的关键词子串Mi。这个裁剪出的W字节长度的关键词子串Mi称为原始关键词的关键词特征串。由抽取的各关键词特征串Mi组成的集合为关键词特征串集合M。注意,在选择关键词特征串长度时,W值大小不能大于原始关键词集合中最短关键词的长度。最简单的裁剪方法为取每个关键词的W字节前缀或后缀作为原始关键词的关键词特征串。
关键词特征串集合M构建完毕后,需要构造K个简单布隆过滤器,并将关键词特征串集合M映射到这K个简单布隆过滤器中。
本发明基于上面描述的公知的布隆过滤器构造方法构造用于表示关键词特征串集合M的每个简单布隆过滤器:
a)设置一个长度为v的位串V,并为该布隆过滤器选定唯一的一个散列函数H1;该散列函数H1必须支持递归计算,即当前窗口文本串titi+1...ti+m-1的散列值H1(titi+1...ti+m-1)可由前一窗口中文本串ti-1ti...ti+m-2的散列值H1(ti-1ti...ti+m-2)经过修正得到;
b)对于关键词特征串集合M中各元素Mi,调用简单布隆过滤器的散列函数H1,将布隆过滤器位串V中对应散列函数值位置处的比特位置1。
在实施本发明方法过程中,在为每个简单布隆过滤器选择的散列函数必须是支持递归运算的,可用于本发明的支持递归运算的散列函数包括加法操作、逻辑异或操作和罗宾指纹多项式模算法。需要注意的是,为每个简单布隆过滤器选择的支持递归运算的散列函数必须是不同的,否则无法实现各简单过滤器当前文本串匹配任一关键词特征串独立的快速排除判定。
为实现文本窗口中文本串与候选的关键词特征串子集进行精确匹配,本发明为关键词特征串集合M构造了一个哈希表。为了使得构造的哈希表具有较好的平衡性,建议为本哈希表构造一个均匀性较好的散列函数H,且该散列函数H应具有较高的计算效率,以减少哈希表的检索开销。对于关键词特征串集合M中具有散列值冲突的关键词特征串,本发明采用链表方式将它们串接起来,并将链表中元素按字典升序排列。
本发明还需要构建一个包含原始关键词集合P中各关键词的线性表L,以便于文本匹配窗口中文本串与某一关键词特征串匹配成功后,能够读取与该关键词特征串对应的原始关键词进行全长度的精确匹配,从而得到最后的关键词匹配结果。为使得在文本窗口中文本串与某一关键词特征串匹配成功后能够快速找到相关的原始关键词,本发明前面建立的关键词特征串哈希表项中包含了对应原始关键词的索引号。
在模式匹配阶段,本发明将基于预处理阶段构建的数据结构实现对待检测文本的快速扫描。为了使本技术领域的人员更好地理解本发明,下面结合附图4详细介绍本发明涉及的模式匹配过程。包括以下步骤:
步骤401、设置文本匹配窗口宽度为W字节,其中,W为关键词特征串长度,将文本匹配窗口与待匹配文本左对齐;
步骤402:依次使用各简单布隆过滤器实现当前文本串不与任何关键词特征串的快速判定,即以当前文本窗口中文本串(长度为W字节)为输入,以及上一次的散列函数值,利用简单布隆过滤器中散列函数的递归性质,修正得到当前散列值H1,并检查该简单布隆过滤器位串中对应比特位的值:如果该比特位值为0,则直接跳跃到步骤405执行;如果该比特位为1,使用下一个简单布隆过滤器实现当前文本串不与任何关键词特征串匹配的快速判定;如果所有简单布隆过滤器都无法成功实现当前文本串不与任何关键词特征串的快速判定,则表示该文本串可能与某一关键词特征串匹配,则继续执行步骤403。
步骤403:基于关键词特征串哈希表中的散列函数H,对当前文本窗口中文本串进行散列运算,根据散列值定位某一关键词特征串子链,并将当前窗口中文本串与子链中各关键词特征串进行精确匹配:如果与某关键词特征串匹配成功,则继续执行步骤404;如果未与子链中任何关键词特征串匹配成功,则直接跳跃到步骤405执行。
步骤404:从找到的关键词特征串表项中取出原始关键词索引号,从原始关键词线性表中加载对应的原始关键词,将其与当前文本匹配窗口位置处文本串进行基于字符比较的全匹配,如果匹配成功,则报告一个成功的原始关键词匹配事件;最后,不管匹配是否成功,都继续执行步骤405。
步骤405:将当前文本匹配窗口向右移动1字节,并跳跃到步骤402继续执行,直至整个待检测文本扫描结束。
在实施本发明时,本发明所述的预处理阶段A的步骤A1可以采用如下的优选实施方式:对于关键词集合P={P1,P2,...,Pk}中每一关键词Pi,抽取的关键词特征串Mi为整个关键词集合中出现次数最少的关键词子串。
可以采用如下方法使得抽取的关键词特征串Mi为整个关键词集合中出现次数最少的关键词子串:
a)建立一个哈希表,用于存放所有可能的长度为W的关键词子串;
b)对于任一长度为ni的原始关键词Pi,可以分割出(ni-W)个长度为W的关键词子串,对于每个分割出的关键词子串,首先判断其是否已出现在关键词子串哈希表中:如果不在哈希表中,则创建新的关键词子串表项,并将计数器值设置为1;如果相关关键词表项出现在哈希表中,则将对应表项的计数器值加1;
c)当原始关键词集合中所有关键词按步骤b)处理结束后,开始为每个原始关键词选择出现次数最少的关键词子串,具体过程为:对于任一长度为ni的原始关键词Pi,检索关键词子串哈希表,分别统计其(ni-W)个长度为W字节的关键词子串的计数值,选这(ni-W)个关键词子串中计数值最小者为本原始关键词Pi的关键词特征串。
在优选实施本发明时,预处理阶段的步骤A2中构造多个用于表示关键词特征串集合的简单布隆过滤器时,为各简单布隆过滤器选择的散列函数为罗宾指纹多项式模算法,它可以递归方式基于上一文本窗口中文本串对应的散列值计算出当前文本窗口中文本串的散列值,
为使本技术领域的普通技术人员能够掌握本发明方法中递归散列函数的构造,这里介绍罗宾指纹多项式模算法。
考虑一个长度为n的文本串,表示为t1,t2,...tn。对于长度为w字节的文本窗口中文本串t1,t2,...,tw,其罗宾指纹F1的计算公式为:
F1=(t1pw-1+t2pw-2+...+tw)modM,这里p和M均为常数
如果想计算下一个文本窗口中文本串t2,t3,...,tw+1对应的罗宾指纹F2,则仅仅需要在前一个罗宾指纹F1的基础上加入最后的多项式系数tw+1以及移除第一个多项式系数t1,即F2=(pF1+tw+1-t1pw-1)modM。为提高罗宾散列值F1和F2的计算效率,这里可以预先计算出一个包含任何(tipw-1)值的如表1所示的二维表,其中ti取值为ti∈[0,255],p和w预先取值确定。
表1用于提高罗宾散列值计算效率的二维表(256*W个单元)
表1
t<sub>i</sub>取值 | P<sup>0</sup> | P<sup>1</sup> | P<sup>2</sup> | … | P<sup>w-2</sup> | P<sup>w-1</sup> |
0 | ||||||
1 | ||||||
2 | ||||||
… | ||||||
254 | ||||||
255 |
一旦上述的罗宾散列值速查表构建完毕,在计算F1和F2的过程中通过直接查表得到(tipw-1)的值。注意,在为各简单布隆过滤器构造基于罗宾指纹多项式模的递归散列函数时,要求为各简单布隆过滤器选择的p值不一样。
在优选实施本发明时,在步骤A3构造关键词特征串哈希表时,为节省哈希表检索时间,可以直接使用步骤A2中构造的多个简单布隆过滤器的最后一个布隆过滤器定义的散列函数,这样就省去了散列函数H的计算时间,加快了哈希表检索效率。并且,由于与最后一个简单布隆过滤器相关的散列函数的均匀性最好,因此,基于该散列函数构造的关键词特征串哈希表将具有较好的平衡性。
实施例2:
下面通过一个实施例对本发明整个技术方案作进一步说明。
假设关键词集合为P={abcdefahijk,abcopqrst,wyzopqhijk},待匹配文本为bcgilmnomlmloptrstuvabc。
按照本发明方法的预处理过程如下:
首先,确定关键词特征串长度并裁减出各关键词对应的关键词特征串。这里选择关键词长度为6字节,并按照关键词子串最少出现原则选择各关键词的特征串,最后得到的关键词特征串集合为M={bcdefg,copqrs,pqhijk}(注意,满足最小出现原则的关键词子串可能存在多个,实际应用中可随机选择其中一个)。
然后,开始基于关键词特征串集合M构造3个简单布隆过滤器。这三个简单布隆过滤器使用的散列函数都是基于罗宾指纹多项式模方法构造,其中,第一个简单布隆过滤器散列函数的p值为5,M值为128,位串长度为128比特;第二个简单布隆过滤器散列函数的p值为7,M值为128,位串长度为128比特;第三个简单布隆过滤器散列函数的p值为11,M值为128,位串长度为128比特。为这三个简单布隆过滤器分别准备好递归运算公式F2=(pF1+tw+1-t1pw-1)modM,这里w为6,p值对应三个简单布隆过滤器分别为5,7,11,M值为128。为提高散列函数递归运算效率,分别为这三个简单布隆过滤器的递归散列函数构造一个如表1所示的速查表,由于这里选择的w为6,所以每个速查表大小为256*6个单元。
然后,基于第三个简单布隆过滤器的散列函数H1构造关键词特征串哈希表。该哈希表中将包含关键词特征串集合中所有元素,即M={bcdefg,copqrs,pqhijk}。
最后,为原始关键词集合P={abcdefghijk,abcopqrst,wyzopqhijk}构造一个线性表,并将各原始关键词的索引号存储在关键词特征串哈希表的相关表项中,比如,表项bcdefg中存储原始关键词abcdefghijk的索引号0,表项copqrs中存储原始关键词abcopqrst的索引号1,表项pqhijk中存储原始关键词wyzopqhijk的索引号2。
按照本发明方法的模式匹配过程如下:
首先,确定文本匹配窗口宽度为6字节,将文本匹配窗口与待匹配文本bcgilmnomlmloptrstuvabc左对齐。
对于当前文本匹配窗口中文本bcgilm,首先使用第一个简单布隆过滤器对当前文本串bcgilm进行匹配排除判定,即先基于散列函数公式F1=(t1pw-1+t2pw-2+...+tw)modM和罗宾计算速查表计算出文本串bcgilm的散列值,然后检查该简单布隆过滤器位串的对应比特位的取值,经检查发现对应比特位为0,因此排除了当前文本串与任一关键词特征串匹配的可能,不需要继续使用其它两个简单布隆过滤器来进行匹配排除判定了,直接将当前文本匹配窗口向右移动一个字节,当前文本匹配窗口中文本串变为cgilmn。首先,使用第一个简单布隆过滤器对当前文本串cgilmn进行匹配排除判定,这里计算第一个简单布隆过滤器的散列函数值时使用的是递归运算函数,即F2=(pF1+tw+1-t1pw-1)modM。然后检查第一个简单布隆过滤器位串的对应比特位的取值,发现为1,需要使用其它布隆过滤器进行进一步匹配排除判定。由于这是第一次调用第二个简单布隆过滤器的散列函数,因此,先按标准散列函数公式F1=(t1pw-1+t2pw-2+...+tw)modM和罗宾计算速查表计算出文本串cgilmn的散列值,然后检查该布隆过滤器比特串中散列值所对应的比特值情况,发现其值为1,表示基于第二个简单布隆过滤器的文本串匹配排除判定失败,需要使用第三个简单布隆过滤器进行文本串匹配排除判定。由于这是第一次调用第三个简单布隆过滤器的散列函数,因此,先按标准散列函数公式F1=(t1pw-1+t2pw-2+...+tw)modM和罗宾计算速查表计算出文本串cgilmn的散列值,然后检查该布隆过滤器比特串中散列值所对应的比特值情况,发现其值为0,表示基于第三个简单布隆过滤器的文本串匹配排除判定成功,文本匹配窗口直接向右移动一个字节,当前文本串变为gilmno,然后开始第三轮的基于三个简单布隆过滤器的文本串匹配排除判定过程,如此反复,直到整个文本串扫描结束。
在利用简单布隆过滤器实现对当前文本串不与任何关键词特征串匹配的快速判定时,充分利用罗宾散列计算速查表,以及当前文本串散列值可以基于上一个当前文本串散列值进行简单修正这一特点,使得各简单布隆过滤器散列函数值的计算开销非常小,大大提高了本发明所述的大规模关键词匹配方法的整体性能。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。
Claims (4)
1.一种大规模关键词匹配方法,包括预处理阶段和模式匹配阶段,其特征在于包括以下步骤:
A)所述预处理阶段包括以下步骤:
A1、根据设定的关键词特征串长度,对关键词集合中各关键词进行特征串抽取,构成关键词特征串集合;
A2、构造多个仅包含一个散列函数且该散列函数支持递归运算的简单布隆过滤器,将步骤A1所得到的关键词特征串集合同时映射到多个简单布隆过滤器中;
A3、构造一个哈希表,将关键词特征串集合映射到哈希表各单元中,对于具有哈希值冲突的元素,用链表方式串接起来;
A4、构建一个包含所有原始关键词的线性表,步骤A3中建立的关键词特征串哈希表项中包含对应原始关键词的索引号;
B)所述模式匹配阶段包括以下步骤:
B1、设置一个与关键词特征串等长度的文本匹配窗口,首先将文本匹配窗口与待匹配文本左对齐;
B2、以当前文本匹配窗口中文本串为输入,依次使用各简单布隆过滤器及其散列函数,实现当前文本串不与任何关键词特征串匹配的快速判定:如果基于某一简单布隆过滤器成功实现对当前文本串的快速排除判定,则直接跳跃到步骤B5执行;如果基于当前简单布隆过滤器的排除判定失败,则继续使用下一个简单布隆过滤器;如果所有简单布隆过滤器都执行排除判定失败,则进入步骤B3;
B3、依据文本匹配窗口中文本串检索关键词特征串哈希表,如果找到匹配的关键词特征串表项,则执行步骤B4;如果未找到任何匹配表项,则直接跳跃到步骤B5执行;
B4、根据关键词特征串表项中的索引号从原始关键词线性表读取对应的原始关键词,并与当前匹配窗口处文本串进行全长度字符串比较,如果匹配成功则报告一个成功的关键词匹配事件;最后,不管匹配成功与失败,都继续执行步骤B5;
B5、将当前文本匹配窗口向右移动1字节,并跳跃到步骤B2继续执行,直至整个文本扫描结束。
2.根据权利要求1所述的大规模关键词匹配方法,其特征在于,所述预处理阶段A的步骤A1为:对于原始关键词集合中各关键词,抽取的关键词特征串为整个关键词集合中出现次数最少的关键词子串。
3.根据权利要求1所述的大规模关键词匹配方法,其特征在于,在步骤A2中构造的简单布隆过滤器只包含一个散列函数,该散列函数基于可递归运算的罗宾指纹多项式模算法构建。
4.根据权利要求1所述的大规模关键词匹配方法,其特征在于,在步骤A3构造关键词特征串哈希表时,选择的哈希表散列函数是步骤A2中构造的多个简单布隆过滤器中最后一个布隆过滤器的散列函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710122231XA CN101398820B (zh) | 2007-09-24 | 2007-09-24 | 一种大规模关键词匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710122231XA CN101398820B (zh) | 2007-09-24 | 2007-09-24 | 一种大规模关键词匹配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101398820A CN101398820A (zh) | 2009-04-01 |
CN101398820B true CN101398820B (zh) | 2010-11-17 |
Family
ID=40517383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710122231XA Expired - Fee Related CN101398820B (zh) | 2007-09-24 | 2007-09-24 | 一种大规模关键词匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101398820B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887436B (zh) * | 2009-05-12 | 2013-08-21 | 阿里巴巴集团控股有限公司 | 一种检索方法和装置 |
US8396873B2 (en) | 2010-03-10 | 2013-03-12 | Emc Corporation | Index searching using a bloom filter |
US9667713B2 (en) * | 2011-03-21 | 2017-05-30 | Apple Inc. | Apparatus and method for managing peer-to-peer connections between different service providers |
CN102426836B (zh) * | 2011-08-25 | 2013-03-20 | 哈尔滨工业大学 | 基于分位数自适应裁剪的快速关键词检出方法 |
CN102546299B (zh) * | 2012-01-09 | 2014-07-16 | 北京锐安科技有限公司 | 一种在大流量下进行深度包检测的方法 |
US8886827B2 (en) * | 2012-02-13 | 2014-11-11 | Juniper Networks, Inc. | Flow cache mechanism for performing packet flow lookups in a network device |
CN103714056A (zh) * | 2012-09-28 | 2014-04-09 | 深圳市微讯移通信息技术有限公司 | 一种基于后台程序的关键字/敏感词过滤方法 |
CN103186669B (zh) * | 2013-03-21 | 2018-07-06 | 厦门雅迅网络股份有限公司 | 关键词快速过滤方法 |
CN103440249A (zh) * | 2013-07-23 | 2013-12-11 | 南京烽火星空通信发展有限公司 | 一种非结构化数据快速检索的***及方法 |
CN103544208B (zh) * | 2013-08-16 | 2016-07-06 | 东软集团股份有限公司 | 海量特征串集合的匹配方法及*** |
CN104317795A (zh) * | 2014-08-28 | 2015-01-28 | 华为技术有限公司 | 一种二维过滤器的生成方法、查询方法及装置 |
US20160267072A1 (en) * | 2015-03-12 | 2016-09-15 | Microsoft Technology Licensing, Llc | Context sensitive phrase identification |
US10216748B1 (en) | 2015-09-30 | 2019-02-26 | EMC IP Holding Company LLC | Segment index access management in a de-duplication system |
CN107870925B (zh) * | 2016-09-26 | 2021-08-20 | 华为技术有限公司 | 一种字符串过滤方法和相关装置 |
CN106599097B (zh) * | 2016-11-24 | 2021-06-25 | 东软集团股份有限公司 | 海量特征串集合的匹配方法和装置 |
CN106776965B (zh) * | 2016-12-05 | 2019-11-26 | 东软集团股份有限公司 | 特征串集合的分组方法和装置 |
CN108764840A (zh) * | 2018-04-11 | 2018-11-06 | 哈尔滨工程大学 | 一种海量规模的邮件地址匹配方法 |
CN113139379B (zh) * | 2020-01-20 | 2023-12-22 | 中国电信股份有限公司 | 信息识别方法和*** |
CN112532598B (zh) * | 2020-11-19 | 2021-10-26 | 南京大学 | 一种用于实时入侵检测***的过滤方法 |
CN113051568A (zh) * | 2021-03-29 | 2021-06-29 | 深信服科技股份有限公司 | 一种病毒检测方法、装置、电子设备及存储介质 |
CN113051567A (zh) * | 2021-03-29 | 2021-06-29 | 深信服科技股份有限公司 | 一种病毒检测方法、装置、电子设备及存储介质 |
CN113051566B (zh) * | 2021-03-29 | 2023-07-14 | 深信服科技股份有限公司 | 一种病毒检测方法、装置、电子设备及存储介质 |
CN116028609B (zh) * | 2023-02-14 | 2024-02-27 | 成都卓讯云网科技有限公司 | 一种多关键词匹配方法和设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1510592A (zh) * | 2002-12-26 | 2004-07-07 | 中国科学院计算技术研究所 | 快速网络流特征检测的关键词匹配方法说明书 |
CN101030221A (zh) * | 2007-04-13 | 2007-09-05 | 清华大学 | 一种用于文本或网络内容分析的大规模多关键词匹配方法 |
-
2007
- 2007-09-24 CN CN200710122231XA patent/CN101398820B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1510592A (zh) * | 2002-12-26 | 2004-07-07 | 中国科学院计算技术研究所 | 快速网络流特征检测的关键词匹配方法说明书 |
CN101030221A (zh) * | 2007-04-13 | 2007-09-05 | 清华大学 | 一种用于文本或网络内容分析的大规模多关键词匹配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101398820A (zh) | 2009-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101398820B (zh) | 一种大规模关键词匹配方法 | |
CN101359325B (zh) | 一种快速内容分析的多关键词匹配方法 | |
Chakrabarti et al. | An efficient filter for approximate membership checking | |
CN109241274B (zh) | 文本聚类方法及装置 | |
US8015124B2 (en) | Method for determining near duplicate data objects | |
US6754650B2 (en) | System and method for regular expression matching using index | |
CN108737423B (zh) | 基于网页关键内容相似性分析的钓鱼网站发现方法及*** | |
US7739220B2 (en) | Context snippet generation for book search system | |
Koppula et al. | Learning url patterns for webpage de-duplication | |
SaiKrishna et al. | String matching and its applications in diversified fields | |
CN104965905A (zh) | 一种网页分类的方法和装置 | |
CN105335481B (zh) | 一种大规模字符串文本的后缀索引构造方法及装置 | |
JP2007034777A (ja) | データ検索装置及び方法、並びにコンピュータ・プログラム | |
US20130066898A1 (en) | Matching target strings to known strings | |
Winter et al. | F2S2: Fast forensic similarity search through indexing piecewise hash signatures | |
CN105589894B (zh) | 文档索引建立方法和装置、文档检索方法和装置 | |
CN104268157A (zh) | 一种数据搜索中的纠错装置及其方法 | |
Naik et al. | Fuzzy hashing aided enhanced YARA rules for malware triaging | |
US10565188B2 (en) | System and method for performing a pattern matching search | |
WO2014071100A1 (en) | Search service including indexing text containing numbers in part using one or more number index structures | |
Xue et al. | Phishing sites detection based on Url Correlation | |
CN111061972B (zh) | 一种用于url路径匹配的ac查找优化方法和装置 | |
CN112835923A (zh) | 一种相关检索方法、装置和设备 | |
Zhang et al. | A hot spot clustering method based on improved kmeans algorithm | |
Zhang et al. | Effective and Fast Near Duplicate Detection via Signature‐Based Compression Metrics |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101117 Termination date: 20130924 |