一種消息過濾方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及消息過濾技術(shù),具體涉及一種消息過濾方法。
【背景技術(shù)】
[0002] 隨著網(wǎng)絡(luò)規(guī)模的不斷擴大,用戶對于集中化要求越來越高,快速處理消息對網(wǎng)絡(luò) 信息進(jìn)行有效的管理,為客戶提供優(yōu)質(zhì)的服務(wù),是提高提高企業(yè)的競爭力的關(guān)鍵。各行業(yè)中 的網(wǎng)絡(luò)管理系統(tǒng)中會需要采集和處理來自多個專業(yè)的海量消息和性能實時數(shù)據(jù),為了保證 快速發(fā)現(xiàn)、定位和處理目標(biāo)消息,必須設(shè)計和實施高效的消息過濾機制,將目標(biāo)消息從海量 消息中過濾出來。
[0003]目前的消息過濾方式主要有兩種,基于邏輯表達(dá)式的求值和基于RETE算法的規(guī) 則引擎的計算。
[0004] 基于邏輯表達(dá)式求值,是將過濾規(guī)則定義為一個邏輯表達(dá)式,然后在執(zhí)行過濾時, 將實時消息的對應(yīng)字段值替換到邏輯表達(dá)式中,然后進(jìn)行邏輯表達(dá)式求值。如果結(jié)果為真, 說明過濾規(guī)則成立,否則說明過濾規(guī)則不成立。但是由于業(yè)務(wù)場景情況,有些關(guān)鍵字段在各 個規(guī)則中出現(xiàn)的頻次很高,如果按照邏輯表達(dá)式分別進(jìn)行求值,那么在各個過濾規(guī)則中對 于重復(fù)的字段表達(dá)式就造成了重復(fù)求值、重復(fù)計算,給有限的資源造成了極大的浪費,同時 降低了消息過濾的效率。
[0005] 基于RETE算法的規(guī)則引擎計算,是將所有過濾規(guī)則都導(dǎo)入規(guī)則引擎,由RETE算法 對規(guī)則計算進(jìn)行優(yōu)化,減少重復(fù)求值。其中使用了多線程技術(shù)來提高計算速度。但是由于 RETE算法處理對于規(guī)則計算并未進(jìn)行深入優(yōu)化,所以效率往往較低,并且耗費大量CPU時 間。
[0006] 因此一種簡便高效快速的完成消息過濾的方法和裝置亟待出現(xiàn)。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明提供一種消息過濾方法,其特征在于,所述方法包括:
[0008] 將所有過濾條件按照邏輯關(guān)系進(jìn)行級別劃分;
[0009] 在各級中根據(jù)所述各過濾條件的出現(xiàn)頻次對所述各過濾條件進(jìn)行編號,并按照所 述級別和所述編號升序?qū)⒏鬟^濾條件進(jìn)行存儲;
[0010] 從低級別中的各過濾條件開始對接收的消息進(jìn)行過濾計算,按照次低級別中的各 過濾條件對所述低級別過濾計算的計算結(jié)果進(jìn)行過濾計算,按所述各級別中各過濾條件的 編號存儲該過濾條件的計算結(jié)果,依次完成所有級別中所有過濾條件的過濾計算;
[0011] 依使用者需求按照相應(yīng)級別過濾條件的過濾計算結(jié)果過濾消息。
[0012] 優(yōu)選的,所述將所有過濾條件按照邏輯關(guān)系進(jìn)行級劃分的方法具體為:
[0013] 將單個字段的一個過濾條件劃分為零級過濾條件;
[0014] 不同字段的所述零級過濾條件以"與"、"或"中任一種邏輯關(guān)系組合的劃分為壹級 過濾條件;
[0015] 所述各級過濾條件是多個低一級過濾條件以相同的邏輯關(guān)系組合而成;
[0016] 相鄰兩級所述過濾條件中的邏輯關(guān)系相反;
[0017] 可根據(jù)實際過濾情況確定過濾條件劃分的級別數(shù)量。
[0018] 具體的,將所有過濾條件按照邏輯關(guān)系劃分為四級:
[0019] 零級過濾條件為將單個字段的一個過濾條件劃分的Sub_condition子條件;
[0020] 壹級過濾條件為多個不同字段的Sub_c〇nditi〇n子條件相"與"組合成的 Condition條件;
[0021] 威級過濾條件為多個Condition條件相"或"組合成的Filter過濾器;
[0022] 叁級過濾條件為多個Filter過濾器相"與"組合成的Rule過濾規(guī)則。
[0023] 進(jìn)一步的,所述在各級中根據(jù)所述各過濾條件的出現(xiàn)頻次對所述各過濾條件進(jìn)行 編號的方法具體為:
[0024] 分別對所述各級中的過濾條件按照出現(xiàn)頻次由高到底進(jìn)行升序編號;
[0025] 對所述各級中出現(xiàn)頻次最高的過濾條件編號為0 ;
[0026] 更進(jìn)一步的,所述按照所述級和所述編號升序?qū)⒏鬟^濾條件進(jìn)行存儲的方法為:
[0027] 按照各級中所述過濾條件編號升序,分別存儲各級過濾條件的條件名稱、條件值 和該過濾條件編號。
[0028] 詳細(xì)的,所述從低級別中的各過濾條件開始對接收的消息進(jìn)行過濾計算,按照次 低級別中的各過濾條件對所述低級別過濾計算的計算結(jié)果進(jìn)行過濾計算的方法具體為:
[0029] 將所述消息中字段的值代入包含所述字段的所述低級別過濾條件中,對所述代入 值的低級別過濾條件進(jìn)行邏輯計算,獲得低級別過濾計算結(jié)果;
[0030] 將所述低級別過濾計算結(jié)果代入所述次低級別中的各過濾條件,按照所述次低級 別中各過濾條件描述的邏輯關(guān)系進(jìn)行邏輯計算。
[0031] 優(yōu)選的,所述按各級別中各過濾條件的編號存儲該過濾條件的計算結(jié)果的方法具 體為:
[0032] 為所述各級別過濾條件創(chuàng)建結(jié)果數(shù)組;
[0033] 依照所述各級別結(jié)果數(shù)組下標(biāo)與所述各級別中各過濾條件編號相同的原則,將該 過濾條件的計算結(jié)果存儲至該級別結(jié)果數(shù)組中的相應(yīng)位置。
[0034] 詳細(xì)的,所述將所述低級別過濾計算結(jié)果代入所述次低級別中的各過濾條件,按 照所述次低級別中各過濾條件描述的邏輯關(guān)系進(jìn)行邏輯計算的方法為:
[0035] 根據(jù)所述次低級別過濾條件,獲取該次低級別過濾條件中所包含的低級別過濾條 件,將所述獲取的低級別過濾條件的計算結(jié)果代入所述次低級別過濾條件中;
[0036] 按照所述次低級別過濾條件描述的各低級別過濾條件邏輯關(guān)系,對所述代入的低 級別過濾條件結(jié)果進(jìn)行邏輯計算。
[0037] 優(yōu)選的,所述方法還包括:
[0038] 為所述各過濾條件賦予過濾條件ID;
[0039] 根據(jù)消息過濾使用者發(fā)送的過濾條件ID,根據(jù)所述該過濾條件的過濾計算結(jié)果過 濾消息。
[0040] 本發(fā)明還公開一種消息過濾裝置,其特征在于,所述裝置包括:
[0041] 級別劃分單元,用于將所有過濾條件按照邏輯關(guān)系進(jìn)行級別劃分;
[0042] 編號單元,用于在所述級別劃分單元劃分的各級中根據(jù)所述各過濾條件的出現(xiàn)頻 次對所述各過濾條件進(jìn)行編號;
[0043] 過濾計算單元,用于從低級別中的各過濾條件開始對接收的消息進(jìn)行過濾計算, 按照次低級別中的各過濾條件對所述低級別過濾計算的計算結(jié)果進(jìn)行過濾計算,將各級的 過濾計算結(jié)果發(fā)送給存儲單元;
[0044] 存儲單元,用于按照所述級別劃分單元劃分的級別和所述編號單元編號的升序?qū)?各過濾條件進(jìn)行存儲,并按各級別中各過濾條件的編號存儲該過濾條件的計算結(jié)果;
[0045] 消息過濾單元,用于根據(jù)所述過濾計算單元計算的最高級別過濾條件的過濾計 算結(jié)果過濾消息。
[0046] 優(yōu)選的,所述級別劃分單元根據(jù)如下方法進(jìn)行過濾條件的級別劃分:
[0047] 將單個字段的一個過濾條件劃分為零級過濾條件;
[0048] 不同字段的所述零級過濾條件以"與"、"或"中任一種邏輯關(guān)系組合的劃分為壹級 過濾條件;
[0049] 各級所述過濾條件是多個低一級過濾條件以相同的邏輯關(guān)系組合而成;
[0050] 相鄰兩級所述過濾條件中的邏輯關(guān)系相反;
[0051] 可根據(jù)實際過濾情況確定過濾條件劃分的級別數(shù)量。
[0052] 詳細(xì)的,所述編號單元進(jìn)一步包括:
[0053] 頻次統(tǒng)計模塊,用于統(tǒng)計各級別中每個過濾條件的出現(xiàn)頻次;
[0054] 編號模塊,用于根據(jù)所述頻次統(tǒng)計模塊統(tǒng)計的各級別中每個過濾條件的出現(xiàn)頻 次,按照所述出現(xiàn)頻次由高到低分別對各級別中的過濾條件進(jìn)行編號,對所述各級中出現(xiàn) 頻次最_的過濾條件編號為0。
[0055] 詳細(xì)的,所述存儲單元進(jìn)一步包括:
[0056] 過濾條件存儲模塊,用于按照編號模塊對各級中所述過濾條件的編號升序,分別 存儲每級過濾條件的條件名稱、條件值和該過濾條件編號;
[0057] 結(jié)果數(shù)組,用于依照所述各級別結(jié)果數(shù)組下標(biāo)與所述各級別中各過濾條件編號相 同的原則,將所述過濾計算單元計算的該過濾條件的計算結(jié)果存儲至該級別結(jié)果數(shù)組中的 相應(yīng)位置。
[0058] 詳細(xì)的,所述過濾計算單元進(jìn)一步包括:
[0059] 值代入模塊,用于將所述接收消息的字段值或低級別過濾條件的計算結(jié)果代入所 述過濾條件存儲模塊中的各級別過濾條件中;
[0060] 計算模塊,用于根據(jù)所述代入的各級別過濾條件描述的邏輯關(guān)系,對所述值代入 模塊代入的字段值或低級別過濾條件的計算結(jié)果進(jìn)行邏輯計算;
[0061] 結(jié)果發(fā)送模塊,用于將所述計算模塊計算的邏輯計算結(jié)果發(fā)送給所述結(jié)果數(shù)組。
[0062] 進(jìn)一步的,所述過濾條件存儲模塊存儲為所述各過濾條件賦予過濾條件ID;
[0063] 所述結(jié)果發(fā)送模塊根據(jù)消息過濾使用者發(fā)送的過濾條件ID,根據(jù)所述該過濾條件 的過濾計算結(jié)果過濾消息后發(fā)送給消息過濾使用者。
[0064] 本發(fā)明通過過濾條件級別劃分,將海量的過濾條件進(jìn)行了優(yōu)化,進(jìn)行級別劃分后, 各級別中各過濾條件的邏輯關(guān)系非常清晰,基于對過濾條件按照一定的邏輯關(guān)系進(jìn)行分 級,可對已分級的過濾條件進(jìn)行壓縮,根據(jù)各級別中各過濾條件的出現(xiàn)頻次將各過濾條件 進(jìn)行存儲,即使得各過濾條件中所涉及的字段僅需要進(jìn)行一次過濾計算,避免了現(xiàn)有技術(shù) 中對所有出現(xiàn)的字段重復(fù)計算造成的資源浪費,又使出現(xiàn)頻次高的過濾條件排在前面,利 用邏輯條件惰性求值的特點,進(jìn)一步節(jié)約了計算時間,提高了邏輯計算的效率;本發(fā)明通過 存儲各級過濾計算結(jié)果,將各級計算結(jié)果存入結(jié)果數(shù)組,基于上層過濾結(jié)果的層層過濾計 算時只需要訪問簡單的結(jié)果數(shù)組取值,進(jìn)行簡單的邏輯計算,即可獲得最高級別的過濾規(guī) 則值,取值和計算過程都是簡單的對數(shù)的操作和計算,可大幅度提高邏輯計算的效率,即提 高消息過濾的效率。
【附圖說明】
[0065] 圖1為本發(fā)明實施例一提供的一種消息過濾方法的流程示意圖;
[0066] 圖2為本發(fā)明實施例二提供的方法流程圖;
[0067] 圖3為本發(fā)明實施例三提供的一種消息過濾裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0068] 以下將配合圖式及實施例來詳細(xì)說明本發(fā)明的實施方式,藉此對本發(fā)明如何應(yīng)用 技術(shù)手段來解決技術(shù)問題并達(dá)成技術(shù)功效的實現(xiàn)過程能充分理解并據(jù)以實施。
[0069] 在實際的消息過濾應(yīng)用中,不同的使用者會根據(jù)自身需求設(shè)定一些過濾條件,這 些過濾條件有的簡單有的復(fù)雜,但均是對需要過濾的消息中某些字段值進(jìn)行條件限定,滿 足條件限定的,即滿足過濾條件,最簡單的過濾條件是對一個字段的條件限定,復(fù)雜的過濾 條件是對多個字段的多個條件限定,每個字段的條件限行間又存在一定的邏輯關(guān)系。傳統(tǒng) 的過濾計算方法,對于簡單的過濾條件,只需要進(jìn)行一步簡單