中文字幕无码日韩视频无码三区

一種大規模關鍵詞匹配方法

文(wen)檔序(xu)號(hao):6610354閱讀:214來源(yuan):國知局(ju)

專利名稱::一種大規模關鍵詞匹配方法
技術領域
:本發明涉及計算機內容分析
技術領域
,具體涉及一種快速內容分析的多關^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日發明者華東明,葉潤國,濤周,孫海波,焦玉峰,駱擁政申請人:北京啟明星辰信息技術有限公司
網友(you)詢(xun)問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1