一种基于有限状态自动机的字符串匹配方法及装置制造方法及图纸

技术编号:4131907 阅读:419 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于有限状态自动机的字符串匹配方法及装置,该方法包括:确定用户输入的关键字在设定的关键字组中时,调用所述关键字组对应的有限状态自动机DFA程序代码;所述程序代码为根据采用Aho-Corasick算法针对所述关键字组确定的当前状态、输入字符和输出状态的对应关系预先生成的;执行所述程序代码,依次输入待搜索数据库中包含的字符,并根据当前状态和输入字符,确定输出状态;所述输出状态即为下次输入字符时的当前状态;根据所述输出状态输出字符匹配结果。上述方法,采用程序代码的形式存放DFA,减少了系统处理时延,提高了字符匹配的速度和效率。

【技术实现步骤摘要】

本专利技术涉及检索
,尤指一种基于有限状态自动机(Deterministic Finite State Automaton, DFA)的字符串匹配方法及装置。
技术介绍
Aho-Corasick算法于1975年由贝尔实验室的Aho和Corasick在《Efficient String Matching: An Aid to Bibliographic Search》中提出,其核心是一个涵盖所 有查询关4建字的有卩艮4犬态自动才几(Deterministic Finite State Automaton, DFA )。 待搜索的数据库中的每个字符逐个输入到DFA中,当某个查询关键字命中, DFA输出报告。通过Aho-Corasick算法得到DFA的过程中,需要构造三个函数GOTO, FAILURE和OUTPUT。构造这三个函数的流程包括 1.1构造GOTO函数。该过程需要输入的是要查询的关键字集合。例如输入的关键字集合是 K={yl, y2,, yk}。输出的是GOTO函数和部分完成的OUTPUT函数。 1.2构造FAILURE函数该过程需要输入的是上述过程1.1中得到的GOTO函数及部分完成的 OUTPUT函数。输出的是FAILURE函数和完成的OUTPUT函数。 1.3构造OUTPUT函数。该过程将GOTO函数和FAILURE函数进一步合并,得到DFA。 所以该过程输入的是上述过程U中得到的GOTO函数及过程1.2中得到的FAILURE函凄t。输出的是构造完成的DFA。DFA中包含了在当前状态、输入字符后所对应的各种可能的下一状态。以 及各个状态和命中的关键字的对应关系。当命中某一关4定字时,能够及时的输 出命中结果。应用DFA进行字符匹配时,待搜索数据库中的每个字符在DFA中能够触 发一次且仅能够触发一次状态转换。所以,Aho-Corasick的算法应用的优势在 于其算法复杂度仅与待搜索数据库的长度有关,而与查询关键字的长度及数目 都无关。因此,在字符串匹配的各种已有算法中,Aho-Corasick是迄今为止最 快的算法。在实际应用过程中,DFA通常以一维数组的形式存放在系统主内存中。虽 然系统在运行过程中,CPU会把在最近几个时间段内经常访问的内容存入高速 緩存(Cache);高速緩存即高速緩冲存储器,位于CPU和主存储器DRAM(主 内存)之间的存储容量较小但速度很高的存储器。但由于高速緩存容量有限, DFA与系统中其他频繁访问CPU的数据之间存在竟争关系,不能保证访问频 度高的部分(或全部)DFA总能驻留在一级数据緩存中,当不在緩存中时则必 须到内存中去获取。所以当使用DFA搜索数据库或者过滤网络数据流时,最坏情况下,可能 会出现每输入一个字节,则必须访问一次主内存,才能得到下一个状态。而访 问主内存来获取下一个状态会造成很大的时延,导致字符匹配过程的时延很 长,严重影响了匹配的速度和效率。因此,频繁的主内存访问已经成为基于 DFA搜索的系统整体性能的瓶颈。
技术实现思路
本专利技术实施例提供一种基于有限状态自动机的字符串匹配方法及装置,解 决现有技术中存在的字符匹配速度慢、时延长的问题。一种基于有限状态自动机的字符串匹配方法,包括确定用户输入的关4建字在设定的关键字组中时,调用所述关4建字组对应的 有限状态自动机DFA程序代码;所述程序代码为根据采用Aho-Corasick算法 针对所述关键字组确定的当前状态、输入字符和输出状态的对应关系预先生成 的;执行所述程序代码,依次输入待搜索数据库中包含的字符,并根据当前状 态和输入字符,确定输出状态;所述输出状态即为下次输入字符时的当前状态; 根据所述输出状态输出字符匹配结果。本专利技术的上述方法,还包括根据程序代码的允许大小,选取所述DFA 中包含的与初始状态具有衍生关系的部分状态,所选取的部分状态的出现频率 之和大于设定的阈值;生成仅包含以选取的部分状态作为当前状态时,输入字符后所对应的输出 状态的程序代码。根据本专利技术的上述方法,所述程序代码仅包含以选取的部分状态作为当前 状态,输入字符后所对应的输出状态时;其余未被选取的状态作为当前状态时, 输入字符后所对应的输出状态仍从系统主内存中获取。根据本专利技术的上述方法,所述根据所述输出状态输出字符匹配结果,具体 包括根据采用Aho-Comsick算法得到的各输出状态所对应的字符匹配结果的 对应关系,查询所述输出状态所对应的字符匹配结果;当确定所述字符匹配结果为某个关键字命中时,输出字符匹配结果;否则 无输出。根据本专利技术的上述方法,所述设定的关键字组根据设定时间段内的关键字 使用情况的统计结果定期更新; 相应的,根据更新后的关键字组,生成对应的DFA程序代码。 一种基于有限状态自动机的字符串匹配装置,包括生成模块,用于采用Aho-Comsick算法针对选定的关键字组确定当前状 态、输入字符和输出状态的对应关系,并才艮据所述对应关系预先生成有限状态 自动机DFA程序代码;调用^t块,用于确定用户输入的关键字在所述关^t字组中,调用所述生成 模块生成的与所述关键字组对应的DFA程序代码;执行模块,用于执行所述程序代码,依次输入待搜索数据库中包含的字符, 并根据当前状态和输入字符,确定输出状态;所述输出状态即为下次输入字符 时的当前状态;输出模块,用于根据所述输出状态输出字符匹配结果。本专利技术的上述装置,还包括选取模块,用于才艮据程序代码的允许大小, 选取所述DFA中包含的与初始状态具有衍生关系的部分状态,所选取的部分 状态的出现频率之和大于设定的阈值;所述生成模块,具体用于生成仅包含以选取的部分状态作为当前状态时, 输入字符后所对应的输出状态的程序代码。冲艮据本专利技术的上述装置,所述执行模块,还用于当所述生成模块所生成的程序代码中仅包含以选取的部分状态作为当前 状态时,输入字符后所对应的输出状态时,从系统主内存中获取未被选取的状 态作为当前状态时,输入字符后所对应的输出状态。根据本专利技术的上述装置,所述输出模块,具体包括查询单元,用于根据采用Aho-Corasick算法得到的各输出状态所对应的字 符匹配结果的对应关系,查询所述输出状态所对应的字符匹配结果;输出单元,用于当确定所述字符匹配结果为某个关4建字命中时,输出字符 匹配结果;否则无输出。本专利技术的上述装置,还包括更新模块,用于根据设定时间段内的关键字使用情况的统计结果定期更新 所述设定的关键字组;相应的,所述生成模块,还用于根据更新后的关键字组,生成对应的DFA 程序代码。一种内容过滤设备,在该内容过滤设备中设置上述的基于有限状态自动机 的字符串匹配装置。确定用户输入的关键字在设定的关键字组中时,调用所述关键字组对应的有限 状态自动机DFA程序代码;所述程序代码为根据采用Aho-Corasick算法针对 所述关键字组确定的当前状态、输入字符和输出状态的对应关系预先生成的; 执行所述程序代码,依次输入待搜索数据库中包含的字符,并根据当前状态和 输入字符,确定输出状态;所述输出状态即为下次输入字符时的当前状态;根 据所述输出状态输出字符匹配结果。将采用Aho-Corasick算法针对所述关键字 组得到的DFA采用程序代码的形式存放,在需要进行字符匹配时,本文档来自技高网
...

