一种文本查找的方法和装置制造方法及图纸

技术编号:10357047 阅读:134 留言:0更新日期:2014-08-27 13:15
本发明专利技术提供一种文本快速查找的方法和装置,包括:优化数据存储结构,建立有限状态自动机,存储每个状态的单链表;存储扇出系数大于指定阈值的单链表Vi的字符域和状态域,其中i为单链表节点状态域的值,i≥0且取整数,将其转化为线性表Li且释放所述单链表Vi的存储空间,对所述线性表Li的字符域进行排序;计算所述有限状态自动机的跳转函数、失效函数和输出函数,其中,计算所述跳转函数时,若当前状态等于所述单链表Vi的状态域,对所述线性表Li进行二分查找;完成文本的匹配和查找。本发明专利技术加快了下一状态的跳转速度,既降低了AC算法的空间复杂度,减少了内存消耗,又提高了算法的效率。

【技术实现步骤摘要】
一种文本查找的方法和装置
本专利技术涉及计算机
,尤其涉及一种文本查找的方法和装置。
技术介绍
对于文件检查,主要是对文本中出现的关键字段进行快速匹配查找并定位相应文件。通常计算机里存储有数以万计各类型的文本文件,为了快速准确地查找关键字段需要应用一些模式匹配算法。对于入侵检测系统,模式匹配算法通常应用于误用检测,著名的开放源码的入侵检测系统Snort就是基于模式匹配。模式匹配算法的性能直接影响入侵检测系统的检测效率。在高速网络环境下,如果模式匹配算法来不及处理大量的实时网络数据包,必然会丢弃部分数据包,而这些被丢弃的数据包中就可能包含入侵信息。常用的模式匹配算法有BF算法、KMP算法、BM算法、BMH算法、AC算法等。由于AC算法的简单高效,所以它的应用范围比较广。AC算法是一种经典的多模式匹配算法。对于给定的长度为η的文本,和模式集合P{pl,p2,...pm},在0(η)时间复杂度内,找到文本中的所有目标模式,而与模式集合的规模m无关,即能快速有效的在指定文本中查找匹配特定的关键字符或字段。AC算法使用的数据结构是Trie树,是一种用于快速查找的多叉树结构。其核心思想是以空间换时间,利用字符串的公共前缀来减少查询时间以提高效率,主要采用完全Hash表方式来存储跳转状态。但是,如果当系统中存在大量字段且这些字段也都没有公共前缀的话,那么相应的Trie树就会非常耗费内存。这在中文文本查找来说尤为明显,对于英文目标字符串的字符数最大是256,但对于中 文文本来说,匹配的目标字符串最大数目到达256*256,随着目标字符串增大,Trie树结构也随之增大,存储空间急剧膨胀,巨大的存储空间会使得AC算法的时效性大大降低。
技术实现思路
(一 )要解决的技术问题本专利技术提供一种文本查找的方法和装置,以解决现有技术中AC算法的存储空间过大,时效性较低的技术问题。( 二 )技术方案为解决上述技术问题,本专利技术提供一种文本查找的方法,包括:建立有限状态自动机,存储每个状态的单链表;存储扇出系数大于指定阈值的单链表Vi的字符域和状态域,其中i为单链表节点状态域的值,I ^ O且取整数,将其转化为线性表Li且释放所述单链表Vi的存储空间,对所述线性表Li的字符域进行排序;计算所述有限状态自动机的跳转函数、失效函数和输出函数,其中,计算所述跳转函数时,若当前状态等于所述单链表Vi的状态域,对所述线性表Li进行二分查找;完成文本的匹配和查找。进一步地,所述存储每个状态的单链表还包括:建立顶点表,记录所述单链表的表头地址,形成邻接链表。进一步地,所述计算所述有限状态自动机的跳转函数还包括:若当前状态不在所述单链表Vi的状态域中时,直接搜索当前状态后的单链表。进一步地,所述完成文本的匹配和查找包括:根据所述文本的当前状态,利用所述跳转函数、失效函数和输出函数完成文本的匹配和查找。另一方面,本专利技术还提供一种文本查找装置,包括顺序相连的存储单元、转化单元、计算单元和查找单元,其中:存储单元,用于存储有限状态自动机中每个状态的单链表;转化单元,用于存储有限状态自动机中扇出系数大于指定阈值的单链表Vi的字符域和状态域,其中i为单链表节点状态域的值,I ^ O且取整数,将其转化为线性表Li且释放所述单链表Vi的存储空间,对所述线性表Li的字符域进行排序;计算单元,用于计算所述有限状态自动机的跳转函数、失效函数和输出函数,其中,计算所述跳转函数时,若当前状态等于所述单链表\的状态域,对所述线性表Li进行二分查找;查找单元,用于完成文本的匹配和查找。进一步地,所述存储单元还用于:建立顶点表,记录所述单链表的表头地址,形成邻接链表。进一步地,所述计算单元还用于:若当前状态不在所述单链表Vi的状态域中时,直接搜索当前状态后的单链表。进一步地,所述查找单元还用于:根据所述文本的当前状态,利用所述跳转函数、失效函数和输出函数完成文本的匹配和查找。(三)有益效果可见,在本专利技术实施例提供的一种文本查找方法和装置中,将有限状态自动机中扇出系数大于指定阈值的单链表转化为线性表,替代了原本的完全Hash表存储方式,加快了下一状态的跳转速度,既降低了 AC算法的空间复杂度,减少了内存消耗,又提高了算法的效率。【附图说明】为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例文本查找方法的基本流程示意图;图2是本专利技术实施例文本查找方法的一个优选流程示意图;图3是本专利技术实施例Trie多叉树结构图;图4是本专利技术实施例邻接链表存储方式示意图;图5是本专利技术实施例文本查找方法改进的邻接链表存储方式示意图;图6是完全Hash表和本专利技术实施例邻接链表空间存储对比结果示意图;图7是本专利技术实施例文本查找装置的基本结构示意图。【具体实施方式】为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例首先提供一种文本查找方法,参见图1,包括:步骤101:建立有限状态自动机,存储每个状态的单链表;步骤102:存储扇出系数大于指定阈值的单链表Vi的字符域和状态域,其中i为单链表节点状态域的值,i > O且取整数,将其转化为线性表Li且释放所述单链表Vi的存储空间,对所述线性表Li的字符域进行排序;步骤103:计算所述有限状态自动机的跳转函数、失效函数和输出函数,其中,计算所述跳转函数时,若当前状态等于所述单链表Vi的状态域,对所述线性表Li进行二分查找;步骤104:完成文本的匹配和查找。可见,在本专利技术实施例提供的一种文本查找方法中,将有限状态自动机中扇出系数大于指定阈值的单链表转化为线性表,替代了原本的完全Hash表存储方式,加快了下一状态的跳转速度,既降低了 AC算法的空间复杂度,减少了内存消耗,又提高了算法的效率。优选地,存储每个状态的单链表还可以包括:建立顶点表,记录所述单链表的表头地址,形成邻接链表。优选地,可以将扇出系数较大的单链表转化为线性表优选地,计算所述有限状态自动机的跳转函数还可以包括:若当前状态不在所述单链表Vi的状态域中时,直接搜索当前状态后的单链表。优选地,完成文本的匹配和查找可以包括:根据所述文本的当前状态,利用所述跳转函数、失效函数和输出函数完成文本的匹配和查找。下面以基于中文文本的快速查找方法为例,来详细说明本专利技术一个实施例的具体实现过程,参见图2:步骤201:建立有限状态自动机,存储每个状态的单链表。本步骤中,首先建立有限状态自动机,其中需要建立顶点表,statetable,用于记录单链表表头地址。对于模式串集K中的每一个模式串ki;初始状态为状态O。逐个取出模式串中的每一个字符,搜索statetable[0]后面的单链表,若存在文本域为该字符的节点,则将节点本文档来自技高网
...

【技术保护点】
一种文本查找的方法,其特征在于,包括:建立有限状态自动机,存储每个状态的单链表;存储扇出系数大于指定阈值的单链表Vi的字符域和状态域,其中i为单链表节点状态域的值,i≥0且取整数,将其转化为线性表Li且释放所述单链表Vi的存储空间,对所述线性表Li的字符域进行排序;计算所述有限状态自动机的跳转函数、失效函数和输出函数,其中,计算所述跳转函数时,若当前状态等于所述单链表Vi的状态域,对所述线性表Li进行二分查找;完成文本的匹配和查找。

【技术特征摘要】
1.一种文本查找的方法,其特征在于,包括: 建立有限状态自动机,存储每个状态的单链表; 存储扇出系数大于指定阈值的单链表Vi的字符域和状态域,其中i为单链表节点状态域的值,I ^ O且取整数,将其转化为线性表Li且释放所述单链表Vi的存储空间,对所述线性表Li的字符域进行排序; 计算所述有限状态自动机的跳转函数、失效函数和输出函数,其中,计算所述跳转函数时,若当前状态等于所述单链表Vi的状态域,对所述线性表Li进行二分查找; 完成文本的匹配和查找。2.根据权利要求1所述的文本查找方法,其特征在于,所述存储每个状态的单链表还包括: 建立顶点表,记录所述单链表的表头地址,形成邻接链表。3.根据权利要求1所述的文本查找方法,其特征在于,所述计算所述有限状态自动机的跳转函数还包括: 若当前状态不在所述单链表Vi的状态域中时,直接搜索当前状态后的单链表。4.根据权利要求1至3中任一项所述的文本查找方法,其特征在于,所述完成文本的匹配和查找包括: 根据所述文本的当前状态,利用所述跳转函数、失效函数和输出函数完成文本的匹配和查找。5.一种文本查找装置,其特征在于,...

【专利技术属性】
技术研发人员:刘超姜建国李敏仇新梁喻民胡波黄超王菲飞王冉晴赵双刘坤颖夏剑锋
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京;11

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

1