CN104750724A - 一种消息过滤方法和装置 - Google Patents
一种消息过滤方法和装置 Download PDFInfo
- Publication number
- CN104750724A CN104750724A CN201310744152.8A CN201310744152A CN104750724A CN 104750724 A CN104750724 A CN 104750724A CN 201310744152 A CN201310744152 A CN 201310744152A CN 104750724 A CN104750724 A CN 104750724A
- Authority
- CN
- China
- Prior art keywords
- filtercondition
- result
- low level
- level
- calculation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明公开一种消息过滤方法,包括将所有过滤条件按照逻辑关系进行级别划分;在各级中根据所述各过滤条件的出现频次对所述各过滤条件进行编号,并按照所述级别和所述编号升序将各过滤条件进行存储;从低级别中的各过滤条件开始对接收的消息进行过滤计算,按照次低级别中的各过滤条件对所述低级别过滤计算的计算结果进行过滤计算,按所述各级别中各过滤条件的编号存储该过滤条件的计算结果,依次完成所有级别中所有过滤条件的过滤计算;依使用者需求按照相应级别过滤条件的过滤计算结果过滤消息。使用本发明可实现对海量消息的高效过滤,本发明还提供一种消息过滤装置。
Description
技术领域
本发明涉及消息过滤技术,具体涉及一种消息过滤方法。
背景技术
随着网络规模的不断扩大,用户对于集中化要求越来越高,快速处理消息对网络信息进行有效的管理,为客户提供优质的服务,是提高提高企业的竞争力的关键。各行业中的网络管理系统中会需要采集和处理来自多个专业的海量消息和性能实时数据,为了保证快速发现、定位和处理目标消息,必须设计和实施高效的消息过滤机制,将目标消息从海量消息中过滤出来。
目前的消息过滤方式主要有两种,基于逻辑表达式的求值和基于RETE算法的规则引擎的计算。
基于逻辑表达式求值,是将过滤规则定义为一个逻辑表达式,然后在执行过滤时,将实时消息的对应字段值替换到逻辑表达式中,然后进行逻辑表达式求值。如果结果为真,说明过滤规则成立,否则说明过滤规则不成立。但是由于业务场景情况,有些关键字段在各个规则中出现的频次很高,如果按照逻辑表达式分别进行求值,那么在各个过滤规则中对于重复的字段表达式就造成了重复求值、重复计算,给有限的资源造成了极大的浪费,同时降低了消息过滤的效率。
基于RETE算法的规则引擎计算,是将所有过滤规则都导入规则引擎,由RETE算法对规则计算进行优化,减少重复求值。其中使用了多线程技术来提高计算速度。但是由于RETE算法处理对于规则计算并未进行深入优化,所以效率往往较低,并且耗费大量CPU时间。
因此一种简便高效快速的完成消息过滤的方法和装置亟待出现。
发明内容
本发明提供一种消息过滤方法,其特征在于,所述方法包括:
将所有过滤条件按照逻辑关系进行级别划分;
在各级中根据所述各过滤条件的出现频次对所述各过滤条件进行编号,并按照所述级别和所述编号升序将各过滤条件进行存储;
从低级别中的各过滤条件开始对接收的消息进行过滤计算,按照次低级别中的各过滤条件对所述低级别过滤计算的计算结果进行过滤计算,按所述各级别中各过滤条件的编号存储该过滤条件的计算结果,依次完成所有级别中所有过滤条件的过滤计算;
依使用者需求按照相应级别过滤条件的过滤计算结果过滤消息。
优选的,所述将所有过滤条件按照逻辑关系进行级划分的方法具体为:
将单个字段的一个过滤条件划分为零级过滤条件;
不同字段的所述零级过滤条件以“与”、“或”中任一种逻辑关系组合的划分为壹级过滤条件;
所述各级过滤条件是多个低一级过滤条件以相同的逻辑关系组合而成;
相邻两级所述过滤条件中的逻辑关系相反;
可根据实际过滤情况确定过滤条件划分的级别数量。
具体的,将所有过滤条件按照逻辑关系划分为四级:
零级过滤条件为将单个字段的一个过滤条件划分的Sub_condition子条件;
壹级过滤条件为多个不同字段的Sub_condition子条件相“与”组合成的Condition条件;
贰级过滤条件为多个Condition条件相“或”组合成的Filter过滤器;
叁级过滤条件为多个Filter过滤器相“与”组合成的Rule过滤规则。
进一步的,所述在各级中根据所述各过滤条件的出现频次对所述各过滤条件进行编号的方法具体为:
分别对所述各级中的过滤条件按照出现频次由高到底进行升序编号;
对所述各级中出现频次最高的过滤条件编号为0;
更进一步的,所述按照所述级和所述编号升序将各过滤条件进行存储的方法为:
按照各级中所述过滤条件编号升序,分别存储各级过滤条件的条件名称、条件值和该过滤条件编号。
详细的,所述从低级别中的各过滤条件开始对接收的消息进行过滤计算,按照次低级别中的各过滤条件对所述低级别过滤计算的计算结果进行过滤计算的方法具体为:
将所述消息中字段的值代入包含所述字段的所述低级别过滤条件中,对所述代入值的低级别过滤条件进行逻辑计算,获得低级别过滤计算结果;
将所述低级别过滤计算结果代入所述次低级别中的各过滤条件,按照所述次低级别中各过滤条件描述的逻辑关系进行逻辑计算。
优选的,所述按各级别中各过滤条件的编号存储该过滤条件的计算结果的方法具体为:
为所述各级别过滤条件创建结果数组;
依照所述各级别结果数组下标与所述各级别中各过滤条件编号相同的原则,将该过滤条件的计算结果存储至该级别结果数组中的相应位置。
详细的,所述将所述低级别过滤计算结果代入所述次低级别中的各过滤条件,按照所述次低级别中各过滤条件描述的逻辑关系进行逻辑计算的方法为:
根据所述次低级别过滤条件,获取该次低级别过滤条件中所包含的低级别过滤条件,将所述获取的低级别过滤条件的计算结果代入所述次低级别过滤条件中;
按照所述次低级别过滤条件描述的各低级别过滤条件逻辑关系,对所述代入的低级别过滤条件结果进行逻辑计算。
优选的,所述方法还包括:
为所述各过滤条件赋予过滤条件ID;
根据消息过滤使用者发送的过滤条件ID,根据所述该过滤条件的过滤计算结果过滤消息。
本发明还公开一种消息过滤装置,其特征在于,所述装置包括:
级别划分单元,用于将所有过滤条件按照逻辑关系进行级别划分;
编号单元,用于在所述级别划分单元划分的各级中根据所述各过滤条件的出现频次对所述各过滤条件进行编号;
过滤计算单元,用于从低级别中的各过滤条件开始对接收的消息进行过滤计算,按照次低级别中的各过滤条件对所述低级别过滤计算的计算结果进行过滤计算,将各级的过滤计算结果发送给存储单元;
存储单元,用于按照所述级别划分单元划分的级别和所述编号单元编号的升序将各过滤条件进行存储,并按各级别中各过滤条件的编号存储该过滤条件的计算结果;
消息过滤单元,用于根据所述过滤计算单元计算的最高级别过滤条件的过 滤计算结果过滤消息。
优选的,所述级别划分单元根据如下方法进行过滤条件的级别划分:
将单个字段的一个过滤条件划分为零级过滤条件;
不同字段的所述零级过滤条件以“与”、“或”中任一种逻辑关系组合的划分为壹级过滤条件;
各级所述过滤条件是多个低一级过滤条件以相同的逻辑关系组合而成;
相邻两级所述过滤条件中的逻辑关系相反;
可根据实际过滤情况确定过滤条件划分的级别数量。
详细的,所述编号单元进一步包括:
频次统计模块,用于统计各级别中每个过滤条件的出现频次;
编号模块,用于根据所述频次统计模块统计的各级别中每个过滤条件的出现频次,按照所述出现频次由高到低分别对各级别中的过滤条件进行编号,对所述各级中出现频次最高的过滤条件编号为0。
详细的,所述存储单元进一步包括:
过滤条件存储模块,用于按照编号模块对各级中所述过滤条件的编号升序,分别存储每级过滤条件的条件名称、条件值和该过滤条件编号;
结果数组,用于依照所述各级别结果数组下标与所述各级别中各过滤条件编号相同的原则,将所述过滤计算单元计算的该过滤条件的计算结果存储至该级别结果数组中的相应位置。
详细的,所述过滤计算单元进一步包括:
值代入模块,用于将所述接收消息的字段值或低级别过滤条件的计算结果代入所述过滤条件存储模块中的各级别过滤条件中;
计算模块,用于根据所述代入的各级别过滤条件描述的逻辑关系,对所述值代入模块代入的字段值或低级别过滤条件的计算结果进行逻辑计算;
结果发送模块,用于将所述计算模块计算的逻辑计算结果发送给所述结果数组。
进一步的,所述过滤条件存储模块存储为所述各过滤条件赋予过滤条件ID;
所述结果发送模块根据消息过滤使用者发送的过滤条件ID,根据所述该过滤条件的过滤计算结果过滤消息后发送给消息过滤使用者。
本发明通过过滤条件级别划分,将海量的过滤条件进行了优化,进行级别划分后,各级别中各过滤条件的逻辑关系非常清晰,基于对过滤条件按照一定的 逻辑关系进行分级,可对已分级的过滤条件进行压缩,根据各级别中各过滤条件的出现频次将各过滤条件进行存储,即使得各过滤条件中所涉及的字段仅需要进行一次过滤计算,避免了现有技术中对所有出现的字段重复计算造成的资源浪费,又使出现频次高的过滤条件排在前面,利用逻辑条件惰性求值的特点,进一步节约了计算时间,提高了逻辑计算的效率;本发明通过存储各级过滤计算结果,将各级计算结果存入结果数组,基于上层过滤结果的层层过滤计算时只需要访问简单的结果数组取值,进行简单的逻辑计算,即可获得最高级别的过滤规则值,取值和计算过程都是简单的对数的操作和计算,可大幅度提高逻辑计算的效率,即提高消息过滤的效率。
附图说明
图1为本发明实施例一提供的一种消息过滤方法的流程示意图;
图2为本发明实施例二提供的方法流程图;
图3为本发明实施例三提供的一种消息过滤装置的结构示意图。
具体实施方式
以下将配合图式及实施例来详细说明本发明的实施方式,藉此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
在实际的消息过滤应用中,不同的使用者会根据自身需求设定一些过滤条件,这些过滤条件有的简单有的复杂,但均是对需要过滤的消息中某些字段值进行条件限定,满足条件限定的,即满足过滤条件,最简单的过滤条件是对一个字段的条件限定,复杂的过滤条件是对多个字段的多个条件限定,每个字段的条件限行间又存在一定的逻辑关系。传统的过滤计算方法,对于简单的过滤条件,只需要进行一步简单计算即可,但对于复杂的过滤条件,则需要先对其中每个字段过滤条件计算出结果,然后再进一步进行逻辑运算,一个复杂的过滤条件经过取值、赋值、运算、再运算后,需要占用大量的时间,且对于复杂的过滤条件,有些关键字段的相同过滤条件会在不同的使用者设定的过滤条件 中重复出现多次,因此关键字段过滤条件会出现重复运算的情况,也会占用资源,降低消息过滤的效率,当出现海量消息实时上报时,则无法完成正常的消息过滤,错误率高过滤时间长。
本发明对所有过滤条件按照逻辑关系进行级别划分,优化过滤条件,在此基础上根据各过滤条件的出现频率进行排序编号,接收到消息后,从最低级别开始进行逐级运算,高级别的过滤条件基于低级别过滤条件的运算结果进行运算,保证了最低级别中的各过滤条件仅运行一次,明显提高了消息过滤的效率。
下面如图1所示,给出本发明的实施例一阐述一种消息过滤的方法,如所述方法包括:
步骤S101:将所有过滤条件按照逻辑关系进行级别划分。
过滤条件为使用者根据业务需求设定的,可以是对数字的比较判定、字符串的比较判定等。
复杂过滤条件的逻辑关系为“与”和“或”
将所有过滤条件按照逻辑关系进行级划分的方法具体为:
1、将单个字段的一个过滤条件划分为零级过滤条件;
2、不同字段的所述零级过滤条件以“与”、“或”中任一种逻辑关系组合的划分为壹级过滤条件;
3、所述各级过滤条件是多个低一级过滤条件以相同的逻辑关系组合而成;
4、相邻两级所述过滤条件中的逻辑关系相反;
5、可根据实际过滤情况确定过滤条件划分的级别数量。
所述级别划分时,参照上述方法进行划分,遍历所有过滤条件,遇到一个字段的一个过滤条件,就记录为零级过滤条件,遇到不同字段的多个零级过滤条件以“与”(也可以是“或”)组合就记录为壹级过滤条件,遇到多个壹级过滤条件以“或”(也可以是“与”,与相邻级别逻辑关系相反)组合就记录为贰级过滤条件,依次类推。
步骤S102:在各级中根据所述各过滤条件的出现频次对所述各过滤条件进行编号,并按照所述级别和所述编号升序将各过滤条件进行存储。
分别对所述各级中的过滤条件按照出现频次由高到底进行升序编号;
对所述各级中出现频次最高的过滤条件编号为0;
按照各级中所述过滤条件编号升序,分别存储各级过滤条件的条件名称、 条件值和该过滤条件编号。
通过对各过滤条件进行计数获得各过滤条件的出现频次,对各级中的各过滤条件分别进行编号,并分别进行存储。
下面以三级过滤条件存储为例进行说明。
零级过滤条件中出现频次最高的过滤条件编号为0,其次为1、2、3……,将这些零级过滤条件按照编号的上升序列进行存储,分别存储每个零级过滤条件的条件名称、条件值和编号,如下表1所示。
表1零级过滤条件存储内容
过滤条件名称 | 出现频次 | 条件 | 编码 |
A | 0 | ||
B | 1 | ||
C | 2 | ||
D | 3 | ||
E | 4 | ||
…… | …… |
表1中的过滤条件名称A、B、C为单个字段,出现频次标识该过滤规则在出现的次数,A出现次数最多,排在前面,编码为0,条件值标识该条件的描述值内容,例如过滤条件为A=1,过滤条件名称为A,条件为A=1。
壹级过滤条件是不同字段的零级过滤条件以相同的逻辑关系组合而成,壹级过滤条件中出现频次最高的过滤条件编号为0,其次为1、2、3……,将这些壹级过滤条件按照编号的上升序列进行存储,如表2所示:
表2壹级过滤条件存储内容
过滤条件名称 | 出现频次 | 条件值 | 编码 |
A&B&C | 0 | ||
B&D | 1 | ||
B&E&C | 2 | ||
B&E | 3 | ||
C&D&E | 4 | ||
…… | …… |
贰级过滤条件是不同的壹级过滤条件以相同的逻辑关系组合而成,但相邻两级的逻辑关系相反,由于壹级过滤条件以“与”组合,因此贰级过滤条件以逻辑关系“或”组合贰级过滤条件中出现频次最高的过滤条件编号为0其次为1、2、 3……,将这些贰级过滤条件按照编号的上升序列进行存储,如表3所示。
表3贰级过滤条件存储内容
过滤条件名称 | 出现频次 | 条件值 | 编码 |
(A&B&C)or(B&D) | 0 | ||
(B&E)or(B&D) | 1 | ||
(A&B&C)or(C&D&E) | 2 | ||
(B&E)or(B&E&C) | 3 | ||
(A&B&C)or(B&E&C) | 4 | ||
…… | …… |
步骤S103:从低级别中的各过滤条件开始对接收的消息进行过滤计算,按照次低级别中的各过滤条件对所述低级别过滤计算的计算结果进行过滤计算,按所述各级别中各过滤条件的编号存储该过滤条件的计算结果,依次完成所有级别中所有过滤条件的过滤计算。
低级别过滤条件和次低级别过滤条件是相对而言,分别指相邻的两级过滤条件,如对于零级过滤条件和壹级过滤条件来说,零级即为低级过滤条件,壹级即为次低级过滤条件;对于壹级过滤条件和贰级过滤条件来说,壹级即为低级过滤条件,而贰级即为次低级过滤条件。
将所述消息中字段的值代入包含所述字段的所述低级别过滤条件中,对所述代入值的低级别过滤条件进行逻辑计算,获得低级别过滤计算结果。
将所述低级别过滤计算结果代入所述次低级别中的各过滤条件,按照所述次低级别中各过滤条件描述的逻辑关系进行逻辑计算。
对接收的消息,从低级别的过滤条件开始进行过滤计算,根据零级过滤条件,对接收的消息中包含有与过滤条件相同字段的,按照所述的零级过滤条件进行过滤计算,输出零级过滤计算的结果。
基于零级过滤条件的过滤计算结果,将这些过滤计算结果代入壹级过滤条件中,按照壹级过滤条件描述的逻辑关系,再次进行逻辑计算,获得每个壹级过滤条件的过滤计算结果,输出壹级过滤计算结果。
依次类推,完成所有级别的过滤计算,此时对于接收的消息,已完成所有的过滤规则计算,但对于每个零级过滤规则,只进行了一次计算,避免了过滤规则的重复计算。
为所述各级别过滤条件创建结果数组。
依照所述各级别结果数组下标与所述各级别中各过滤条件编号相同的原则,将该过滤条件的计算结果存储至该级别结果数组中的相应位置。
采用数组对输出的过滤计算结果进行保存,以保证获取、填写、过滤计算结果的简便和高效。
首先数组的构成本身就很简单,仅包括下标和值,下标从0开始,而逻辑运算结果的值也很简单,为T(真)和F(假)。
接收消息后,对各零级过滤规则进行代入值并进行逻辑判断获得各过滤规则的逻辑计算结果,T(真)和F(假),将结果填入结果数组,如下标为0的零级过滤条件结果数组位置中填写编号为0的零级过滤条件计算结果,依次类推。
步骤S104:依使用者需求按照相应级别过滤条件的过滤计算结果过滤消息。
为了更好的说明本发明的对消息的过滤,下面结合实例给出本发明的实施例二,如图2所示:
步骤S201:将所有过滤条件按照逻辑关系进行级别划分。
根据需要对所有过滤条件按照逻辑关系划分为四级:
分别为Sub_condition(子条件)、Condition(条件)、Filter(过滤器)、Rule过滤规则。
零级:单个字段的一个过滤条件划分的Sub_condition。
壹级:多个不同字段的Sub_condition相“与”组合成的Condition。
贰级:多个Condition条件相“或”组合成的Filter;
叁级:多个Filter过滤器相“与”组合成的Rule。
Sub_Condition分为多种类型,以消息字段A举例有以下常见情况:
A=1(数字类型比较)
A=”match string”(字符串类型比较)
A like”%match string%”(字符串类型模式匹配)
A in(1,2,3)(数字类型子集包含)
A like(”%match string1%””%match string2%””%match string3%”)(字符串类型模式匹配集合包含)
NOT Sub_Condition(子条件取反)
步骤S202:根据各级过滤条件的出现频次,在各级中分别对各过滤条件进行编码,并按照所述级别和所述编号升序将各过滤条件进行存储。
这里以最简单的数字类型条件为例,对于Sub_Condition来说,先获取各Sub_Condition的出现频次,然后根据其出现频次对各Sub_Condition进行编号,存储Sub_Condition相关字段,以及每个字段的过滤条件,Sub_Condition存储为表4所示:
表4Sub_Condition存储示意
过滤条件名称 | 出现频次 | 条件 | 编码 |
Aresource_status | 4401 | ,1,7, | 0 |
alarm_resource_status | 3333 | ,15,18, | 1 |
vendor_id | 2637 | ,8, | 2 |
professional_type | 2324 | ,2, | 3 |
vendor_id | 1245 | ,1, | 4 |
…… | …… | …… | …… |
Condition存储如表5所示,可以Sub_Condition存储示意中的各过滤条件的编码代替条件名称:
表5Condition存储示意
过滤条件名称 | 频次 | 条件 | 编码 |
Aresource_status&alarm_resource_status | 2230 | 0&1 | 0 |
Aresource_status&alarm_resource_status&vendor_id | 908 | 0&1&2 | 1 |
alarm_resource_status&vendor_id&professional_type | 607 | 1&2&3 | 2 |
professional_type&vendor_id | 576 | 3&4 | 3 |
Aresource_status&professional_type&vendor_id | 41 | 0&3&4 | 4 |
…… | …… | …… | …… |
Filter存储如表6所示,可以Condition存储示意中的各过滤条件的编码代替条件名称。
表6Filter存储示意
Rule存储如表7所示,可以Filter存储示意中的各过滤条件的编码代替条件名称。
表7Rule存储示意
步骤S203:为所述各级别过滤条件创建结果数组。
创建结果数组为了保存各级逻辑计算的计算结果,由于数组简单易读取的特性,保证保存本级逻辑计算结果时的高效,次低级过滤计算时,会用到低级过滤计算的结果,按照数组下标读取相应过滤条件的计算结果,速度会很快。
数组是相同数据类型的元素的集合,数组中的各元素有先后顺序,在内存中按照这个先后顺序连续存放在一起,数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。
创建的结果数组用来保存过滤逻辑计算的计算结果,因此其元素为真“T”和假“F”,每个级别的结果数组可以分别命名,根据同级别结果数组下标和同级别过滤条件编号相同的原则,将该过滤条件的过滤计算结果,存储到同级别结果数组下标为该编号的位置。
如上表4中Aresource_status in(1,7)的过滤条件,编号为0,则它的过滤计算结果可保存在Sub_Condition结果数组中下标为0的位置,以此类推。
步骤S204:将接收消息中字段的值代入包含该字段的低级别过滤条件中,对代入值的低级别过滤条件进行逻辑计算,获得低级别过滤计算结果。
从文中所述Sub_Condition过滤条件开始,对接收的消息进行过滤计算,将 计算结果填入Sub_Condition结果数组。
将消息中字段的值分别代入表4中的Sub_Condition过滤条件。
接收的消息N包括Aresource_status=1;alarm_resource_status=15;vendor_id=8;professional_type=4等字段。
将具体值代入表4中的Sub_Condition过滤条件,进行逻辑运算,消息字段Aresource_status=1,包含在是1或7中的一个,因此对于Aresource_status in(1,7)这个条件逻辑判定为真(本文中以T表示真,以F表示假,也可定义其他真假表示方式如1表示真,0表示假),由于Aresource_status字段的编号为0,因此填入结果数组下标为0的位置,对Sub_Condition各过滤条件进行逻辑计算,存储Sub_Condition结果数组。如表8所示:
表8Sub_Condition结果数组示意
步骤S205:将低级别过滤计算结果代入次低级别中的各过滤条件,按照次低级别中各过滤条件描述的逻辑关系进行逻辑计算。
根据所述次低级别过滤条件,获取该次低级别过滤条件中所包含的低级别过滤条件,将所述获取的低级别过滤条件的计算结果代入所述次低级别过滤条件中。
将Sub_Condition过滤条件的过滤计算结果代入Condition过滤条件,按照Condition过滤条件进行逻辑计算。
编码为0的Condition过滤条件是Sub_Condition编号为0和编号为1的过滤条件相“与”,因此只需要在Sub_Condition的结果数组中获取下标为0和1的计算结果,计算结果为“T”和“T”,按照编码为0的Condition过滤条件将两者相与即可,0&1获得的逻辑计算结果,“T”,将该计算结果填入下标为0的Condition结果数组。完成所有Condition的过滤条件,存储入Condition结果数组,如表9所示:
表9Sub_Condition结果数组示意
按照上述方法,依次获得Filter结果数组和Rule结果数组。分别如表10和表11所示。
表10Filter结果数组示意
表11Rule结果数组示意
步骤S206:依使用者需求按照相应级别过滤条件的过滤计算结果过滤消息。
上述步骤中各级结果数组中存储了各级别中各过滤条件的过滤计算结果,根据使用者需求,按照相应的过滤条件过滤计算结果进行过滤消息即可。
对于上述步骤中所述的消息N,满足过滤计算结果为“T”的过滤条件,如果有使用者使用了这些过滤条件,则根据过滤条件过滤消息。
优选的,可以为所述各过滤条件赋予过滤条件ID;
根据消息过滤使用者发送的过滤条件ID,根据所述该过滤条件的过滤计算结果过滤消息后发送给消息过滤使用者。
为过滤条件赋予过滤条件ID,过滤条件ID是唯一的,通过过滤条件ID查找到该过滤条件所在的级别中的编号,从而在相应级别的结果数组与编号相同下标的位置中获得过滤计算结果,按照所述过滤计算结果过滤消息。
通过本发明的过滤计算过程可获知,当众多海量过滤条件呈现时,通过对过滤条件的级别划分、按照出现频次对各级过滤条件编号的方式,优化过滤规则的结构;在此基础上,当进行消息过滤时,仅需要对最低级别的过滤条件进行一次计算,避免了传统过滤方法中的对重复出现的条件重复计算的情况,其他级别的计算均基于低级的过滤条件计算结果,进行简单的逻辑计算,简便快捷;对于每级别的过滤计算结果,采用数组进行保存,数组下标与过滤条件编号对应,使得获取计算结果的效率提高,综合多方面的设计,本发明最终提供了一种简便高效的消息过滤方法,可处理海量实时消息过滤。
本发明实施例三还公开了一种消息过滤装置,用以实现上文所述的一种消息过滤方法,如图3所示,所述装置包括:
级别划分单元1,用于将所有过滤条件按照逻辑关系进行级别划分。
级别划分单元1根据如下方法进行过滤条件的级别划分:
将单个字段的一个过滤条件划分为零级过滤条件;
不同字段的所述零级过滤条件以“与”、“或”中任一种逻辑关系组合的划分为 壹级过滤条件;
各级所述过滤条件是多个低一级过滤条件以相同的逻辑关系组合而成;
相邻两级所述过滤条件中的逻辑关系相反;
可根据实际过滤情况确定过滤条件划分的级别数量。
所述级别划分时,参照上述方法进行划分,遍历所有过滤条件,遇到一个字段的一个过滤条件,就记录为零级过滤条件,遇到不同字段的多个零级过滤条件以“与”(也可以是“或”)组合就记录为壹级过滤条件,遇到多个壹级过滤条件以“或”(也可以是“与”,与相邻级别逻辑关系相反)组合就记录为贰级过滤条件,依次类推。
具体的,所述级别划分单元1可将过滤条件按照逻辑关系划分为四级:
零级过滤条件为将单个字段的一个过滤条件划分的Sub_condition子条件;
壹级过滤条件为多个不同字段的Sub_condition子条件相“与”组成的Condition条件;
贰级过滤条件为多个Condition条件相“或”组成的Filter过滤器;
叁级过滤条件为多个Filter过滤器相“与”组成的Rule过滤规则。
编号单元2,用于在所述级别划分单元划分的各级中根据所述各过滤条件的出现频次对所述各过滤条件进行编号。
分别对所述各级中的过滤条件按照出现频次由高到底进行升序编号;对所述各级中出现频次最高的过滤条件编号为0;按照各级中所述过滤条件编号升序,分别存储各级过滤条件的条件名称、条件值和该过滤条件编号。
通过对各过滤条件进行计数获得各过滤条件的出现频次,对各级中的各过滤条件分别进行编号,并分别进行存储。
存储的示例参照上文方法中的描述,不再赘述。
为了完成对过滤条件进行编号,所述编号单元2可进一步包括:
频次统计模块21,用于统计各级别中每个过滤条件的出现频次。
可通过遍历计数的方式进行频次统计,遇到相同的过滤条件,频次就增加1。
编号模块22,用于根据所述频次统计模块21统计的各级别中每个过滤条件的出现频次,按照所述出现频次由高到低分别对各级别中的过滤条件进行编号,对所述各级中出现频次最高的过滤条件编号为0。
过滤计算单元3,用于从低级别中的各过滤条件开始对接收的消息进行过滤计算,按照次低级别中的各过滤条件对所述低级别过滤计算的计算结果进行过 滤计算,将各级的过滤计算结果发送给存储单元。
低级别过滤条件和次低级别过滤条件是相对而言,分别指相邻的两级过滤条件,如对于零级过滤条件和壹级过滤条件来说,零级即为低级过滤条件,壹级即为次低级过滤条件;对于壹级过滤条件和贰级过滤条件来说,壹级即为低级过滤条件,而贰级即为次低级过滤条件。
过滤计算单元3是基于低级过滤条件的过滤计算结果对次低级过滤条件进行过滤计算。
过滤计算单元3进一步包括:
值代入模块31,用于将所述接收消息的字段值或低级别过滤条件的计算结果代入所述过滤条件存储模块中的各级别过滤条件中。
计算模块32,用于根据所述代入的各级别过滤条件描述的逻辑关系,对所述值代入模块31代入的字段值或低级别过滤条件的计算结果进行逻辑计算。
结果发送模块33,用于将所述计算模块32计算的逻辑计算结果发送给所述结果数组42。
关于过滤计算单元3的进行过滤计算的方法,在上文中已有相应的描述,在此不再赘述。
存储单元4,用于按照所述级别划分单元划分的级别和所述编号单元编号的升序将各过滤条件进行存储,并按各级别中各过滤条件的编号存储该过滤条件的计算结果。
存储单元4进一步包括:
过滤条件存储模块41,用于按照编号模块对各级中所述过滤条件的编号升序,分别存储每级过滤条件的条件名称、条件值和该过滤条件编号。
优选的,过滤条件存储模块可保存为各过滤条件赋予的过滤条件ID。
零级过滤条件中出现频次最高的过滤条件编号为0,其次为1、2、3……,将这些零级过滤条件按照编号的上升序列进行存储,分别存储每个零级过滤条件的条件名称、条件值和编号。如上文中表1所示。
对于各级过滤条件的存储方法,参照上文方法论述。
结果数组42,用于依照所述各级别结果数组下标与所述各级别中各过滤条件编号相同的原则,将所述过滤计算单元计算的该过滤条件的计算结果存储至该级别结果数组中的相应位置。
接收消息后,对各零级过滤规则进行代入值并进行逻辑判断获得各过滤规 则的逻辑计算结果,T(真)和F(假),将结果填入结果数组,如下标为0的零级过滤条件结果数组位置中填写编号为0的零级过滤条件计算结果,依次类推。
消息过滤单元5,用于根据依使用者需求按照相应级别过滤条件的过滤计算结果过滤消息。
优选的,消息过滤单元可根据消息过滤使用者发送的过滤条件ID,根据所述该过滤条件的过滤计算结果过滤消息后发送给消息过滤使用者。
本发明装置用以实现一种消息过滤方法,所述各部分的相关描述参见本发明方法部分实施例一与实施例二描述,不再赘述。
虽然本发明所揭露的实施方式如上,然而所述的内容并非用以直接限定本发明的保护范围。任何本发明所属技术领域中技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作些许的更动。本发明的保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (15)
1.一种消息过滤方法,其特征在于,所述方法包括:
将所有过滤条件按照逻辑关系进行级别划分;
在各级中根据所述各过滤条件的出现频次对所述各过滤条件进行编号,并按照所述级别和所述编号升序将各过滤条件进行存储;
从低级别中的各过滤条件开始对接收的消息进行过滤计算,按照次低级别中的各过滤条件对所述低级别过滤计算的计算结果进行过滤计算,按所述各级别中各过滤条件的编号存储该过滤条件的计算结果,依次完成所有级别中所有过滤条件的过滤计算;
依使用者需求按照相应级别过滤条件的过滤计算结果过滤消息。
2.根据权利要求1所述的方法,其特征在于,所述将所有过滤条件按照逻辑关系进行级划分的方法具体为:
将单个字段的一个过滤条件划分为零级过滤条件;
不同字段的所述零级过滤条件以“与”、“或”中任一种逻辑关系组合的划分为壹级过滤条件;
所述各级过滤条件是多个低一级过滤条件以相同的逻辑关系组合而成;
相邻两级所述过滤条件中的逻辑关系相反;
可根据实际过滤情况确定过滤条件划分的级别数量。
3.根据权利要求2所述的方法,其特征在于,将所有过滤条件按照逻辑关系划分为四级:
零级过滤条件为将单个字段的一个过滤条件划分的Sub_condition子条件;
壹级过滤条件为多个不同字段的Sub_condition子条件相“与”组合成的Condition条件;
贰级过滤条件为多个Condition条件相“或”组合成的Filter过滤器;
叁级过滤条件为多个Filter过滤器相“与”组合成的Rule过滤规则。
4.根据权利要求2所述的方法,其特征在于,所述在各级中根据所述各过滤条件的出现频次对所述各过滤条件进行编号的方法具体为:
分别对所述各级中的过滤条件按照出现频次由高到底进行升序编号;
对所述各级中出现频次最高的过滤条件编号为0。
5.根据权利要求4所述的方法,其特征在于,所述按照所述级和所述编号升序将各过滤条件进行存储的方法为:
按照各级中所述过滤条件编号升序,分别存储各级过滤条件的条件名称、条件值和该过滤条件编号。
6.根据权利要求5所述的方法,其特征在于,所述从低级别中的各过滤条件开始对接收的消息进行过滤计算,按照次低级别中的各过滤条件对所述低级别过滤计算的计算结果进行过滤计算的方法具体为:
将所述消息中字段的值代入包含所述字段的所述低级别过滤条件中,对所述代入值的低级别过滤条件进行逻辑计算,获得低级别过滤计算结果;
将所述低级别过滤计算结果代入所述次低级别中的各过滤条件,按照所述次低级别中各过滤条件描述的逻辑关系进行逻辑计算。
7.根据权利要求6所述的方法,其特征在于,所述按各级别中各过滤条件的编号存储该过滤条件的计算结果的方法具体为:
为所述各级别过滤条件创建结果数组;
依照所述各级别结果数组下标与所述各级别中各过滤条件编号相同的原则,将该过滤条件的计算结果存储至该级别结果数组中的相应位置。
8.根据权利要求7所述的方法,其特征在于,所述将所述低级别过滤计算结果代入所述次低级别中的各过滤条件,按照所述次低级别中各过滤条件描述的逻辑关系进行逻辑计算的方法为:
根据所述次低级别过滤条件,获取该次低级别过滤条件中所包含的低级别过滤条件,将所述获取的低级别过滤条件的计算结果代入所述次低级别过滤条件中;
按照所述次低级别过滤条件描述的各低级别过滤条件逻辑关系,对所述代入的低级别过滤条件结果进行逻辑计算。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
为所述各过滤条件赋予过滤条件ID;
根据消息过滤使用者发送的过滤条件ID,根据所述该过滤条件的过滤计算结果过滤消息。
10.一种消息过滤装置,其特征在于,所述装置包括:
级别划分单元,用于将所有过滤条件按照逻辑关系进行级别划分;
编号单元,用于在所述级别划分单元划分的各级中根据所述各过滤条件的出现频次对所述各过滤条件进行编号;
过滤计算单元,用于从低级别中的各过滤条件开始对接收的消息进行过滤计算,按照次低级别中的各过滤条件对所述低级别过滤计算的计算结果进行过滤计算,将各级的过滤计算结果发送给存储单元;
存储单元,用于按照所述级别划分单元划分的级别和所述编号单元编号的升序将各过滤条件进行存储,并按各级别中各过滤条件的编号存储该过滤条件的计算结果;
消息过滤单元,用于根据所述过滤计算单元计算的最高级别过滤条件的过滤计算结果过滤消息。
11.根据权利要求10所述的装置,其特征在于,所述级别划分单元根据如下方法进行过滤条件的级别划分:
将单个字段的一个过滤条件划分为零级过滤条件;
不同字段的所述零级过滤条件以“与”、“或”中任一种逻辑关系组合的划分为壹级过滤条件;
各级所述过滤条件是多个低一级过滤条件以相同的逻辑关系组合而成;
相邻两级所述过滤条件中的逻辑关系相反;
可根据实际过滤情况确定过滤条件划分的级别数量。
12.根据权利要求11所述的装置,其特征在于,所述编号单元进一步包括:
频次统计模块,用于统计各级别中每个过滤条件的出现频次;
编号模块,用于根据所述频次统计模块统计的各级别中每个过滤条件的出现频次,按照所述出现频次由高到低分别对各级别中的过滤条件进行编号,对所述各级中出现频次最高的过滤条件编号为0。
13.根据权利要求12所述的装置,其特征在于,所述存储单元进一步包括:
过滤条件存储模块,用于按照编号模块对各级中所述过滤条件的编号升序,分别存储每级过滤条件的条件名称、条件值和该过滤条件编号;
结果数组,用于依照所述各级别结果数组下标与所述各级别中各过滤条件编号相同的原则,将所述过滤计算单元计算的该过滤条件的计算结果存储至该级别结果数组中的相应位置。
14.根据权利要求13所述的装置,其特征在于,所述过滤计算单元进一步包括:
值代入模块,用于将所述接收消息的字段值或低级别过滤条件的计算结果代入所述过滤条件存储模块中的各级别过滤条件中;
计算模块,用于根据所述代入的各级别过滤条件描述的逻辑关系,对所述值代入模块代入的字段值或低级别过滤条件的计算结果进行逻辑计算;
结果发送模块,用于将所述计算模块计算的逻辑计算结果发送给所述结果数组。
15.根据权利要求14所述的装置,其特征在于:
所述过滤条件存储模块存储为所述各过滤条件赋予过滤条件ID;
所述结果发送模块根据消息过滤使用者发送的过滤条件ID,根据所述该过滤条件的过滤计算结果过滤消息后发送给消息过滤使用者。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310744152.8A CN104750724B (zh) | 2013-12-30 | 2013-12-30 | 一种消息过滤方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310744152.8A CN104750724B (zh) | 2013-12-30 | 2013-12-30 | 一种消息过滤方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104750724A true CN104750724A (zh) | 2015-07-01 |
CN104750724B CN104750724B (zh) | 2019-10-25 |
Family
ID=53590423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310744152.8A Active CN104750724B (zh) | 2013-12-30 | 2013-12-30 | 一种消息过滤方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104750724B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729343A (zh) * | 2017-07-24 | 2018-02-23 | 上海壹账通金融科技有限公司 | 资源提取方法、计算机可读存储介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949725A (zh) * | 2006-11-22 | 2007-04-18 | 华为技术有限公司 | 一种日志消息的过滤系统及方法 |
US20100280981A1 (en) * | 2008-01-08 | 2010-11-04 | Mitsubishi Electric Corporation | Information filtering system, information filtering method and information filtering program |
CN102263670A (zh) * | 2011-08-29 | 2011-11-30 | 大唐移动通信设备有限公司 | 一种告警消息的上报处理方法及装置 |
-
2013
- 2013-12-30 CN CN201310744152.8A patent/CN104750724B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949725A (zh) * | 2006-11-22 | 2007-04-18 | 华为技术有限公司 | 一种日志消息的过滤系统及方法 |
US20100280981A1 (en) * | 2008-01-08 | 2010-11-04 | Mitsubishi Electric Corporation | Information filtering system, information filtering method and information filtering program |
CN102263670A (zh) * | 2011-08-29 | 2011-11-30 | 大唐移动通信设备有限公司 | 一种告警消息的上报处理方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729343A (zh) * | 2017-07-24 | 2018-02-23 | 上海壹账通金融科技有限公司 | 资源提取方法、计算机可读存储介质及电子设备 |
WO2019019619A1 (zh) * | 2017-07-24 | 2019-01-31 | 深圳壹账通智能科技有限公司 | 资源提取方法、计算机可读存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104750724B (zh) | 2019-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521386B (zh) | 基于集群存储的空间元数据分组方法 | |
CN105631003B (zh) | 支持海量数据分组统计的智能索引构建、查询及维护方法 | |
CN102929906B (zh) | 基于内容特征和主题特征的文本分组聚类方法 | |
CN104021123B (zh) | 用于数据迁移的方法和系统 | |
CN105630803B (zh) | 文档型数据库建立索引的方法和装置 | |
CN106600067A (zh) | 多维立方体模型的优化方法和装置 | |
CN103150163A (zh) | 一种基于MapReduce模型的并行关联方法 | |
CN114841374A (zh) | 一种基于随机贪心算法的横向联邦梯度提升树优化方法 | |
Dueñas-Osorio | Interdependent response of networked systems to natural hazards and intentional disruptions | |
CN102024062A (zh) | 一种实现数据动态缓存处理的装置及方法 | |
CN102360371A (zh) | 数据处理装置和数据处理方法 | |
CN103778203B (zh) | 一种网络管理数据无损压缩存储与检索的方法与系统 | |
CN106844288A (zh) | 一种随机字符串生成方法及装置 | |
CN106844320A (zh) | 一种财务报表整合方法和设备 | |
CN116703132B (zh) | 共享车辆动态调度的管理方法、装置及计算机设备 | |
CN106407221B (zh) | 地址数据检索方法及装置 | |
CN104580518A (zh) | 一种用于存储系统的负载均衡控制方法 | |
CN103761298B (zh) | 一种基于分布式架构的实体匹配方法 | |
CN108681577A (zh) | 一种新型的库结构数据索引方法 | |
CN104750724A (zh) | 一种消息过滤方法和装置 | |
CN106021245A (zh) | 数据的可视化方法和装置 | |
CN102799750B (zh) | 几何体表面三角形剖分的公共边和非公共边快速生成方法 | |
CN110019054A (zh) | 日志去重方法和系统、内容分发网络系统 | |
CN108805755A (zh) | 一种旅游套餐生成方法及装置 | |
He et al. | Multi-objective spatially constrained clustering for regionalization with particle swarm optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |