規(guī)則匹配運算方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機技術(shù)領(lǐng)域,具體涉及一種規(guī)則匹配運算方法及裝置。
【背景技術(shù)】
[0002]隨著計算機技術(shù)的的飛速發(fā)展,互聯(lián)網(wǎng)技術(shù)應(yīng)用中,用戶對運算速度的要求也越來越嚴(yán)格,然而,傳統(tǒng)的規(guī)則匹配,其運算速度較慢,運算效率較低。
[0003]例如:對于規(guī)則表達式C ! = 10 I I (A = 0&&B>5),規(guī)則上下文{A = 0,B = 6,C =10}。傳統(tǒng)的規(guī)則運算會進行三次匹配:第一次運算C ! = 10為false,第二次運算(A =0&&B>5)中的A = O為true ;第三次運算B>5為true,之后才獲取所述規(guī)則表達式的匹配結(jié)果為true。
[0004]然而,如果將上述規(guī)則表達式的計算順序做以調(diào)整,則可以有效的減少運算次數(shù),進而提升其性能。例如:將上述規(guī)則表達式的計算順序調(diào)整為(A = 0&&B>5) IlC!= 10,規(guī)則上下文同樣為{A = 0,B = 6,C = 10},那么規(guī)則運算過程中僅需進行2次匹配,即可以獲取所述規(guī)則表達式的匹配結(jié)果為true。相應(yīng)的,第一次運算(A = 0&&B>5)中的A =O為true ;第二次運算B>5為true,故(A = 0&&B>5)的匹配結(jié)果為true,而(A = 0&&B>5)與C ! =10之間的邏輯關(guān)系為或關(guān)系,故僅在獲取(A = 0&&B>5)的匹配結(jié)果為true后,不需要再次計算C ! = 10,即可以獲取所述規(guī)則表達式的匹配結(jié)果為true。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于提供一種規(guī)則匹配運算方法及裝置。
[0006]為實現(xiàn)上述發(fā)明目的之一,本發(fā)明一實施方式提供了一種規(guī)則匹配運算方法,其包括:將規(guī)則表達式分解為若干個規(guī)則條件單元;
[0007]根據(jù)所述規(guī)則表達式中運算符的優(yōu)先級和每個規(guī)則條件單元在一定周期內(nèi)監(jiān)控到的匹配成功率調(diào)整規(guī)則條件單元的運算順序;其中,
[0008]若根據(jù)運算符優(yōu)先級確定的當(dāng)前運算的規(guī)則條件單元之間是和關(guān)系,則優(yōu)先運算匹配成功率較低的規(guī)則條件單元;
[0009]若根據(jù)運算符優(yōu)先級確定的當(dāng)前運算的規(guī)則條件單元之間是或關(guān)系,則優(yōu)先運算匹配成功率較高的規(guī)則條件單元。
[0010]作為本發(fā)明一實施方式的進一步改進,所述規(guī)則條件單元由單元類型、維度值、運算符、比較值組成。
[0011]作為本發(fā)明一實施方式的進一步改進,“根據(jù)所述規(guī)則表達式中運算符的優(yōu)先級和每個規(guī)則條件單元在一定周期內(nèi)監(jiān)控到的匹配成功率調(diào)整規(guī)則運算順序”具體包括:
[0012]將所述規(guī)則表達式按照運算符優(yōu)先級和規(guī)則條件單元解析成語法二叉樹,所述語法二叉樹的每個葉子節(jié)點對應(yīng)一個規(guī)則條件單元;
[0013]為葉子節(jié)點中相同的規(guī)則條件單元分配同一個標(biāo)識符;
[0014]將所述語法二叉樹的葉子節(jié)點替換為規(guī)則條件單元對應(yīng)的標(biāo)識符,并由葉子節(jié)點逐層向上進行兩兩運算;其中,根據(jù)所述規(guī)則表達式中運算符的優(yōu)先級和每個標(biāo)識符對應(yīng)的規(guī)則條件單元在一定周期內(nèi)監(jiān)控到的匹配成功率調(diào)整標(biāo)識符的運算順序。
[0015]作為本發(fā)明一實施方式的進一步改進,所述方法包括:
[0016]根據(jù)所述規(guī)則條件單元的單元類型將標(biāo)識符分堆;
[0017]根據(jù)所述單元類型對應(yīng)的執(zhí)行模板,結(jié)合所述規(guī)則條件單元的維度值計算每個標(biāo)識符的匹配結(jié)果。
[0018]作為本發(fā)明一實施方式的進一步改進,所述方法包括監(jiān)控每個規(guī)則條件單元在一定周期內(nèi)的匹配成功率,其包括:
[0019]實時地分別采集若干個規(guī)則條件單元在一定周期內(nèi)的匹配成功率,所述匹配成功率=規(guī)則條件單元在一定周期內(nèi)的匹配成功次數(shù)/規(guī)則條件單元在一定周期內(nèi)的匹配次數(shù)。
[0020]作為本發(fā)明一實施方式的進一步改進,計算所述匹配成功率具體包括:
[0021]將所述規(guī)則表達式按照運算符優(yōu)先級和規(guī)則條件單元解析成規(guī)則語法二叉樹,所述規(guī)則語法二叉樹的每個葉子節(jié)點對應(yīng)一個規(guī)則條件單元;
[0022]為葉子節(jié)點中相同的規(guī)則條件單元分配同一個標(biāo)識符;
[0023]將所述語法樹的葉子節(jié)點替換為規(guī)則條件單元對應(yīng)的標(biāo)識符,并計算所述標(biāo)識符的匹配結(jié)果;
[0024]所述匹配成功率=規(guī)則條件單元對應(yīng)的標(biāo)識符的匹配成功次數(shù)/規(guī)則條件單元對應(yīng)的標(biāo)識符的匹配次數(shù)。
[0025]作為本發(fā)明一實施方式的進一步改進,“計算所述標(biāo)識符的匹配結(jié)果”具體包括:
[0026]根據(jù)所述規(guī)則條件單元的單元類型將標(biāo)識符分堆;
[0027]根據(jù)所述單元類型對應(yīng)的執(zhí)行模板,結(jié)合所述規(guī)則條件單元的維度值計算每個標(biāo)識符的匹配結(jié)果。
[0028]為實現(xiàn)上述發(fā)明目的之一,本發(fā)明一實施方式提供了一種規(guī)則匹配運算裝置,其包括:分解模塊,用于將規(guī)則表達式分解為若干個規(guī)則條件單元;
[0029]匹配模塊,用于根據(jù)所述規(guī)則表達式中運算符的優(yōu)先級和每個規(guī)則條件單元在一定周期內(nèi)監(jiān)控到的匹配成功率調(diào)整規(guī)則條件單元的運算順序;其中,
[0030]若根據(jù)運算符優(yōu)先級確定的當(dāng)前運算的規(guī)則條件單元之間是和關(guān)系,則優(yōu)先運算匹配成功率較低的規(guī)則條件單元;
[0031]若根據(jù)運算符優(yōu)先級確定的當(dāng)前運算的規(guī)則條件單元之間是或關(guān)系,則優(yōu)先運算匹配成功率較高的規(guī)則條件單元。
[0032]作為本發(fā)明一實施方式的進一步改進,所述規(guī)則條件單元由單元類型、維度值、運算符、比較值組成。
[0033]作為本發(fā)明一實施方式的進一步改進,所述匹配模塊還用于:將所述規(guī)則表達式按照運算符優(yōu)先級和規(guī)則條件單元解析成語法二叉樹,所述語法二叉樹的每個葉子節(jié)點對應(yīng)一個規(guī)則條件單元;
[0034]為葉子節(jié)點中相同的規(guī)則條件單元分配同一個標(biāo)識符;
[0035]將所述語法二叉樹的葉子節(jié)點替換為規(guī)則條件單元對應(yīng)的標(biāo)識符,并由葉子節(jié)點逐層向上進行兩兩運算;其中,根據(jù)所述規(guī)則表達式中運算符的優(yōu)先級和每個標(biāo)識符對應(yīng)的規(guī)則條件單元在一定周期內(nèi)監(jiān)控到的匹配成功率調(diào)整標(biāo)識符的運算順序。
[0036]作為本發(fā)明一實施方式的進一步改進,所述匹配模塊還用于:根據(jù)所述規(guī)則條件單元的單元類型將標(biāo)識符分堆;
[0037]根據(jù)所述單元類型對應(yīng)的執(zhí)行模板,結(jié)合所述規(guī)則條件單元的維度值計算每個標(biāo)識符的匹配結(jié)果。
[0038]作為本發(fā)明一實施方式的進一步改進,所述匹配模塊用于:監(jiān)控每個規(guī)則條件單元在一定周期內(nèi)的匹配成功率;
[0039]所述匹配模塊具體用于,實時地分別采集若干個規(guī)則條件單元在一定周期內(nèi)的匹配成功率,所述匹配成功率=規(guī)則條件單元在一定周期內(nèi)的匹配成功次數(shù)/規(guī)則條件單元在一定周期內(nèi)的匹配次數(shù)。
[0040]作為本發(fā)明一實施方式的進一步改進,所述匹配模塊用于:將所述規(guī)則表達式按照運算符優(yōu)先級和規(guī)則條件單元解析成規(guī)則語法二叉樹,所述規(guī)則語法二叉樹的每個葉子節(jié)點對應(yīng)一個規(guī)則條件單元;
[0041]為葉子節(jié)點中相同的規(guī)則條件單元分配同一個標(biāo)識符;
[0042]將所述語法樹的葉子節(jié)點替換為規(guī)則條件單元對應(yīng)的標(biāo)識符,并計算所述標(biāo)識符的匹配結(jié)果;
[0043]所述匹配成功率=規(guī)則條件單元對應(yīng)的標(biāo)識符的匹配成功次數(shù)/規(guī)則條件單元對應(yīng)的標(biāo)識符的匹配次數(shù)。
[0044]作為本發(fā)明一實施方式的進一步改進,所述匹配模塊用于:根據(jù)所述規(guī)則條件單元的單元類型將標(biāo)識符分堆;
[0045]根據(jù)所述單元類型對應(yīng)的執(zhí)行模板,結(jié)合所述規(guī)則條件單元的維度值計算每個標(biāo)識符的匹配結(jié)果。
[0046]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明的規(guī)則匹配運算方法及裝置,可實時監(jiān)控規(guī)則表達式中各個規(guī)則條件單元的匹配成功率,并根據(jù)該匹配成功率調(diào)整整個規(guī)則表達式的運算順序,以提高所述規(guī)則表達式的整體運算速度,進而提升運算效率。
【附圖說明】
[0047]圖1是本發(fā)明一實施方式中規(guī)則匹配運算方法的流程示意圖;
[0048]圖2A是本發(fā)明一實施方式中規(guī)則語法二叉樹的結(jié)構(gòu)示意圖;
[0049]圖2B是圖2A對應(yīng)的規(guī)則條件單元池的結(jié)構(gòu)示意圖;
[0050]圖2C是將圖2A中規(guī)則語法二叉樹中的規(guī)則單元表達式替換為規(guī)則條件單元池中的標(biāo)識符的結(jié)構(gòu)示意圖;
[0051]圖2D是圖2B的標(biāo)識符分堆后匹配結(jié)果的示意圖;
[0052]圖2E是圖2C的匹配結(jié)果示意圖;
[0053]圖3是本發(fā)明一實施方式的規(guī)則匹配運算裝置的模塊示意圖。
【具體實施方式】
[0054]以下將結(jié)合附圖所示的各實施方式對本發(fā)明進行詳細(xì)描述。但這些實施方式并不限制本發(fā)明,本領(lǐng)域的普通技術(shù)人員根據(jù)這些實施方式所輕易做出的結(jié)構(gòu)、方法、或功能上的變換均包含在本發(fā)明的保護范圍內(nèi)。
[0055]如圖1所示,在本發(fā)明一實施方式中,所述規(guī)則匹配運算方法包括:
[0056]將規(guī)則表達式分解為若干個規(guī)則條件單元。相應(yīng)的,所述規(guī)則表達式通常包括若干個規(guī)則條件單元及連接所述規(guī)則條件單元的運算符。
[0057]例如:規(guī)則表達式為:
[0058]“String:A>l&&int:B ! = 21 | (date:C>201209&&date:C〈201211) ”,其中,“String:A>l”、“int:B ! = 2”、“date:C>201209”、“date:C〈201211” 為規(guī)則條件單元,“&&”、“ I 為運算符。
[0059]相應(yīng)的,所述規(guī)則條件單元由單元類型、維度值、運算符、比較值組成。以上述規(guī)則表達式的其中一個規(guī)則條件單元為例:
[0060]例如:“String:A>1”,其中,“String”為單元類型,“Α”為維度值,“〉”為運算符,“I”為比較值。
[0061]可以理解的是,所述單元類型包括多個種類,例如:string、int、long、double、money、date、boolean等,所述運算符同樣包括多個種類,例如:“ = =、! =、>、〈、(、)、&&、