一种大规模关键词匹配方法

文档序号:6610354阅读:179来源:国知局

专利名称::一种大规模关键词匹配方法
技术领域
:本发明涉及计算机内容分析
技术领域
,具体涉及一种快速内容分析的多关^t词匹配方法。技术背景多关键词匹闺己(MultiplePatternStringMatching)解决的问题是快速判断某一数据块中是否包含关键词集合中的某一或某些关键词。多关键词匹配技术广泛应用于文本处理、网络内容分析、入侵;险测、信息4企索和病毒检测等领域。传统多关键词匹配方法包括文献[A.V.Aho,M.J.Corasick.EfficientStringMatching:AnAidtoBibliographicSearch,(中文名称一种用于目录搜索的高效的字符串匹酉己方法)CommunicationsoftheACM,1975,18(6):333-340]、文献[S.Wu,U.Manber.AFastAlgorithmForMulti-PatternSearching(中文名称一种快速的多模式匹配算法).TechnicalReportTR-94-17,UniversityofArizona.1994:1-11]和文献[K.G.Anagnostakis,S.Antonatos,M.Polychronakis,andE.P.Markatos.:Adomain-specificstringmatchingalgorithmforintrusiondetection(中文名称一种领域相关的为入侵检测设计得多模式匹配算法).InProceedingsofIFIPInternationalInformationSecurityConference(SEC'03),May2003]等。这些文献涉及的多关键词匹配方法都存在一个理想的应用条件,比如,Aho-Corasick方法的最佳应用条件为小规模关键词场合,Wu-Manber的最佳应用条件为中等规模关键词应用场合,E2XB的最佳应用为入侵检测场合。这些多关键词匹配方法在大规模关键词应用场合下效果并不理想,并不适合实时病毒检测类应用场合。实时病毒检测类应用场合下的多关键词匹配具有如下特点l)关键词数量非常大,一般在6万到20万条左右;2)关键词长度一般比较大,最小为8字节;3)待检测文本长度较大,从几千字节到几兆字节不等;4)待检测文本与任何关键词匹配的成功概率异常低。文献[Erdogan,O.;PeiCao,Hash画AV:fastvirussignaturescanningbycache-residentfilters(中文名称HASH-AV:—种采用緩存驻留过滤器的快速病毒特征扫描方法),GlobalTelecommunicationsConference,2005.GLOBECOMapos;05.IEEEVolume3,Issue,28Nov.-2Dec.2005Page(s):6pp.]给出了一种针对病毒检测类应用场合多关键词匹配特点而设计的多关键词匹配方法HASH-AV,它构建一个可容纳于现代CPU高速緩存中的布隆过滤器(BloomFilter),并巧妙设计了一组布隆过滤器散列函数,通过依次调用该组散列函数来实现当前窗口中文本串不与任一关键词匹配的快速判定。由于病毒检查等应用场合下,文本数据流与任一关键词匹配的概率异常低,绝大多数情况下这种基于布隆过滤器的快速判定都是成功的,绝大多数时候并不需要执行代价昂贵的全关键词比较操作。与其它关键词匹配方法相比,该关键词匹配方法更多地考虑了病毒4企测领域独有的特性,在病毒检测应用场合表现出了较好的扫描速率。利用布隆过滤器在判定某一元素是否属于指定元素集合时不存在漏报,但是可能存在误报,特别在布隆过滤器表示的元素集合较大时误报率更大。理论上来说,可以通过增大布隆过滤器的位串大小来降低误报,但是实际上很难达到效果,因为实际情况中构造的布隆过滤器散列函数并不具有较好的随机性。HASH-AV方法采用一个布隆过滤器来表示所要查找的关键词集合,我们在实验中发现,当HASH-AV中查找的关键词集合大于10万时,基于单一布隆过滤器执行当前文本不与任何关键词匹配判定的误报率较高,这直接影响了HASH-AV的关键词匹配效率;同时,在每次文本匹配窗口移动后,HASH-AV方法需要基于当前文本重新执行各布隆过滤器散列函数,而没有考虑当前文本串与上一窗口中文本串大部分相同这个特点。
发明内容本发明目的是克服现有技术的上述缺点,提供一种适合于实时病毒检测场合的大规模关键词匹配方法,它利用多个简单布隆过滤器实现当前窗口中文本不与任何关键词匹配的快速判定,使用递归散列函数改善各布隆过滤器的检索效率。本发明的目的是通过以下技术方案实现的一种大规模关键词匹配方法,包括预处理阶段和模式匹配阶段,其中,A)所述预处理阶段包括以下步骤Al、根据设定的关键词特征串长度,对关键词集合中各关键词进行特征串抽取,构成关4定词特征串集合;A2、构造多个包含唯一散列函数且该散列函数支持递归运算的筒单布隆过滤器,将关键词特征串集合同时映射到多个简单布隆过滤器中;A3、构造一个哈希表,将关键词特征串集合映射到哈希表各单元中,对于具有哈希值沖突的元素,用链表方式串接起来;A4、构建一个包含所有原始关键词的线性表,在步骤A3中建立的关键词特征串哈希表项中包含对应原始关键词的索引号;B)所述模式匹配阶段包括以下步骤Bl、设置一个与关键词特征串等长度的文本匹配窗口,首先将文本匹配窗口与待匹配文本左对齐;B2、以当前文本匹配窗口中文本串为输入,依次使用各简单布隆过滤器及相关递归散列运算公式,实现当前文本串不与任何关键词特征串匹配的快速判定如果基于某一简单布隆过滤器成功实现对当前文本串的快速排除判定,则直接跳跃到步骤B5执行;如果基于当前简单布隆过滤器的排除判定失败,则继续使用下一个简单布隆过滤器;如果所有简单布隆过滤器都执行排除判定失败,则进入步骤B3;B3、依据文本匹配窗口中文本串检索关键词特征串哈希表,如果找到匹配的关键词特征串表项,则执行步骤B4;如果未找到任何匹配表项,则直接跳跃到步骤B5执行;B4、根据关键词特征串表项中的索引号从原始关键词线性表读取对应的原始关键词,并与当前匹配窗口处文本串进行全长度字符串比较,如果匹配成功则报告一个成功的关键词匹配事件;继续执行步骤B5;B5、将当前文本匹配窗口向右移动l字节,并跳跃到步骤B2继续执行,直至整个文本扫描结束。优选地,所述的大规模关键词匹配方法,其预处理阶段A的步骤A1为对于原始关键词集合中各关键词,抽取的关键词特征串为整个关键词集合中出现次数最少的关键词子串。优选地,所述的大规模关键词匹配方法,其预处理阶段A的步骤A2中构造的简单布隆过滤器只包含一个散列函数,该散列函数基于可递归运算的罗宾指紋多项式模算法构建。优选地,所述的大规模关键词匹配方法,其预处理阶段A的步骤A3构造关键词特征串哈希表时,选择的哈希表散列函数是步骤A2中构造的多个筒单布隆过滤器中最后一个布隆过滤器的散列函数。由以上本发明提供的技术方案可以看出,本发明对关键词集合中各关键词进行特征串抽取后,基于关键词特征串集合构建了多个简单布隆过滤器,以实现文本扫描过程中当前文本不与任何关键词特征串匹配的快速判定,有效地降低了单个布隆过滤器导致的判定误报率高的问题,同时,本发明方法考虑了文本匹配过程中当前文本串与上一窗口中文本串大部分相同的特点,使用递归散列函数改善各布隆过滤器的检索效率,从而大大提高本发明方法所述的大规模关键词匹配效率。同等试验条件下,本发明方法在不同规模关键词场合下均比HASH-AV方法快,特别在大规模长关键词场合下,本发明方法的文本扫描速度比HASH-AV快O.7倍。本发明方法非常适合于在线实时入侵检测和病毒检测等应用场合。图l为将一个元素插入到布隆过滤器凄t据结构的过程;图2为判定某元素是否属于布隆过滤器所表示集合的过程;图3为本发明方法的预处理阶^a工作流程图;图4是本发明方法的模式匹配阶段的文本扫描实现流程图。具体实施方式为使本领域的普通技术人员能够充分理解本发明,这里先介绍本发明中使用的一个重要数据结构一布隆过滤器。布隆过滤器(BloomFilter)是一个压缩的数据结构,用来表示一个集合中所有元素,并支持对该集合中元素的查找,即可以回答"某个元素是否属于某个集合?"的问题。布隆过滤器使用长度为m的位串(bitVector)V来表达数据元素集合A={a1,a2,an}。设有k个具有均匀分布特性的散列函数{h1},i=1,…,k,足如下条件Vx∈A,hi(x)∈{1,2,…,m},基于布隆过滤器的集合元素表示法和集合元素查找法如下集合元素表示方法对于集合中任一元素"',使用预先定义的k个散列函数依次对"'进行哈希,得到k个散列值^^,…WAe[lJ],然后依次将位串V的AA"'A位置1。附图l示例了将一个元素插入到布隆过滤器的过程(k=3)。集合元素查找方法当需要判定某一元素"是否属于布隆过滤器表示的集合时,方法如下1)使用预先定义的k个散列函数依次对元素"进行散列运算,得到k个散列值^A,…WAe[l,];然后判断位串v的6"VA位置上是否都为l,如果都为l,则表示该元素在集合中,否则表示不在集合中。附图2示例了基于布隆过滤器的集合元素查找过程(即归属判定过程)。基于布隆过滤器实现集合元素查找时可能存在误报,但是,可以通过控制位串V的长度m来将误报率控制在可接受的范围之内。本发明方法包括预处理阶段和模式匹配阶段。下面结合附图详细说明本发明方法各个阶段的具体实施步骤。在预处理阶段,本发明方法需要对原始关键词集合进行预处理,并生成几个关键的数据结构,以辅助模式匹配阶段的文本扫描过程。如附图3所示,本发明方法预处理阶段的实施步骤如下步骤301、根据设定的关键词特征串长度,对关键词集合中各关键词进行特征串抽取;步骤302、构造多个包含唯一散列函数且散列函数可递归计算的筒单布隆过滤器组,将抽取的所有关键词特征串映射到所有布隆过滤器中;步骤303、构造一个哈希表,将抽取的所有关键词特征串映射到哈希表各单元中,对于具有哈希值沖突的元素,用链表方式串接起来;步骤304、构建一个包含所有原始关键词的线性表,在步骤303中建立的关4定词特征串哈希表项中包含对应原始关键词的索引号。实施例l:假设有K个需要搜寻的原始关键词,表示为?={1,2,...,1(}。在实际应用场合中,需要搜寻的原始关键词长度是不相等的。为便于实现多个关键词的并行匹配,本发明需要对所有关键词进行等长度裁剪,即选择一个关键词子串长度值W,对集合P中每个原始关键词Pi,将其裁剪为W字节长度的关键词子串Mi。这个裁剪出的W字节长度的关键词子串Mi称为原始关键词的关键词特征串。由抽取的各关键词特征串Mi组成的集合为关键词特征串集合M。注意,在选择关键词特征串长度时,W值大小不能大于原始关键词集合中最短关键词的长度。最简单的裁剪方法为取每个关键词的W字节前缀或后缀作为原始关键词的关键词特征串。关键词特征串集合M构建完毕后,需要构造K个简单布隆过滤器,并将关键词特征串集合M映射到这K个简单布隆过滤器中。本发明基于上面描述的公知的布隆过滤器构造方法构造用于表示关键词特征串集合M的每个简单布隆过滤器a)设置一个长度为v的位串V,并为该布隆过滤器选定唯一的一个散列函数Ht;该散列函数H!必须支持递归计算,即当前窗口文本串titi+卜.tj+m"的散列值H"titw…ti+^)可由前一窗口中文本串twt卜..、+111.2的散列值H!(twti...ti+m-2)经过修正得到;b)对于关键词特征串集合M中各元素Mi,调用筒单布隆过滤器的散列函数H!,将布隆过滤器位串V中对应散列函数值位置处的比特位置l。在实施本发明方法过程中,在为每个简单布隆过滤器选择的散列函数必须是支持递归运算的,可用于本发明的支持递归运算的散列函数包括加法操作、逻辑异或操作和罗宾指紋多项式模算法。需要注意的是,为每个简单布隆过滤器选择的支持递归运算的散列函数必须是不同的,否则无法实现各简单过滤器当前文本串匹配任一关键词特征串独立的快速排除判定。为实现文本窗口中文本串与候选的关键词特征串子集进行精确匹配,本发明为关键词特征串集合M构造了一个哈希表。为了使得构造的哈希表具有较好的平衡性,建议为本哈希表构造一个均匀性较好的散列函数H,且该散列函数H应具有较高的计算效率,以减少哈希表的检索开销。对于关键词特征串集合M中具有散列值冲突的关键词特征串,本发明采用链表方式将它们串接起来,并将链表中元素按字典升序排列。本发明还需要构建一个包含原始关键词集合P中各关键词的线性表L,以便于文本匹配窗口中文本串与某一关4建词特征串匹配成功后,能够读取与该关键词特征串对应的原始关键词进行全长度的精确匹配,从而得到最后的关键词匹配结果。为使得在文本窗口中文本串与某一关键词特征串匹配成功后能够快速找到相关的原始关键词,本发明前面建立的关键词特征串哈希表项中包含了对应原始关键词的索引号。在模式匹配阶段,本发明将基于预处理阶段构建的数据结构实现对待检测文本的快速扫描。为了使本
技术领域
的人员更好地理解本发明,下面结合附图4详细介绍本发明涉及的模式匹配过程。包括以下步骤步骤401、设置文本匹配窗口宽度为W字节,其中,W为关键词特征串长度,将文本匹配窗口与待匹配文本左对齐;步骤402:依次使用各简单布隆过滤器实现当前文本串不与任何关键词特征串的快速判定,即以当前文本窗口中文本串(长度为W字节)为输入,以及上一次的散列函数值,利用简单布隆过滤器中散列函数的递归性质,修正得到当前散列值Hp并检查该筒单布隆过滤器位串中对应比特位的值如果该比特位值为0,则直接跳跃到步骤405执行;如果该比特位为1,使用下一个简单布隆过滤器实现当前文本串不与任何关键词特征串匹配的快速判定;如果所有简单布隆过滤器都无法成功实现当前文本串不与任何关键词特征串的快速判定,则表示该文本串可能与某一关键词特征串匹配,则继续执行步骤403。步骤403:基于关键词特征串哈希表中的散列函数H,对当前文本窗口中文本串进行散列运算,根据散列值定位某一关键词特征串子链,并将当前窗口中文本串与子链中各关键词特征串进行精确匹配如果与某关键词特征串匹配成功,则继续执行步骤404;如果未与子链中任何关键词特征串匹配成功,则直接跳跃到步骤405执行。步骤404:从找到的关键词特征串表项中取出原始关键词索引号,从原始关键词线性表中加载对应的原始关键词,将其与当前文本匹配窗口位置处文本串进行基于字符比较的全匹配,如果匹配成功,则报告一个成功的原始关键词匹配事件;最后,不管匹配是否成功,都继续执行步骤405。步骤405:将当前文本匹配窗口向右移动l字节,并跳跃到步骤402继续执行,直至整个待检测文本扫描结束。在实施本发明时,本发明所述的预处理阶段A的步骤A1可以采用如下的优选实施方式对于关键词集合P^PhP2,…,P!j中每一关键词Pi,抽取的关键词特征串Mi为整个关键词集合中出现次数最少的关键词子串。可以釆用如下方法使得抽取的关键词特征串Mi为整个关键词集合中出现次数最少的关键词子串a)建立一个哈希表,用于存放所有可能的长度为W的关4建词子串;b)对于任一长度为ni的原始关键词Pi,可以分割出(n广W)个长度为W的关键词子串,对于每个分割出的关键词子串,首先判断其是否已出现在关键词子串哈希表中如果不在哈希表中,则创建新的关键词子串表项,并将计数器值设置为l;如果相关关键词表项出现在哈希表中,则将对应表项的计数器值加1;c)当原始关键词集合中所有关键词按步骤b)处理结束后,开始为每个原始关键词选择出现次数最少的关键词子串,具体过程为对于任一长度为ni的原始关键词Pi,检索关键词子串哈希表,分别统计其(nrW)个长度为W字节的关键词子串的计数值,选这(ni-W)个关键词子串中计数值最小者为本原始关键词Pi的关键词特征串。在优选实施本发明时,预处理阶段的步骤A2中构造多个用于表示关键词特征串集合的简单布隆过滤器时,为各简单布隆过滤器选择的散列函数为罗宾指紋多项式模算法,它可以递归方式基于上一文本窗口中文本串对应的散列值计算出当前文本窗口中文本串的散列值,为使本
技术领域
的普通技术人员能够掌握本发明方法中递归散列函数的构造,这里介绍罗宾指紋多项式模算法。考虑一个长度为n的文本串,表示为h,t2,…tn。对于长度为w字节的文本窗口中文本串ti,t2,…,tw,其罗宾指玟Fi的计算公式为A'+,2^/-2+…+"modM,这里p和M均为常数如果想计算下一个文本窗口中文本串t2,t3,...,tww对应的罗宾指紋F2,则仅仅需要在前一个罗宾指紋F!的基础上加入最后的多项式系lttw+1以及移除第一个多项式系数t!,即《=(/^+~+1-,,;^)11103肘。为提高罗宾散列值Fi和F2的计算效率,这里可以预先计算出一个包含任何0,p")值的如表l所示的二维表,其中ti取值为f,e,p和w预先取值确定。表l用于提高罗宾散列值计算效率的二维表(256*个单元)表l<table>tableseeoriginaldocumentpage14</column></row><table>一旦上述的罗宾散列值速查表构建完毕,在计算Fi和F2的过程中通过直接查表得到UZ-')的值。注意,在为各简单布隆过滤器构造基于罗宾指紋多项式模的递归散列函数时,要求为各简单布隆过滤器选择的p值不一样。在优选实施本发明时,在步骤A3构造关键词特征串哈希表时,为节省哈希表检索时间,可以直接使用步骤A2中构造的多个简单布隆过滤器的最后一个布隆过滤器定义的散列函数,这样就省去了散列函数H的计算时间,加快了哈希表检索效率。并且,由于与最后一个简单布隆过滤器相关的散列函数的均匀性最好,因此,基于该散列函数构造的关键词特征串哈希表将具有较好的平衡性。实施例2:下面通过一个实施例对本发明整个技术方案作进一步说明。4艮设关4定词集合为P二(abcdefghijk,abcopqrst,wyzopqhijk},待匹配文本为bcgilmnomlmloptrstuvabc。按照本发明方法的预处理过程如下首先,确定关键词特征串长度并裁减出各关键词对应的关键词特征串。这里选择关键词长度为6字节,并按照关键词子串最少出现原则选择各关键词的特征串,最后得到的关键词特征串集合为M={bcdefg,c叩qrs,pqhijk)(注意,满足最小出现原则的关键词子串可能存在多个,实际应用中可随机选择其中一个)。然后,开始基于关键词特征串集合M构造3个简单布隆过滤器。这三个简单布隆过滤器使用的散列函数都是基于罗宾指紋多项式模方法构造,其中,第一个简单布隆过滤器散列函数的p值为5,M值为128,位串长度为128比特;第二个简单布隆过滤器散列函数的p值为7,M值为128,位串长度为128比特;第三个简单布隆过滤器散列函数的p值为ll,M值为128,位串长度为128比特。为这三个简单布隆过滤器分别准备好递归运算公式^二(;^+c+广^")modM,这里w为6,p值对应三个简单布隆过滤器分别为5,7,U,M值为128。为提高散列函数递归运算效率,分别为这三个简单布隆过滤器的递归散列函数构造一个如表l所示的速查表,由于这里选择的w为6,所以每个速查表大小为256*6个单元。然后,基于第三个简单布隆过滤器的散列函数Hi构造关键词特征串哈希表。该哈希表中将包含关键词特征串集合中所有元素,即M^bcdefg,copqrs,pqhijk}。最后,为原始关4建词集合P二{abcdefghijk,abcopqrst,wyzopqhijk》构造一个线性表,并将各原始关键词的索引号存储在关键词特征串哈希表的相关表项中,比如,表项bcdefg中存储原始关键词abcdefghijk的索引号O,表项copqrs中存储原始关键词abcopqrst的索引号1,表项pqhijk中存储原始关键词wyzopqhijk的索引号2。按照本发明方法的模式匹配过程如下首先,确定文本匹配窗口宽度为6字节,将文本匹配窗口与待匹配文本bcgilmnomlmloptrstuvabc左对齐。对于当前文本匹配窗口中文本bcgilm,首先^f吏用第一个简单布隆过滤器对当前文本串bcgilm进行匹配排除判定,即先基于散列函数公式《=+^//-2+...+UmodM和罗宾计算速查表计算出文本串bcgilm的散列值,然后检查该简单布隆过滤器位串的对应比特位的取值,经检查发现对应比特位为0,因此排除了当前文本串与任一关键词特征串匹配的可能,不需要继续使用其它两个简单布隆过滤器来进行匹配排除判定了,直接将当前文本匹配窗口向右移动一个字节,当前文本匹配窗口中文本串变为cgilmn。首先,使用第一个简单布隆过滤器对当前文本串cgilmn进行匹配排除判定,这里计算第一个简单布隆过滤器的散列函数值时使用的是递归运算函数,即《=(;7《-^")modM。然后检查第一个简单布隆过滤器位串的对应比特位的取值,发现为l,需要使用其它布隆过滤器进行进一步匹配排除判定。由于这是第一次调用第二个简单布隆过滤器的散列函数,因此,先按标准散列函数公式巧=(,1;/-1+^^-2+...+00(1肘和罗宾计算速查表计算出文本串cgilmn的散列值,然后检查该布隆过滤器比特串中散列值所对应的比特值情况,发现其值为l,表示基于第二个简单布隆过滤器的文本串匹配排除判定失败,需要使用第三个简单布隆过滤器进行文本串匹配排除判定。由于这是第一次调用第三个简单布隆过滤器的散列函数,因此,先按标准散列函数公式巧="//-、^y、…+C)modM和罗宾计算速查表计算出文本串cgilmn的散列值,然后检查该布隆过滤器比特串中散列值所对应的比特值情况,发现其值为O,表示基于第三个简单布隆过滤器的文本串匹配排除判定成功,文本匹配窗口直接向右移动一个字节,当前文本串变为gilmno,然后开始第三轮的基于三个简单布隆过滤器的文本串匹配排除判定过程,如此反复,直到整个文本串扫描结束。在利用简单布隆过滤器实现对当前文本串不与任何关键词特征串匹配的快速判定时,充分利用罗宾散列计算速查表,以及当前文本串散列值可以基于上一个当前文本串散列值进行简单修正这一特点,使得各简单布隆过滤器散列函数值的计算开销非常小,大大提高了本发明所述的大规模关键词匹配方法的整体性能。虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。权利要求1.一种大规模关键词匹配方法,包括预处理阶段和模式匹配阶段,其特征在于包括以下步骤A)所述预处理阶段包括以下步骤A1、根据设定的关键词特征串长度,对关键词集合中各关键词进行特征串抽取,构成关键词特征串集合;A2、构造多个仅包含一个散列函数且该散列函数支持递归运算的简单布隆过滤器,将关键词特征串集合同时映射到多个简单布隆过滤器中;A3、构造一个哈希表,将关键词特征串集合映射到哈希表各单元中,对于具有哈希值冲突的元素,用链表方式串接起来;A4、构建一个包含所有原始关键词的线性表,步骤A3中建立的关键词特征串哈希表项中包含对应原始关键词的索引号;B)所述模式匹配阶段包括以下步骤B1、设置一个与关键词特征串等长度的文本匹配窗口,首先将文本匹配窗口与待匹配文本左对齐;B2、以当前文本匹配窗口中文本串为输入,依次使用各简单布隆过滤器及其递归散列公式,实现当前文本串不与任何关键词特征串匹配的快速判定如果基于某一简单布隆过滤器成功实现对当前文本串的快速排除判定,则直接跳跃到步骤B5执行;如果基于当前简单布隆过滤器的排除判定失败,则继续使用下一个简单布隆过滤器;如果所有简单布隆过滤器都执行排除判定失败,则进入步骤B3;B3、依据文本匹配窗口中文本串检索关键词特征串哈希表,如果找到匹配的关键词特征串表项,则执行步骤B4;如果未找到任何匹配表项,则直接跳跃到步骤B5执行;B4、根据关键词特征串表项中的索引号从原始关键词线性表读取对应的原始关键词,并与当前匹配窗口处文本串进行全长度字符串比较,如果匹配成功则报告一个成功的关键词匹配事件;继续执行步骤B5;B5、将当前文本匹配窗口向右移动1字节,并跳跃到步骤B2继续执行,直至整个文本扫描结束。2.根据权利要求l所述的大规模关键词匹配方法,其特征在于,所述预处理阶段A的步骤A1为对于原始关键词集合中各关键词,抽取的关键词特征串为整个关键词集合中出现次数最少的关键词子串。3、根据权利要求l所述的大规模关键词匹配方法,其特征在于,在步骤A2中构造的简单布隆过滤器只包含一个散列函数,该散列函数基于可递归运算的罗宾指紋多项式模算法构建。4.根据权利要求l所述的大规模关键词匹配方法,其特征在于,在步骤A3构造关键词特征串哈希表时,选择的哈希表散列函数是步骤A2中构造的多个简单布隆过滤器中最后一个布隆过滤器的散列函数。5.根据权利要求l所述的大规模关键词匹配方法,其特征在于,所述模式匹配阶段有利用简单布隆过滤器实现对当前文本串不与任何关键词特征串匹配的快速判定时,利用罗宾散列计算速查表,以及当前文本串散列值,基于上一个当前文本串散列值进行修正的步骤。全文摘要一种大规模关键词匹配方法。包括预处理阶段和模式匹配阶段。预处理阶段包括关键词特征串裁剪、基于关键词特征串集合的多个简单布隆过滤器(BloomFilter)的构造,基于关键词特征串集合的哈希表构造;模式匹配阶段包括利用先前构造的简单布隆过滤器序列实现当前窗口中文本串不与任何关键词特征串匹配的快速判定;在判定失败情况下执行与候选关键词的精确匹配;文本扫描过程中,可以利用递归算法快速计算出当前文本相对于各简单布隆过滤器的当前散列值。本发明充分利用了待匹配文本与关键词匹配成功概率异常低的特点,利用了递归散列算法高效的特点,可实现大规模关键词场景下的高速匹配,非常适合病毒检测等在线病毒扫描应用。文档编号G06F17/30GK101398820SQ20071012223公开日2009年4月1日申请日期2007年9月24日优先权日2007年9月24日发明者华东明,叶润国,涛周,孙海波,焦玉峰,骆拥政申请人:北京启明星辰信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1