【技术保护点】
一种基于有限状态自动机的字符串匹配方法,其特征在于,包括: 确定用户输入的关键字在设定的关键字组中时,调用所述关键字组对应的有限状态自动机DFA程序代码;所述程序代码为根据采用Aho-Corasick算法针对所述关键字组确定的当前状态 、输入字符和输出状态的对应关系预先生成的; 执行所述程序代码,依次输入待搜索数据库中包含的字符,并根据当前状态和输入字符,确定输出状态;所述输出状态即为下次输入字符时的当前状态; 根据所述输出状态输出字符匹配结果。

【技术特征摘要】
1、一种基于有限状态自动机的字符串匹配方法,其特征在于,包括确定用户输入的关键字在设定的关键字组中时,调用所述关键字组对应的有限状态自动机DFA程序代码;所述程序代码为根据采用Aho-Corasick算法针对所述关键字组确定的当前状态、输入字符和输出状态的对应关系预先生成的;执行所述程序代码,依次输入待搜索数据库中包含的字符,并根据当前状态和输入字符,确定输出状态;所述输出状态即为下次输入字符时的当前状态;根据所述输出状态输出字符匹配结果。2、 如权利要求1所述的方法,其特征在于,还包括根据程序代码的允 许大小,选取所述DFA中包含的与初始状态具有衍生关系的部分状态,所选 取的部分状态的出现频率之和大于设定的阈值;生成仅包含以选取的部分状态作为当前状态时,输入字符后所对应的输出 状态的程序代码。3、 如权利要求2所述的方法,其特征在于,所述程序代码仅包含以选取 的部分状态作为当前状态,输入字符后所对应的输出状态时;其余未被选取的 状态作为当前状态时,输入字符后所对应的输出状态仍从系统主内存中获取。4、 如权利要求1所述的方法,其特征在于,所述根据所述输出状态输出 字符匹配结果,具体包括根据采用Aho-Corasick算法得到的各输出状态所对应的字符匹配结果的 对应关系,查询所述^T出状态所对应的字符匹配结果;当确定所述字符匹配结果为某个关键字命中时,输出字符匹配结果;否则 无输出。5、 如权利要求1-4任一所述的方法,其特征在于,所述设定的关4建字组 根据设定时间段内的关键字使用情况的统计结果定期更新;相应的,根据更新后的关键字组,生成对应的DFA程序代码。6、 一种基于有限状态自动机的字符串匹配装置,其特征在于,包括 生成才莫块,用于采用Aho-Corasick算法针对选定的关4定字组确定当前状态、输入字符和输出状态的对应关系,...

【专利技术属性】
技术研发人员:黄凯明
申请(专利权)人:福建星网锐捷网络有限公司
类型:发明
国别省市:35[中国|福建]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1