确定性有限自动机生成方法和装置及索引方法和索引系统的制作方法

文档序号:6573302阅读:270来源:国知局
专利名称:确定性有限自动机生成方法和装置及索引方法和索引系统的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种确定性有限自动机(Deterministic Finite Automaton,以下简称DFA)的生成方法和生成装置,以及基于该DFA生成方法和生成装置的内容索引方法和内容索引系统。
背景技术
DFA是一种有限状态机,每个字节8bits,意味着有256种状态改变可能;则根据输入的字节,能够找到对应的下一个节点索引,即下一个状态。可以看出,根据DFA,可以进行通信领域中,数据流的索引控制。
目前,DFA由专门的DFA硬件处理单元生成,如图1所示DFA硬件处理单元主要包括三个部分延时减小动态随机访问存储器(Reduced LatencyDynamic Random Access Memory,以下简称RLDRAM)和DFA引擎,以及包括指令队列的输入输出单元,比如二级缓存(Level 2 Cache,以下简称L2)/DRAM。DFA硬件处理单元进行索引所依据的数据被称为DFA图,由于RLDRAM的作用是存储DFA图,可以看出,DFA硬件处理单元本身并不生成DFA图,而是在DFA硬件处理单元之外,先要由通信设备的中央处理单元(Core)通过编译器生成DFA图,并将其下载到RLDRAM中以备索引,并不是由DFA硬件处理单元直接生成并实现索引。因此,现有的索引方法总体包括以下步骤D0,Core将图数据下载到RLDRAM中;D1,Core通过L2/DRAM的指令队列提交指令给DFA;D2,DFA引擎读取指令,并读取报文数据;D3,DFA引擎将报文数据按字节下载到RLDRAM中,执行每个字节匹配查找操作;D4,DFA引擎将执行的中间和最终结果写回到L2/DRAM,完成DFA图索引的操作。
同时,在编译器生成DFA图的方法主要有两种第一种,定义多级关键字,生成具有多级关键字的DFA图;第二种,定义单级关键字,生成具有单级关键字的DFA图。
上述两种方法都并未考虑到各级关键字在索引过程中的层次关系,这就为后续的索引工作带来了相当大的漏报或者多报的风险。以在如下网页内容中进行有效URL查找为例加以说明网页内容如下<embed src=″/mm/yanhuaen11167104207376.swf″quality=″high″pluginspage=″http://www.macromedia.com/go/getflashplayer″type=″application/x-shockwave-flash″width=″765″height=″211″></embed>
<script language=″javascript″>
function search(){//if (trim(searchForm.searchString.value)!=″″)//searchForm.action=″http://www.huawei.com/Search/result.do″;searchForm.submit();}function enterkey(){if (event.keyCode==13){search();}}</script>
上述网页中有效的URL记录为sro=″/mm/yanhuaen11167104207376.swf″以及pluginspage=″http://www.macromedia.com/go/getflashplayer″;则查找的记录应给出(src=″)和(″)在网页内容文本中的偏移以及(pluginspage=″)和(″)在网页内容文本中的偏移,软件根据两者之间的偏移,就得到相应的字符串/mm/yanhuaen11167104207376.swf以及http://www.macromedia.com/go/getflashplayer。
1、在第一种编译器生成DFA图的情况下,定义一级关键字为<a,<img,<embed......,每个一级关键字对应二级关键字,对于“<a”,二级关键字为href=″,由于网页中可能存在以单引号引用的情况,因此二级关键字还包括href=′;对于<img,二级关键字为src=″,src=′,longdesc=″,longdesc=′,usemapsps=″,usemapsps=′;对于<embed,二级关键字为src=″,src=′,pluginspage=″,pluginspage=′,......。采用如下正则表达式进行DFA图生成<a.+?[Hh][rR][Ee][Ff]=[″′]<[aA].+?[Hh][rR][Ee][Ff]=[″′].+?[′″]<img.+?[Sc][rR][Cc]=[″′]<[iI][Mm][Gg].+?[Sc][rR][Cc]=[″′].+?[′″]......
<embed.+?[Sc][rR][Cc]=[″′]<[eE][Mm][Bb][Ee][Dd].+?[Sc][rR][Cc]=[″′].+?[′″]......
根据上述正则表达式,利用DFA图编译器生成的DFA图,由DFA硬件单元进行URL索引。可以看出,匹配完一条记录后,就会从一级关键字重新开始匹配,因此能够在一级关键字有效区域内命中一条记录,但是对于在有效区域内有多个匹配记录的情况,就会发生漏报现象。比如在本例中,命中的记录将是src=″/mm/yanhuaen11167104207376.swf″,漏报记录pluginspage=″http://www.macromedia.com/go/getflashplayer″。
2、在第二种编译器生成DFA图的情况下,直接定义二级关键字href=″,href=′,src=″,src=′,longdesc=″,longdesc=′,usemapsps=″,usemapsps=′......。采用如下正则表达式进行DFA图生成[Hh][rR][Ee][Ff]=[″′](?<=[hH][rR][eE][fF]=[″′]).+?(?=[′″])[sS][rR][cC]=[″′](?<=[sS][rR][cC]=[″′]).+?(?=[′″])......
根据上述正则表达式,利用DFA图编译器生成的DFA图,由DFA硬件单元进行URL索引。可以看出,本DFA图下能够匹配到所有记录,但是不一定是有效记录。这是因为,仅仅在一级关键字“<a”区域内的记录才是真正的有效记录,而由于本方案不考虑一级关键字,因此有可能将非一级关键字下的记录查找出来。比如本例中,除了索引到应命中的记录src=″/mm/yanhuaen11167104207376.swf″及pluginspage=″http://www.macromedia.com/go/getflashplayer″以外,还会多命中无效记录action=″http://www.huawei.com/Search/result.do″,该无效记录不在一级关键字“<a”区域内。
综上所述,现有技术中生成DFA图时并未考虑到关键字的层次关系,因此导致进行索引时的漏报或者多报。

发明内容
本发明提供一种DFA生成方法及生成装置以及基于该DFA生成方法及生成装置的内容索引方法和内容索引系统,解决现有技术中进行DFA图内容索引时的漏报、多报问题。
为实现上述目的,本发明的实施例提供了一种DFA生成方法,包括为各级关键字设置中止符,并生成DFA节点树,所述中止符的状态迁移方向指向上一级关键字;将最终生成的DFA节点树转换为DFA图。
本发明的实施例还提供了一种DFA生成装置,包括关键字设置单元,用于定义关键字及其级别;中止符设置单元,用于基于各级关键字分别设置中止符;节点树生成单元,分别与所述关键字设置单元和中止符设置单元连接,用于生成带有中止符迁移状态的DFA节点树,使中止符的状态迁移方向指向上一级关键字;DFA图生成单元,与所述节点树生成单元连接,用于将最终生成的DFA节点树转换为DFA图。
本发明的实施例还提供了一种基于上述DFA生成方法的内容索引方法,DFA引擎接收到索引指令后,在预先生成的DFA中进行索引;当匹配到所需关键字时,生成第一偏移量记录;当匹配到中止符时,生成第二偏移量记录,并返回上一级关键字。
本发明的实施例还提供了一种基于上述DFA生成装置的内容索引系统,包括中央处理单元和与中央处理单元连接的DFA硬件单元,所述DFA硬件单元根据中央处理单元的索引指令,在预先生成的带有中止符迁移状态的DFA中进行索引。
由上述技术方案可知,本发明通过为各级关键字设置中止符,采用将中止符的状态迁移方向指向上一级关键字,具有以下有益效果1、避免了DFA索引过程中漏报或者多报的情况,确保找到真正有效的索引记录;2、通过将DFA生成装置设置在DFA硬件单元中,只需要输入关键字即可生成DFA图,无须通过编译器生成DFA图并下载。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。


图1为现有技术中进行DFA索引的示意图;图2为本发明所提供的DFA生成方法的一个实施例流程图;图3为图2所示方法中,生成的DFA节点树的一个实施例的示意图;图4为图2所示方法中,生成的DFA节点树的另一个实施例的示意图;图5为图3或图4所示节点树最终转化的DFA图;图6为本发明所提供的DFA生成装置一个实施例的框图;图7为本发明所提供的内容索引方法一个实施例的流程图;图8为本发明所提供的内容索引系统一个实施例的框图。
具体实施例方式
为了克服现有技术中多级关键字的漏报问题,以及单一级别关键字的多报问题,本发明的实施例提出了加入中止符的技术方案,并由此带来了DFA生成和索引技术方案的改进,下面分别进行说明。
本发明所提供了DFA生成方法,包括为各级关键字设置中止符,并生成DFA节点树,所述中止符的状态迁移方向指向上一级关键字;将最终生成的DFA节点树转换为DFA图。参见图2,为DFA生成方法一个实施例的流程图,以背景技术中的网页索引为例,所需要生成的DFA应能提供对有效的URL记录(src=″/mm/yanhuaen11167104207376.swf″以及pluginspage=″http://www.macromedia.com/go/getflashplayer″)的索引,具体生成方法包括步骤101、为每一级关键字设置中止符,在本实施例中,一级关键字<a,<img,<embed......的中止符为“>”,二级关键字href=″、href=′、src=″、src=′、longdesc=″、longdesc=′、usemapsps=″、usemapsps=′、pluginspage=″、pluginspage=′......的中止符为“″”或者“′”;步骤102、根据每一级关键字生成节点,使每一级关键字中止符的状态迁移方向指向其对应的上一级关键字;参见图3,生成的DFA节点树的一个实施例的示意图,一级关键字<img和二级关键字src=″构成一个节点树,一级关键字<img和二级关键字longdesc=″构成一个节点树,依次类推。其中,中止符″的状态迁移方向指向上一级关键字。
为了便于识别,还可以包括步骤103将下一级关键字的节点树设置为上一级关键字的子树;这样将各个节点树依照一级关键字组织起来,形成三个节点树。
还可以包括步骤104将最上一级关键字的节点树设置为根节点的子树,所述根节点对应DFA图的初始状态;从而,将全部的节点组合起来,有利于最终转化为DFA图,如图4所示。
由于实际进行索引所依照的是DFA图,因此,在DFA树生成之后,需要执行步骤105将最终生成的DFA节点树转换为DFA图,如图5所示,初始状态为0。
通过本实施例所提供的DFA生成方法,无须生成正则表达式再用编译器进行解析就能够生成DFA图,且遇到中止符时,返回上一级关键字,实现在上一级关键字的有效区域内继续匹配。比如,在本实施例中,命中第一条记录src=″/mm/yanhuaen11167104207376.swf″后,遇到中止符″,则返回上一级关键字<embed继续索引,能够命中第二条记录pluginspage=http://www.macromedia.com/go/getflashplayer,不会造成漏掉记录;遇到中止符″,返回上一级关键字<embed继续索引,直到遇到中止符>,返回初始状态0,完成在本一级关键字下的索引,因此也不会新增无效记录。可以看出,通过本实施例所提供的DFA生成方法,既不会漏报某一级关键字下的内容,也不会多报同级关键字的内容。
进一步的,本实施例是以两级关键字为例进行说明,由于关键字和相应的中止符能够动态配置,所以本实施例适用于任何所需要级数DFA的生成;同时,当关键字添加/删除/修改时,能够相应更新所述DFA节点树,并最终保证DFA节点图的更新。
参见图6,为本发明所提供的DFA生成装置的实施例的框图,包括关键字设置单元1、中止符设置单元2、节点树生成单元3和DFA图生成单元4。
其中,关键字设置单元1用于定义关键字及其级别,比如一级关键字<a,<img,<embed......,二级关键字href=″、href=′、src=″、src=′、longdesc=″、longdesc=′、usemapsps=″、usemapsps=′、pluginspage=″、pluginspage=′......;对于本领域技术人员而言,可以直接输入关键字字符串,也可以通过正则表达式进行关键字的成组输入,具体采用何种方式可由实际的应用环境确定。
中止符设置单元2,用于基于各级关键字分别设置中止符,比如一级关键字的中止符为“>”,二级关键字的中止符为“″”或者“′”;对于本领域技术人员而言,该中止符并不局限于一个或者多个字符,只要与某一级关键字唯一对应即可。
节点树生成单元3,分别与所述关键字设置单元1和中止符设置单元2连接,用于生成带有中止符迁移状态的DFA节点树,使中止符的状态迁移方向指向上一级关键字;这种节点树可以是具有根节点的DFA节点树,也可以是仅有相关节点构成的多个节点树;DFA图生成单元,与所述节点树生成单元3连接,用于将最终生成的DFA节点树转换为DFA图。
通过本实施例所提供的DFA生成装置,可以生成确保找到真正有效记录的DFA图,而无需通过额外的编译器对正则表达式进行解析。
参见图7,为本发明所提供的,基于上述DFA生成方法的内容索引方法,包括以下步骤步骤201、DFA引擎接收到中央处理单元发出的索引指令;步骤202、DFA引擎在预先生成的DFA图中进行索引;步骤203、从初始状态开始,依次对待索引的字符进行识别,匹配到一级关键字,执行步骤204,为其他字符,重新执行步骤203;步骤204、识别该一级关键字之后的待索引字符,匹配到二级关键字,则执行步骤205;匹配到一级中止符,重新执行步骤203;为其他字符,则重新执行步骤204;步骤205、生成第一偏移量记录;步骤206、识别所述二级关键字之后的待索引字符,匹配到二级中止符,执行步骤207,否则重新执行步骤206;步骤207、生成第二偏移量记录;步骤208、根据某一关键字的第一偏移量记录和第二偏移量记录之差,获取所索引的内容,并重新执行步骤204。
在本实施例中,当索引内容识别完成时,索引过程结束,通过对第一偏移量记录和第二偏移量记录的后续处理,很容易找到索引的URL字符串。
可以看出,本实施例是以两级关键字为例,给出了索引的过程,比如,在<embed关键字下,在src=″时,生成一条记录,记录其在网页内容中的偏移量,在″时,再生成一条偏移量记录。软件可以根据其开始偏移量和偏移量差,得到匹配的URL记录字符串,这个过程发生在<embed有效区域内,不会新增无效记录。再比如,输入<a后存在以下情况1)输入h、H进入二级dfa图匹配;
2)输入>回到初始状态(0节点);3)输入其他字符状态不发生改变;进入二级dfa图匹配存在以下情况1)href匹配成功,生成第一偏移量记录;2)输入″或者′回到<a后状态继续索引,并生成第二偏移量记录;3)输入其他字符状态不发生改变。
上述节点的改变,保证图在有效区域里查找,遇到中止符返回。
在本实施例中,也可以不设置初始状态,而是以一级关键字的匹配作为触发条件,这种改变并不会对本发明的技术方案造成影响。
本发明的实施例还提供了基于上述DFA生成装置的内容索引系统,包括中央处理单元A和与中央处理单元A连接的DFA硬件单元B,所述DFA硬件单元B根据中央处理单元A的索引指令,在预先生成的带有中止符迁移状态的DFA中进行索引。
具体的,DFA硬件单元B包括DFA生成装置B1、DFA引擎B2和输入输出单元B3;所述DFA生成装置B1用于通过输入输出单元B3进行关键字及中止符设置,该关键字和中止符可以由中央处理单元A经输入输出单元B3输入;DFA生成装置B1根据关键字和中止符生成带有中止符迁移状态的DFA图,所述DFA引擎B2根据所述输入输出单元B3从中央处理单元A接收到的索引指令,在所述DFA生成装置B1中进行索引,并将索引结果写入所述输入输出单元B3,如图8所示。其中,输入输出单元B3所接收到的索引指令以及索引结果存储在内存或者L2里面,这样存储空间不会受到硬件的局限;或者在DFA硬件单元中设置小的闪存,以便提高访问速度。
可以看出,本发明所提供的索引系统本身提供了DFA图生成装置,使用者只需要输入关键字和中止符即可完成索引,而无需先通过编译器进行DFA图生成,再下载到索引系统中,节约了中间环节。
最后应说明的是以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。
权利要求
1.一种DFA生成方法,其特征在于包括为各级关键字设置中止符,并生成DFA节点树,所述中止符的状态迁移方向指向上一级关键字;将最终生成的DFA节点树转换为DFA图。
2.根据权利要求1所述的DFA生成方法,其特征在于所述生成DFA节点树包括将下一级关键字的节点树设置为上一级关键字的子树。
3.根据权利要求2所述的DFA生成方法,其特征在于所述生成DFA节点树还包括将最上一级关键字的节点树设置为根节点的子树,所述根节点对应DFA图的初始状态。
4.根据权利要求1-3任一所述的DFA生成方法,其特征在于还包括当关键字添加/删除/修改时,相应更新所述DFA节点树。
5.一种DFA生成装置,其特征在于包括关键字设置单元,用于定义关键字及其级别;中止符设置单元,用于基于各级关键字分别设置中止符;节点树生成单元,分别与所述关键字设置单元和中止符设置单元连接,用于生成带有中止符迁移状态的DFA节点树,使中止符的状态迁移方向指向上一级关键字;DFA图生成单元,与所述节点树生成单元连接,用于将最终生成的DFA节点树转换为DFA图。
6.一种基于权利要求1-4任一所述DFA生成方法的内容索引方法,DFA引擎接收到索引指令后,在预先生成的DFA图中进行索引;其特征在于当匹配到所需关键字时,生成第一偏移量记录;当匹配到中止符时,生成第二偏移量记录,并返回上一级关键字。
7.根据权利要求6所述的内容索引方法,其特征在于当匹配到一级关键字的中止符时,返回初始状态。
8.根据权利要求6或7所述的内容索引方法,其特征在于还包括根据某一关键字的第一偏移量记录和第二偏移量记录之差,获取所索引的内容。
9.一种基于权利要求5所述的DFA生成装置的内容索引系统,包括中央处理单元和与中央处理单元连接的DFA硬件单元,其特征在于所述DFA硬件单元根据中央处理单元的索引指令,在预先生成的带有中止符迁移状态的DFA中进行索引。
10.根据权利要求9所述的内容索引系统,其特征在于所述DFA硬件单元包括DFA生成装置、DFA引擎和输入输出单元;所述DFA生成装置用于通过输入输出单元进行关键字及中止符设置,并生成带有中止符迁移状态的DFA图,所述DFA引擎根据所述输入输出单元从中央处理单元接收到的索引指令,在所述DFA生成装置中进行索引,并将索引结果写入所述输入输出单元。
全文摘要
本发明公开了一种DFA生成方法,为各级关键字设置中止符,并生成DFA节点树,中止符的状态迁移方向指向上一级关键字;将最终生成的DFA节点树转换为DFA图。本发明还公开了一种DFA生成装置,包括定义关键字及其级别的关键字设置单元,基于各级关键字分别设置中止符的中止符设置单元;节点树生成单元,用于生成带有中止符迁移状态的DFA节点树,使中止符的状态迁移方向指向上一级关键字;DFA图生成单元。本发明还公开了基于上述DFA生成方法和生成装置的内容索引方法和内容索引系统。通过本发明,避免了DFA索引过程中漏报或者多报的情况,确保找到真正有效的索引记录,且无需使用编译器生成DFA图并下载。
文档编号G06F17/30GK101013441SQ20071006382
公开日2007年8月8日 申请日期2007年2月12日 优先权日2007年2月12日
发明者刘汉桥 申请人:杭州华为三康技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1