[发明专利]一种文本查找的方法和装置在审
申请号: | 201410191247.6 | 申请日: | 2014-05-07 |
公开(公告)号: | CN104008136A | 公开(公告)日: | 2014-08-27 |
发明(设计)人: | 刘超;姜建国;李敏;仇新梁;喻民;胡波;黄超;王菲飞;王冉晴;赵双;刘坤颖;夏剑锋 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 李迪 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 文本 查找 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,尤其涉及一种文本查找的方法和装置。
背景技术
对于文件检查,主要是对文本中出现的关键字段进行快速匹配查找并定位相应文件。通常计算机里存储有数以万计各类型的文本文件,为了快速准确地查找关键字段需要应用一些模式匹配算法。对于入侵检测系统,模式匹配算法通常应用于误用检测,著名的开放源码的入侵检测系统Snort就是基于模式匹配。模式匹配算法的性能直接影响入侵检测系统的检测效率。在高速网络环境下,如果模式匹配算法来不及处理大量的实时网络数据包,必然会丢弃部分数据包,而这些被丢弃的数据包中就可能包含入侵信息。常用的模式匹配算法有BF算法、KMP算法、BM算法、BMH算法、AC算法等。由于AC算法的简单高效,所以它的应用范围比较广。
AC算法是一种经典的多模式匹配算法。对于给定的长度为n的文本,和模式集合P{p1,p2,...pm},在O(n)时间复杂度内,找到文本中的所有目标模式,而与模式集合的规模m无关,即能快速有效的在指定文本中查找匹配特定的关键字符或字段。AC算法使用的数据结构是Trie树,是一种用于快速查找的多叉树结构。其核心思想是以空间换时间,利用字符串的公共前缀来减少查询时间以提高效率,主要采用完全Hash表方式来存储跳转状态。但是,如果当系统中存在大量字段且这些字段也都没有公共前缀的话,那么相应的Trie树就会非常耗费内存。这在中文文本查找来说尤为明显,对于英文目标字符串的字符数最大是256,但对于中文文本来说,匹配的目标字符串最大数目到达256*256,随着目标字符串增大,Trie树结构也随之增大,存储空间急剧膨胀,巨大的存储空间会使得AC算法的时效性大大降低。
发明内容
(一)要解决的技术问题
本发明提供一种文本查找的方法和装置,以解决现有技术中AC算法的存储空间过大,时效性较低的技术问题。
(二)技术方案
为解决上述技术问题,本发明提供一种文本查找的方法,包括:
建立有限状态自动机,存储每个状态的单链表;
存储扇出系数大于指定阈值的单链表Vi的字符域和状态域,其中i为单链表节点状态域的值,i≥0且取整数,将其转化为线性表Li且释放所述单链表Vi的存储空间,对所述线性表Li的字符域进行排序;
计算所述有限状态自动机的跳转函数、失效函数和输出函数,其中,计算所述跳转函数时,若当前状态等于所述单链表Vi的状态域,对所述线性表Li进行二分查找;
完成文本的匹配和查找。
进一步地,所述存储每个状态的单链表还包括:
建立顶点表,记录所述单链表的表头地址,形成邻接链表。
进一步地,所述计算所述有限状态自动机的跳转函数还包括:
若当前状态不在所述单链表Vi的状态域中时,直接搜索当前状态后的单链表。
进一步地,所述完成文本的匹配和查找包括:
根据所述文本的当前状态,利用所述跳转函数、失效函数和输出函数完成文本的匹配和查找。
另一方面,本发明还提供一种文本查找装置,包括顺序相连的存储单元、转化单元、计算单元和查找单元,其中:
存储单元,用于存储有限状态自动机中每个状态的单链表;
转化单元,用于存储有限状态自动机中扇出系数大于指定阈值的单链表Vi的字符域和状态域,其中i为单链表节点状态域的值,i≥0且取整数,将其转化为线性表Li且释放所述单链表Vi的存储空间,对所述线性表Li的字符域进行排序;
计算单元,用于计算所述有限状态自动机的跳转函数、失效函数和输出函数,其中,计算所述跳转函数时,若当前状态等于所述单链表Vi的状态域,对所述线性表Li进行二分查找;
查找单元,用于完成文本的匹配和查找。
进一步地,所述存储单元还用于:
建立顶点表,记录所述单链表的表头地址,形成邻接链表。
进一步地,所述计算单元还用于:
若当前状态不在所述单链表Vi的状态域中时,直接搜索当前状态后的单链表。
进一步地,所述查找单元还用于:
根据所述文本的当前状态,利用所述跳转函数、失效函数和输出函数完成文本的匹配和查找。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410191247.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种电能表检测线专用托盘
- 下一篇:单相接地及短路跳闸报警电路