CN106469218A - 一种基于位图的布尔表达式存储、匹配方法和系统 - Google Patents

一种基于位图的布尔表达式存储、匹配方法和系统 Download PDF

Info

Publication number
CN106469218A
CN106469218A CN201610811459.9A CN201610811459A CN106469218A CN 106469218 A CN106469218 A CN 106469218A CN 201610811459 A CN201610811459 A CN 201610811459A CN 106469218 A CN106469218 A CN 106469218A
Authority
CN
China
Prior art keywords
subitem
value
item
boolean expression
index
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
Application number
CN201610811459.9A
Other languages
English (en)
Other versions
CN106469218B (zh
Inventor
刘燕兵
卢毓海
张春燕
张萍
谭建龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN201610811459.9A priority Critical patent/CN106469218B/zh
Publication of CN106469218A publication Critical patent/CN106469218A/zh
Application granted granted Critical
Publication of CN106469218B publication Critical patent/CN106469218B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于位图的布尔表达式存储、匹配方法和系统。本发明存储阶段:针对多个布尔表达式的各个子项,对其相应的布尔表达式序号和所在位置进行存储,并按照子项值的大小升序排序,同时记录每个布尔表达式子项数目;对子项值建立索引。匹配阶段:开辟数组位向量bitmap存储每个布尔表达式的匹配情况,将每个能匹配的布尔表达式所对应的位置置为1,判断bitmap中1的个数是否与其子项数目一致,若一致,则输出对应序号,并将bitmap[k]置为‑1以防止重复匹配该布尔表达式,否则继续匹配下一文本项。本系统包括系统预处理部件、存储子项部件、构建索引部件、访问信息部件和返回信息部件。本发明大大提高了查询效率。

Description

一种基于位图的布尔表达式存储、匹配方法和系统
技术领域
本发明旨在设计利用位图形式存储及查询与(&)的布尔表达式,属于信息过滤、信息检索、计算生物学等领域,涉及到一种基于位图的布尔表达式存储、匹配方法和系统。
背景技术
随着网络数据每秒数以百兆字节甚至数千兆字节的增多,安全系统,如病毒检测系统、入侵检测系统、网络数据包深层检测系统、垃圾邮件过滤系统、垃圾短信过滤系统等,要求更准确、更快速地对海量信息进行分析过滤。面对急剧膨胀的网络信息量和日趋复杂的网络环境,传统方法中,直接使用经典串匹配算法对规则进行匹配,并采用简单关键词来描述规则的方法,已经无法满足需求。因此,设计更加简单高效快速的匹配方法和系统,对处理安全系统中更加复杂的规则,具有重要的理论和实际意义。经实验验证,本发明提出的基于位图的布尔表达式匹配方法是一种很好的解决方法。
目前具有代表性的布尔表达式匹配算法包括RE-Tree模型、决策树模型、有向无环控制流图模型、计数算法、最长过滤算法、BE-Tree模型等。
文献(Chee-Yong Chan,Minos GaroMalakis,Rajeev Rastogi,RE-Tree:AnEMMicient Index Structure Mor Regular Expressions[C].Proceedings on the 28thVLDB ConMerence,Hong Kong,China,2002)提出RE-Tree模型来计算复杂的正则表达式问题。RE-Tree模型主要目的是用来处理任意复杂的表达式问题,当把其用在相对简单的布尔表达式问题上时,并不能达到很好的效果,而且空间需求很大。
文献(Alok S Tongaonkar.Mast pattern-matching techniques Mor packetMiltering[D].New York:Stony Brook University,2004)提出的决策树模型用在数据包过滤系统中,对数据包各个属性条件进行快速检测,包括原目的IP和端口等。在属性数目确定的情况下,可以达到较好的效果。该模型面临的问题是不确定性,在复杂布尔表达式下,决策树可能不是一个确定性自动机。由于这种树形结构,算法的空间局部性会降低,也会进一步影响算法性能。
文献(李安怀,荆继武.网络安全系统中的快速规则匹配[C].计算机工程与设计.Vol.28,No.6,pages 1269-1272,Mar 2007)提出了有向无环控制流图(CMG)模型,每个图节点代表一个布尔变量,每个节点有两个转移边,分别在该布尔变量取值为真为假时进行转移。如果一个节点布尔变量经过计算后取真值,则沿着真值转移走,如果经过计算取假值则沿着假值转移走。如果最终走到true节点,则代表命中了一个表达式。有向无环控制流图的匹配过程相当于遍历图的过程。有向无环图模型与决策树模型面临着同样的问题——不确定性。算法的实现较为复杂,执行时,算法会遍历一些根本用不到的节点,实际效率并不比其它算法有优势。
文献(曹京,谭建龙,刘萍,郭莉.布尔表达式匹配问题研究.计算机应用研究[C].Vol 24,No.9,pages 70-72,2007-9)提出了计数算法及其改进算法最长过滤算法。算法基本思想是由每个表达式中最长关键字为索引来建立一种查询结构。该算法认为较长关键字在文本中出现的频率较低,而较短的关键字在文本中出现的概率较高。通过以最长关键字索引相应表达式可以有效减少遍历表达式的次数,从而减少遍历的表达式的数目。在上述过程中,存在问题是同样以扫描两次文本为代价。在简单布尔表达式匹配问题上,最长过滤算法具有很高的效率,但是在这种复杂布尔表达式匹配问题上,该算法必须先把布尔表达式分解为多个简单布尔表达式,从而面临表达式的组合爆炸的挑战,进而消耗大量的内存。对于一些特定表达式,将会带来存储空间成倍上涨的代价。
文献(Mohammad Sadoghi,Hans-Arno Jacobsen.BE-Tree:An Index Structureto EMMiciently Match Boolean Expressions over High-dimensional Discrete Space[C].SIGMOD’11,June 12–16,2011)根据Re-Tree提出了一个相对简单的BE-Tree模型。并由此提出了一个区间编码方法。算法首先对表达式集合建立一棵表达式树,之后对每个节点分配一个区间范围。表达式中的关键字为树中的叶子节点,逻辑关系为树中的内节点。树中深度为偶数的内节点为AND节点,深度为奇数的内节点为OR节点。算法首先找到文本命中的所有关键字,之后根据关键字找到其对应的覆盖区间。根据关键字的区间覆盖一个长度为树中节点数目的向量。当匹配到的关键字的某个子集的区间能够不相交的覆盖整个区间时,就代表一个表达式命中。但是,基于表达式树的算法把布尔表达式匹配问题转换成一个区间覆盖问题,在实际上效果更加依赖于如何构建表达式树。当前,暂没有文献描述如何构建一棵高效的布尔表达式树。
在上述布尔表达式匹配技术中,存在问题主要在于对于每个关键字,都必须遍历其所在的所有表达式。本发明要解决的首要问题是,如何减少匹配过程中需遍历的表达式的次数,以提高布尔表达式匹配的效率。
发明内容
针对现有技术中存在的技术问题,本发明的目的在于提供一种基于位图的布尔表达式存储、匹配方法和系统。本发明可以将布尔表达式(仅针对与表达式,下同)利用位图结构进行存储,并对文本项可一次查询就可将相对应的布尔表达式命中。所谓位图技术,即bitmap,用一个比特位来标记某个元素对应的值,采用比特为单位存储数据,可大大节省存储空间。本发明可以扩展至多线程模式,以加速文本的匹配速度,其系统的结构图如图1:
为简述方便,下面描述该系统的算法过程中仅针对单线程模型,并定义如下符号:
idk:代表第k个布尔表达式。
tk:代表布尔表达式的一个子项。其中k1<k2时,tk1<tk2
poskj:代表位置信息,第k个布尔表达式idk的第j个子项的位置。其中poskj=j(j=0,1…31)。
item_id[]:代表子项值表。
item_message[]:代表子项信息表,存储各子项所存在的布尔表达式序号及位置信息。
item_count[]:代表子项顺序表,表示子项值小于tk的所有子项信息表的个数。例如,子项值表中第n个子项值为子项tk,即item_id[n]=tk,子项tk-1的子项顺序表的值v1=item_count[n-1],子项tk的子项顺序表的值v2=item_count[n],则item_message[v1]~item_message[v2]表示子项值tk的子项信息,包括所有包含该子项tk的规则的规则序号及相应的位置信息。
bool_item_num[idk]:代表布尔子项数目表中第k个布尔表达式idk包含的子项数目。
index[]:代表索引信息表,快速定位文本项在item_id[]的范围,便于后续匹配。
bitmap[idx]:代表匹配位图表,idk的匹配情况。
A:代表存储布尔表达式序号及位置信息中的序号左移位数。若左移A位,即idk<<A,则每个布尔表达式最多存储的子项数为2A,则下文公式idk<<5+poskj中的poskj≤2A
B:代表做与运算时参照的参数,B=2A-1,即每个布尔表达式最多存储的子项数2A-1。
下面介绍存储及搜索阶段中A=5,B=31。
主要思想:
存储阶段:
针对多个布尔表达式的各个子项,对其相应的布尔表达式序号和所在位置进行存储,并按照子项值的大小顺序排序,同时记录每个布尔表达式子项的数目。对子项值建立索引index,便于文本项快速定位子项值的位置。
搜索阶段:
待查询的文本项先在索引index中二分搜索,以确定其在子项存储中的位置,然后查找该位置下子项所对应的布尔表达式序号和位置信息。
开辟数组位向量bitmap用来存储每个布尔表达式的匹配情况,将每个能匹配的布尔表达式(序号为k)所对应的位置(j)置为1(bitmap[k]=1<<j),同时查看该布尔表达式中的bitmap中1的个数是否与其子项数目一致,若一致,则输出匹配的布尔表达式的序号,并将bitmap[k]置为-1防止重复匹配该布尔表达式,否则,则继续匹配下一文本项,直至文本结束。
为详细描述本发明的内容,本节先介绍基于位图的布尔表达式匹配方法及系统的几大部件和流程过程,随后介绍具体的存储布尔表达式规则和查询文本的主要过程。
本发明中,构建哈希表及其访问系统主要包含以下部件,如图2所示:
1)系统预处理部件:设定最大线程数,输入多个布尔表达式规则,并记录规则个数。
2)存储子项部件:依据多个规则存储子项值表、子项信息表、子项顺序表和布尔子项数目表。
3)构建索引部件:依据子项值表,先设定参数θ,再依据参数建立索引表。
4)访问信息部件:根据所要查询的文本值,依据索引确定在子项值表的位置,判断子项值表是否存在该元素,若存在,则存储对应的子项信息表,否则,继续查询下一文本值。
5)返回信息部件:开辟数组位向量bitmap用于最终校验布尔表达式的匹配结果。根据上一步所得的子项信息表,确定规则的序号和位置,在bitmap中的相应序号的位置置为1,若最终bitmap中1的个数与该规则所对应的子项个数一致,返回该规则序号,匹配成功。
以上介绍了基于位图的布尔表达式匹配方法及系统的各部件,为了便于理解其存储布尔表达式规则和搜索文本的过程,所以针对这两个过程简述其基于位图的布尔表达式匹配方法及系统的具体步骤。
表1多个布尔表达式规则
存储布尔表达式规则具体步骤:
1)输入布尔表达式规则及序号,并限定布尔表达式规则子项个数不超过32(2A,A=5)个。如表1所示;
2)利用STL中的map实现<key,value>存储,其中key为子项值tk,value为子项所对应的布尔表达式规则及其位置,利用idk<<5+poskj(A=5)来表示,同时存储每个子项值所对应的value个数,利用ik表示,并记录各布尔表达式规则子项的数目,用bool_item_num[idk]表记录,如图3所示。
3)将上一步已经升序排列的<key,value>对子项信息存储到一维数组item_message[]中,在item_message[]中tk'指代图3中tk的value信息,其中tk'=tk-t1。构建item_count[]表和item_id[]表,item_count[]表用来限定子项tk对应的value值在item_message[]中的下标范围,item_id[]表存储已经升序排列的子项的值,如图4所示。
4)确定参数θ,构建索引index[]表,index[]初始值可以确定0~65536差值内的子项值item_id[]的位置。当interval=tlast-t1>65536时,index[j]就不表示子项j(j≤tlast)在item_id[]中的位置了,这时就需要先确定θ的值然后再构建索引表。其中,tlast表示item_id[]中最后一个子项值,t1表示item_id[]中第一个子项值。
θ的确定方法:
θ=0
interval=tlast-t1
while((1<<(θ+16))<interval)
θ++
上述θ的确定方法用自然语言描述如下:
(1)初始化的θ值,令θ=0,计算internal,internal=tlast-t1
(2)将1左移θ位,判断其值是否小于internal,若小于internal,将θ加1,循环(2)步骤;若大于或等于internal,跳出循环,得到θ最终值。
如图5所示,设tj'=j-1,令n=65538,则interval=65537>(1<<16),最终确定θ=1。则index[j]~index[j+1]表示下标为1<<(j+θ)-2~1<<(j+θ)-1范围内的item_id[]的位置。总体来说,index[]表的目的是一个类似的二分哈希表,使得文本项缩小查找范围,能快速定位在子项值item_id[]的位置,以便于后面的查询过程。
搜索文本的具体步骤:
1)输入各项文本值,在index[]表确定其在item_id[]表的范围,利用二分查找的方法确定文本值是否在item_id[]表中,若在表内,保存相应的item_message[]信息,若不在,继续匹配下一个文本项。
文本项只包括图6所示5个值,布尔表达式规则符合存储布尔表达式规则具体步骤4)所列的假设条件,下面以文本项t=t4为例,介绍本步中的匹配过程。首先需要将文本项减去最小规则子项的值,由前述可知min=t1,则t'=t-min,然后根据参数θ=1,确定index[]表下标,下标h=t'>>θ,由于t'=t4'=3,则h=1,则在范围index[1]~(index[2]-1)(2~3)的item_id[]下标中寻找是否与item_id[]的值匹配,最终确定t'=item_id[3],确定item_id[]下标为3,则需要在item_message[]的item_count[3]~item_count[4]范围内存储子项信息。其他文本项也按照上述所示,若在item_id[]与规则子项值匹配,存储相对应的子项信息。
2)开辟内存,建立匹配位图表bitmap[idx],初始化为0,将上一步能匹配所存储的子项信息M[k]做如下映射:
idx=M[k]>>5
pos=M[k]&31
bitmap[idx]|=(1<<pos)
上述构建bitmap的过程用自然语言描述如下:
(1)根据M[k]确定布尔表达式序号idx和位置pos,idx等于M[k]右移A位(本文中A=5),pos等于M[k]与B(本文中B=31)做与运算。
(2)在匹配位图表bitmap[]中第idx项,即bitmap[idx]与1<<pos(1左移pos位)做或运算,表示序号为idx的布尔表达式的第pos子项已经存储在bitmap[idx]中。
之后,判断当前bitmap[idx]中的二进制1的个数是否与规则序号为idx的子项数目(bool_item_num[idk])一致,若一致,将规则序号idx输出,匹配规则idx成功,并将bitmap[idx]置为-1,避免重复匹配。
举例:设除了规则id0、id1和id2外,其他规则均不包含子项t1、t2、t4、t5,则按照上一步可得到如图7的子项信息M[]。
按照映射关系,可以得到的值为:
bitmap[id0]=0011
bitmap[id1]=0011
bitmap[id2]=0011
bitmap[id3]=0000
............
bitmap[idk]=0000
其中只有规则id1和id2的值中1的个数与其包含的子项个数(id1和id2都包含两条规则)相一致,故输出匹配规则id1和id2
与现有技术相比,本发明的有益效果:
由于现今的与布尔表达式匹配需要对每个子项都需要判断,所需要的时间较长,为提升匹配速度,本发明采用了位图的模式,一方面,节省了存储空间,另一方面可以将某一子项的所有布尔表达式一次进行匹配,从而避免了重复的匹配。
本发明在布尔表达式匹配搜索过程中运用bitmap结构,并采用多线程,以提高搜索效率。测试数据采用随机数据集,即布尔表达式文件和关键词文件由系统随机生成。测试环境:linux,64位;2颗4核cpu,主频1.8GHz,内核2.6.32。测试结果见表2,对于不同规模的数据集,随着线程数在一定范围的增多,预处理时间趋于稳定,扫描速度与线程数基本成正比。
表2基于位图的布尔表达式匹配算法实验结果(固定布尔表达式子项数为8)
附图说明
图1为布尔表达式匹配系统结构图;
图2为布尔表达式匹配系统部件图;
图3为存储bool_item_num[idk]表及相应子项的子项信息并记录子项信息数目示意图;
图4为item_message[]、item_count[]和item_id[]表构建示意图;
图5为索引表index[]构建示意图;
图6为示例文本项的查询过程示意图;
图7为所有文本项得到的子项信息M[]示意图;
图8依据<key,value>存储子项信息示意图;
图9为实施例中item_message[]、item_id[]和item_count[]表构建示意图;
图10 index[]表构建示意图;
图11示例文本项搜索过程示意图;
图12为子项信息存储示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,可以理解的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种新的基于位图布尔表达式匹配方法及其系统,分为存储布尔表达式规则阶段和搜索文本阶段。下面依据具体的实例,用以说明本发明的操作过程。
设布尔表达式规则如表3所示:
表3为4个布尔表达式规则信息表
布尔表达式规则序号 规则信息
0 2&3&4
1 1&2
2 3&4
3 5&6
则存储与搜索阶段的过程详见下述过程。
存储表达式规则阶段
1)bool_item_num[idk]表记录各规则子项个数,其值可以由表4表示。利用STL中的map实现<key,value>存储,每个子项值所对应的value个数,如图8所示。
2)将上一步已经升序排列的<key,value>对子项信息存储到一维数组item_message[]中。将各子项值减去最小子项值1,构建为item_id[]表。由图中count值构建item_count[]表,如图9所示。
表4 bool_item_num[idk]表
idk bool_item_num[idk]
0 3
1 2
2 2
3 2
3)确定参数θ,由于子项差值(6-1<65536),所以θ=0,由item_id[]表构建索引index[]表,如图10所示。
搜索文本阶段
1)输入各项文本值,如图11所示。先对文本值减去最小子项值1,得到暂存文本项。下面以原始文本值为3解释查找过程。由于θ=0,3-1=2,在区间[index[2],index[3]-1],即在index[2]找到item_id[]的范围,访问item_id[index[2]],即item_id[2]=2,与最初文本项减去最小子项值1所得的值一致,故继续查找item_message[]表。首先由item_count[]表确定其在item_message[]表的范围,查找范围区间为[item_count[2],item_count[3]),即区间[3,5)。所以需要保存item_message[3]和item_message[4]的值,即子项信息1和64。其他文本项也按照上述所示,若在item_id[]与规则子项值匹配,存储相对应的子项信息。
3)按照上一步所示,找出所有子项信息,存储在M[]中,并可得到相对应的idx和pos信息,如图12所示。开辟内存,建立匹配位图表bitmap[idx],初始化为0,按照映射关系得到最终的bitmap信息:
bitmap[0]=0111
bitmap[1]=0010
bitmap[2]=0011
由于0号规则包含3个子项,2号规则包含2个子项,而相对应的匹配位图表中1的个数与之正好一致,故可以匹配0号和2号元素。

