规则匹配运算方法及装置的制造方法

文档序号:9810560阅读:247来源:国知局
规则匹配运算方法及装置的制造方法
【技术领域】
[0001]本发明属于计算机技术领域,具体涉及一种规则匹配运算方法及装置。
【背景技术】
[0002]随着计算机技术的的飞速发展,互联网技术应用中,用户对运算速度的要求也越来越严格,然而,传统的规则匹配,其运算速度较慢,运算效率较低。
[0003]例如:对于规则表达式C ! = 10 I I (A = 0&&B>5),规则上下文{A = 0,B = 6,C =10}。传统的规则运算会进行三次匹配:第一次运算C ! = 10为false,第二次运算(A =0&&B>5)中的A = O为true ;第三次运算B>5为true,之后才获取所述规则表达式的匹配结果为true。
[0004]然而,如果将上述规则表达式的计算顺序做以调整,则可以有效的减少运算次数,进而提升其性能。例如:将上述规则表达式的计算顺序调整为(A = 0&&B>5) IlC!= 10,规则上下文同样为{A = 0,B = 6,C = 10},那么规则运算过程中仅需进行2次匹配,即可以获取所述规则表达式的匹配结果为true。相应的,第一次运算(A = 0&&B>5)中的A =O为true ;第二次运算B>5为true,故(A = 0&&B>5)的匹配结果为true,而(A = 0&&B>5)与C ! =10之间的逻辑关系为或关系,故仅在获取(A = 0&&B>5)的匹配结果为true后,不需要再次计算C ! = 10,即可以获取所述规则表达式的匹配结果为true。

【发明内容】

[0005]本发明的目的在于提供一种规则匹配运算方法及装置。
[0006]为实现上述发明目的之一,本发明一实施方式提供了一种规则匹配运算方法,其包括:将规则表达式分解为若干个规则条件单元;
[0007]根据所述规则表达式中运算符的优先级和每个规则条件单元在一定周期内监控到的匹配成功率调整规则条件单元的运算顺序;其中,
[0008]若根据运算符优先级确定的当前运算的规则条件单元之间是和关系,则优先运算匹配成功率较低的规则条件单元;
[0009]若根据运算符优先级确定的当前运算的规则条件单元之间是或关系,则优先运算匹配成功率较高的规则条件单元。
[0010]作为本发明一实施方式的进一步改进,所述规则条件单元由单元类型、维度值、运算符、比较值组成。
[0011]作为本发明一实施方式的进一步改进,“根据所述规则表达式中运算符的优先级和每个规则条件单元在一定周期内监控到的匹配成功率调整规则运算顺序”具体包括:
[0012]将所述规则表达式按照运算符优先级和规则条件单元解析成语法二叉树,所述语法二叉树的每个叶子节点对应一个规则条件单元;
[0013]为叶子节点中相同的规则条件单元分配同一个标识符;
[0014]将所述语法二叉树的叶子节点替换为规则条件单元对应的标识符,并由叶子节点逐层向上进行两两运算;其中,根据所述规则表达式中运算符的优先级和每个标识符对应的规则条件单元在一定周期内监控到的匹配成功率调整标识符的运算顺序。
[0015]作为本发明一实施方式的进一步改进,所述方法包括:
[0016]根据所述规则条件单元的单元类型将标识符分堆;
[0017]根据所述单元类型对应的执行模板,结合所述规则条件单元的维度值计算每个标识符的匹配结果。
[0018]作为本发明一实施方式的进一步改进,所述方法包括监控每个规则条件单元在一定周期内的匹配成功率,其包括:
[0019]实时地分别采集若干个规则条件单元在一定周期内的匹配成功率,所述匹配成功率=规则条件单元在一定周期内的匹配成功次数/规则条件单元在一定周期内的匹配次数。
[0020]作为本发明一实施方式的进一步改进,计算所述匹配成功率具体包括:
[0021]将所述规则表达式按照运算符优先级和规则条件单元解析成规则语法二叉树,所述规则语法二叉树的每个叶子节点对应一个规则条件单元;
[0022]为叶子节点中相同的规则条件单元分配同一个标识符;
[0023]将所述语法树的叶子节点替换为规则条件单元对应的标识符,并计算所述标识符的匹配结果;
[0024]所述匹配成功率=规则条件单元对应的标识符的匹配成功次数/规则条件单元对应的标识符的匹配次数。
[0025]作为本发明一实施方式的进一步改进,“计算所述标识符的匹配结果”具体包括:
[0026]根据所述规则条件单元的单元类型将标识符分堆;
[0027]根据所述单元类型对应的执行模板,结合所述规则条件单元的维度值计算每个标识符的匹配结果。
[0028]为实现上述发明目的之一,本发明一实施方式提供了一种规则匹配运算装置,其包括:分解模块,用于将规则表达式分解为若干个规则条件单元;
[0029]匹配模块,用于根据所述规则表达式中运算符的优先级和每个规则条件单元在一定周期内监控到的匹配成功率调整规则条件单元的运算顺序;其中,
[0030]若根据运算符优先级确定的当前运算的规则条件单元之间是和关系,则优先运算匹配成功率较低的规则条件单元;
[0031]若根据运算符优先级确定的当前运算的规则条件单元之间是或关系,则优先运算匹配成功率较高的规则条件单元。
[0032]作为本发明一实施方式的进一步改进,所述规则条件单元由单元类型、维度值、运算符、比较值组成。
[0033]作为本发明一实施方式的进一步改进,所述匹配模块还用于:将所述规则表达式按照运算符优先级和规则条件单元解析成语法二叉树,所述语法二叉树的每个叶子节点对应一个规则条件单元;
[0034]为叶子节点中相同的规则条件单元分配同一个标识符;
[0035]将所述语法二叉树的叶子节点替换为规则条件单元对应的标识符,并由叶子节点逐层向上进行两两运算;其中,根据所述规则表达式中运算符的优先级和每个标识符对应的规则条件单元在一定周期内监控到的匹配成功率调整标识符的运算顺序。
[0036]作为本发明一实施方式的进一步改进,所述匹配模块还用于:根据所述规则条件单元的单元类型将标识符分堆;
[0037]根据所述单元类型对应的执行模板,结合所述规则条件单元的维度值计算每个标识符的匹配结果。
[0038]作为本发明一实施方式的进一步改进,所述匹配模块用于:监控每个规则条件单元在一定周期内的匹配成功率;
[0039]所述匹配模块具体用于,实时地分别采集若干个规则条件单元在一定周期内的匹配成功率,所述匹配成功率=规则条件单元在一定周期内的匹配成功次数/规则条件单元在一定周期内的匹配次数。
[0040]作为本发明一实施方式的进一步改进,所述匹配模块用于:将所述规则表达式按照运算符优先级和规则条件单元解析成规则语法二叉树,所述规则语法二叉树的每个叶子节点对应一个规则条件单元;
[0041]为叶子节点中相同的规则条件单元分配同一个标识符;
[0042]将所述语法树的叶子节点替换为规则条件单元对应的标识符,并计算所述标识符的匹配结果;
[0043]所述匹配成功率=规则条件单元对应的标识符的匹配成功次数/规则条件单元对应的标识符的匹配次数。
[0044]作为本发明一实施方式的进一步改进,所述匹配模块用于:根据所述规则条件单元的单元类型将标识符分堆;
[0045]根据所述单元类型对应的执行模板,结合所述规则条件单元的维度值计算每个标识符的匹配结果。
[0046]与现有技术相比,本发明的有益效果是:本发明的规则匹配运算方法及装置,可实时监控规则表达式中各个规则条件单元的匹配成功率,并根据该匹配成功率调整整个规则表达式的运算顺序,以提高所述规则表达式的整体运算速度,进而提升运算效率。
【附图说明】
[0047]图1是本发明一实施方式中规则匹配运算方法的流程示意图;
[0048]图2A是本发明一实施方式中规则语法二叉树的结构示意图;
[0049]图2B是图2A对应的规则条件单元池的结构示意图;
[0050]图2C是将图2A中规则语法二叉树中的规则单元表达式替换为规则条件单元池中的标识符的结构示意图;
[0051]图2D是图2B的标识符分堆后匹配结果的示意图;
[0052]图2E是图2C的匹配结果示意图;
[0053]图3是本发明一实施方式的规则匹配运算装置的模块示意图。
【具体实施方式】
[0054]以下将结合附图所示的各实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所轻易做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
[0055]如图1所示,在本发明一实施方式中,所述规则匹配运算方法包括:
[0056]将规则表达式分解为若干个规则条件单元。相应的,所述规则表达式通常包括若干个规则条件单元及连接所述规则条件单元的运算符。
[0057]例如:规则表达式为:
[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” 为规则条件单元,“&&”、“ I 为运算符。
[0059]相应的,所述规则条件单元由单元类型、维度值、运算符、比较值组成。以上述规则表达式的其中一个规则条件单元为例:
[0060]例如:“String:A>1”,其中,“String”为单元类型,“Α”为维度值,“〉”为运算符,“I”为比较值。
[0061]可以理解的是,所述单元类型包括多个种类,例如:string、int、long、double、money、date、boolean等,所述运算符同样包括多个种类,例如:“ = =、! =、>、〈、(、)、&&、
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1