Claims (9)

1.一种基于位图的布尔表达式存储方法,其步骤为:
1)为每一待存储的布尔表达式设置一序号并存储每一布尔表达式的子项信息;其中,子项信息包括子项值,子项所对应的布尔表达式的序号及该子项在该序号布尔表达式中的位置;
2)按照子项值大小对子项信息进行排序存储到一子项信息表item_message[]中,并构建子项顺序表item_count[]和子项值表item_id[],记录每个布尔表达式的子项数目;其中,子项顺序表item_count[]存储子项tk对应的布尔表达式序号及子项tk在该序号布尔表达式中的位置在子项信息表item_message[]中的下标范围,子项值表item_id[]存储已经升序排列的子项值;
3)根据子项值建立子项值表item_id[]的索引index。
2.如权利要求1所述的方法,其特征在于,子项顺序表item_count[]存储子项tk对应的布尔表达式序号及子项tk在该序号布尔表达式中的位置在子项信息表item_message[]中的下标范围:设子项值表item_id[]中第n个子项值为子项tk,即item_id[n]=tk,子项tk的子项顺序表item_count[]的值v2=item_count[n],子项tk-1的子项顺序表item_count[]的值v1=item_count[n-1],则v1~v2为该下标范围;item_message[v1]~item_message[v2]表示子项tk的子项信息,包括所有包含该子项tk的布尔表达式的序号及相应的位置信息。
3.如权利要求1或2所述的方法,其特征在于,建立该索引index的方法为:
31)初始化一θ值,令θ=0;计算internal,其中,internal=tlast-t1;tlast表示item_id[]中最后一个子项值,t1表示item_id[]中第一个子项值;
32)将1左移θ位,判断其值是否小于internal;
33)若小于internal,则将θ加1,循环步骤32);若大于或等于internal,则跳出循环,得到θ最终值;
34)根据确定的θ最终值,构建索引index;其中,index[j]~index[j+1]表示下标为1<<(j+θ)-2~1<<(j+θ)-1范围内的子项值表item_id[]的位置。
4.如权利要求1或2所述的方法,其特征在于,索引index为一二分哈希表。
5.一种基于权利要求1所述方法存储的布尔表达式的匹配方法,其步骤为:
11)依据索引index确定所要查询的文本值m在子项值表item_id[]的位置,判断子项值表item_id[]是否存在该文本值m,若存在,则根据该文本值m对应的子项顺序表item_count[]确定子项信息表item_message[]的下标范围;然后存储子项信息表item_message[]中该下标范围的子项信息;否则,继续查询下一文本值;
12)建立一数组位向量bitmap;根据步骤11)存储的子项信息将bitmap中相应序号的一位置置为1,若某一序号在bitmap中置1的个数与该序号所包含的子项个数一致,则返回该序号。
6.如权利要求5所述的方法,其特征在于,建立一数组位向量bitmap,根据步骤11)存储的子项信息将bitmap中相应序号的一位置置为1的方法为:
61)根据M[k]确定布尔表达式序号idx和位置pos;令idx等于M[k]右移A位,pos等于M[k]与B做与运算;其中,M[k]为与文本值m匹配的子项信息,A代表存储布尔表达式序号及位置信息中的序号左移位数,B代表做与运算时参照的参数;
62)将bitmap中第idx项bitmap[idx]与1<<pos做或运算。
7.如权利要求5或6所述的方法,其特征在于,对于匹配输出的序号,将该数组位向量bitmap中该序号对应的值置为-1。
8.如权利要求5或6所述的方法,其特征在于,该数组位向量bitmap为一位图表。
9.一种基于位图的布尔表达式存储匹配系统,其特征在于,包括系统预处理部件、存储子项部件、构建索引部件、访问信息部件和返回信息部件;其中,
系统预处理部件:用于设定最大线程数,输入多个布尔表达式并记录其个数;
存储子项部件:用于依据多个布尔表达式存储子项值表、子项信息表、子项顺序表和布尔子项数目表;子项顺序表item_count[]存储子项tk对应的布尔表达式序号及子项tk在该序号布尔表达式中的位置在子项信息表item_message[]中的下标范围,子项值表item_id[]存储已经升序排列的子项值;子项信息表item_message[]存储按子项值大小排序的子项信息;子项信息包括子项值,子项所对应的布尔表达式的序号及该子项在该序号布尔表达式中的位置;
构建索引部件:根据子项值建立子项值表item_id[]的索引index;
访问信息部件:根据所要查询的文本值,依据索引确定在子项值表的位置,判断子项值表是否存在该元素,若存在,则存储对应的子项信息表,否则,继续查询下一文本值;
返回信息部件:开辟数组位向量bitmap用于最终校验布尔表达式的匹配结果;根据访问信息部件所得的子项信息表,确定布尔表达式的序号和位置,在bitmap中的相应序号的位置置为1,若最终bitmap中1的个数与该布尔表达式所对应的子项个数一致,则返回该布尔表达式的序号,匹配成功。
CN201610811459.9A 2016-09-08 2016-09-08 一种基于位图的布尔表达式存储、匹配方法和系统 Active CN106469218B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610811459.9A CN106469218B (zh) 2016-09-08 2016-09-08 一种基于位图的布尔表达式存储、匹配方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610811459.9A CN106469218B (zh) 2016-09-08 2016-09-08 一种基于位图的布尔表达式存储、匹配方法和系统

Publications (2)

Publication Number Publication Date
CN106469218A true CN106469218A (zh) 2017-03-01
CN106469218B CN106469218B (zh) 2019-11-19

Family

ID=58230168

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610811459.9A Active CN106469218B (zh) 2016-09-08 2016-09-08 一种基于位图的布尔表达式存储、匹配方法和系统

Country Status (1)

Country Link
CN (1) CN106469218B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109271507A (zh) * 2018-09-21 2019-01-25 长沙学院 处理子串信息的方法、计算机数据管理系统、舆情分析系统、社会网络分析系统
CN111078920A (zh) * 2019-11-22 2020-04-28 北京云宽志业网络技术有限公司 数据处理方法、装置、设备和计算机可读存储介质
CN113032779A (zh) * 2021-02-04 2021-06-25 中国科学院软件研究所 一种基于行为参数布尔表达式规则的多行为联合匹配方法和装置
US11966936B2 (en) 2021-05-11 2024-04-23 Capital One Services, Llc Systems and methods for executing queries on a bitmap index

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102467563A (zh) * 2010-11-19 2012-05-23 金蝶软件(中国)有限公司 数据检索方法和系统
CN104809161A (zh) * 2015-04-01 2015-07-29 中国科学院信息工程研究所 一种对稀疏矩阵进行压缩和查询的方法及系统
CN105045848A (zh) * 2015-06-30 2015-11-11 四川长虹电器股份有限公司 一种支持布尔表达式查询的数据库管理系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102467563A (zh) * 2010-11-19 2012-05-23 金蝶软件(中国)有限公司 数据检索方法和系统
CN104809161A (zh) * 2015-04-01 2015-07-29 中国科学院信息工程研究所 一种对稀疏矩阵进行压缩和查询的方法及系统
CN105045848A (zh) * 2015-06-30 2015-11-11 四川长虹电器股份有限公司 一种支持布尔表达式查询的数据库管理系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
曹京 等: "布尔表达式匹配问题研究", 《计算机应用研究》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109271507A (zh) * 2018-09-21 2019-01-25 长沙学院 处理子串信息的方法、计算机数据管理系统、舆情分析系统、社会网络分析系统
CN109271507B (zh) * 2018-09-21 2022-02-08 长沙学院 处理子串信息的方法、计算机数据管理系统、舆情分析系统、社会网络分析系统
CN111078920A (zh) * 2019-11-22 2020-04-28 北京云宽志业网络技术有限公司 数据处理方法、装置、设备和计算机可读存储介质
CN113032779A (zh) * 2021-02-04 2021-06-25 中国科学院软件研究所 一种基于行为参数布尔表达式规则的多行为联合匹配方法和装置
CN113032779B (zh) * 2021-02-04 2024-01-02 中国科学院软件研究所 一种基于行为参数布尔表达式规则的多行为联合匹配方法和装置
US11966936B2 (en) 2021-05-11 2024-04-23 Capital One Services, Llc Systems and methods for executing queries on a bitmap index

Also Published As

Publication number Publication date
CN106469218B (zh) 2019-11-19

Similar Documents

Publication Publication Date Title
CN104991905B (zh) 一种基于层次索引的数学表达式检索方法
CN104239513B (zh) 一种面向领域数据的语义检索方法
CN106469218B (zh) 一种基于位图的布尔表达式存储、匹配方法和系统
CN107025218A (zh) 一种文本去重方法和装置
CN106708956B (zh) 一种基于多url规则集的http数据匹配方法
CN102867049B (zh) 一种基于单词查找树实现的汉语拼音快速分词方法
CN106227788A (zh) 一种以Lucene为基础的数据库查询方法
CN113761208A (zh) 一种基于知识图谱的科技创新资讯分类方法和存储设备
Bramandia et al. On incremental maintenance of 2-hop labeling of graphs
Ahamed et al. An efficient mechanism for deep web data extraction based on tree-structured web pattern matching
Li et al. Implementation of intelligent question answering system based on basketball knowledge graph
Diao et al. Efficient exploration of interesting aggregates in RDF graphs
Gunaratna et al. Alignment and dataset identification of linked data in semantic web
Wan et al. Token-based approach for real-time plagiarism detection in digital designs
Dai et al. Search Engine System Based on Ontology of Technological Resources.
Shen et al. A graph-based RDF triple store
Beutel et al. A machine learning approach to databases indexes
Li Glowworm Swarm Optimization Algorithm‐and K‐Prototypes Algorithm‐Based Metadata Tree Clustering
Chen English translation template retrieval based on semantic distance ontology knowledge recognition algorithm
Wang et al. Notice of Retraction: Design and implementation of curriculum resource management model based on domain ontology
Dong et al. Discovering relationships among data resources in dataspace
Xiao Ontology-based hierarchical retrieval model for digital English teaching information
Zhu et al. OEIS: Knowledge Graph based Intelligent Search System in Ocean Engineering
Gao et al. E-business information fuzzy retrieval system based on block chain anti-attack algorithm
Shao et al. Ontology-based modeling and semantic query for mobile trajectory data

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant