一种多关键词匹配方法和装置的制作方法

文档序号:6469914阅读:175来源:国知局
专利名称:一种多关键词匹配方法和装置的制作方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种多关键词匹配方法和装置。
背景技术
随着网络应用的快速发展,网络环境日益复杂,越来越多的来自于应 用层的安全威胁(如病毒、垃圾邮件、流氓软件等)对网络安全造成了巨
大的威胁。这些威胁手段封装在 TCP/IP ( Transmission Control Protocol/Internet Protocol,传输控制协议/网间协议)协议的净荷部分。传 统防火墙由于仅检查TCP/IP协议包头部分,而不对数据包内容进行检查, 因而无法拦截此类安全威胁。
在这种形势下,如图l所示,基于报文内容特征检测,关注报文第四 层以上(特别是应用层)的安全网关设备如内容安全防火墙、入侵检测系 统、病毒网关、起J及邮件网关、UTM ( United Threat Management,统一威 胁管理)等日益凸显其重要性。而模式匹配算法作为特征检测的重要手段, 安全网关中主要性能瓶颈之一 ,对其功能和性能的要求越来越高。
多模式匹配又称为多关键词匹配,是计算机科学领域中的基本问题之 一。跟普通单模式匹配算法相对的,扫描的时候针对的是所有预置的特征 进行扫描,通过对待扫描内容的一次扫描,获得所有预置的特征是否在待 扫描内容中出现的信息。而对普通的单模式匹配算法,若有多条预置特征, 则需对待扫描内容进行多次扫描。
多模式匹配算法解决的问题就是快速而准确地判断待测文本或者网络 内容中所有出现任意模式的位置。多模式匹配技术的应用领域非常广泛, 除了已经得到广泛应用的防火墙、入侵检测与防御、病毒检测和网络内容 过滤等网络安全领域,还扩展到其它学科和领域,例如信息管理、网络搜
索引擎和生物信息学当中的基因序列检测等。因此,研究和发展多关键词 匹配技术具有很强的学术和实际意义,被相关的学术和业界所关注。
此外,随着网络规模的扩大,病毒、攻击、等手段不断涌现,包含不
合法内容的站点日益增加,造成的结果是进行病毒、攻击、URL (Uniform Resource Locator,统一资源定位器)过滤等安全应用时,其特征库的规模 爆炸性增加,现有算法的匹配性能随着规则库的增长逐渐下降,造成相应 网关设备吞吐量的下降,这跟日益增长的网络应用以及用户对网络吞吐量 的需求形成了巨大的反差。在通过更换硬件,采用更高频率更高性能的硬 件产品解决上述反差的同时,对现有模式匹配算法进行优化,找到一种更 好的适用于超大规模特征集下的模式匹配算法是当务之急。
现有技术中解决多关键词匹配的基本思路是釆用B个字节的数据块(B 一般是采用2~4个字节)通过哈希函数产生跳跃表,与待测文本作匹配时 根据这个已经产生的跳跃表值移动文本,当不能移动时对可能存在匹配的 关键词作进一步的验证。现有技术是通过启发式的规则来确定数据块的跳 跃值,避开了一些不必要的验证过程,因而加快了匹配速度。现有技术的 优点在于具有平均性能好、匹配速度快、占用的内存空间小的特点。 在实现本发明的过程中,发明人发现现有技术至少存在以下问题 现有技术中,关键词数量增加后,跳跃表中跳跃值为零的项数会增多, 平均跳跃值会随之减小,从而无法有效地避免匹配过程中大量不必要的字 符比较;导致文本或网络内容的匹配速度下降;随着关键词数量的增加, 前缀相同的关键词也会大量增加,精确匹配过程中不断重复匹配相同的前 缀也会导致文本或网络内容的匹配速度下降。

发明内容
本发明实施例提供一种多关键词匹配方法和装置,用于实现提升匹配算 法的效率。
本发明实施例提供一种多关键词匹配方法,包括
对关键词集合进行预处理并建立相应的数据结构,所述数据结构中包括
跳跃表、前缀表、子跳跃表和相同前缀长度表; 根据待匹配内所述跳跃表;
当所述跳跃表的跳跃值为零时,根据前缀表表项,调用子跳跃表和/或相 同前缀长度表对所述待匹配内容进行匹配。
本发明还提供一种多关键词匹配装置,包括
预处理单元,用于对关4建词集合进行预处理并建立相应的数据结构,所 述数据结构中包括跳跃表、前缀表、子跳跃表和相同前缀长度表;
跳跃表检索单元,用于根据待匹配内容检索所述跳i^;
第一内容匹配单元,用于当所述跳跃表检索单元检索所述跳跃表的跳跃 值为零时,根据所述前缀表表项,调用子跳跃表和/或相同前缀长度表对所述 待匹配内容进行匹配。
与现有技术相比,本发明实施例具有以下优点
本发明实施例通过建立子跳跃表和相同前缀长度表,有效提升了现有 技术的跳跃能力,加快了精确匹配中出现大量具有相同前缀的关键词的匹 配速度,极大提升了模式匹配算法的效率。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实 施例或现有技术描述中所需要使用的附图作一筒单地介绍,显而易见地,下 面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲, 在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。 图1为现有技术中安全网关基本组网图; 图2为本发明实施例中关键词匹配的数据结构图; 图3为本发明实施例中一种多关键词匹配方法的流程图; 图4为本发明实施例中一种多关键词匹配方法预处理阶段流程图; 图5为本发明实施例中一种多关键词匹配方法子跳跃表产生过程示例
图6为本发明实施例中一种多关键词匹配方法子跳跃表建立的流程
图7为本发明实施例中一种多关键词匹配方法的内容匹配阶段流程
图8为本发明实施例中单个关键词与待分析文本或网络内容中的内容
进行字符比较成功的示例图9为本发明实施例中单个关键词与待分析文本或网络内容进行字符
比4交,匹配不成功的示例图10为本发明实施例中多个相同前缀关键词组与待分析文本或网络
内容比较过程图11为本发明实施例中一种多关键词匹配装置结构图12为本发明实施例中一种多关键词匹配装置又一结构图13为本发明实施例中一种多关键词匹配装置再一结构图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而 不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作 出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种多关键词匹配方法,应用于文本或网络内容分析 的大规模特多关键词快速匹配系统中,如图3所示,包括
5301、 对关键词集合进行预处理并建立相应的数据结构,所述数据结构 中包括跳跃表、前缀表、子跳跃表和相同前缀长度表;
5302、 根据待匹配内^^r索所述跳跃表;
5303、 当所述跳跃表的跳跃值为零时,根据前缀表表项,调用子跳跃表 和/或相同前缀长度表对所述待匹配内容进行匹配。
其中,步骤S301,如图4所示,具体为
S401、扫描关键词集合,统计关键词集合中最短关键词的长度m, m 为大于或等于4的正整数。
5402、 建立关键词集合对应的跳跃表。
该步骤中,跳跃表表项的索引由第一哈希函数用长度为Bl的数据块 产生,其中B1为2或2.5。扫描文本或网络内容时,根据跳跃表中的跳跃 值移动搜索窗口。具体产生办法是首先对每个可能的大小为Bl字节的 字符串用第 一哈希函数生成移动表的索引值,并将跳跃表中所有表项的跳 跃值初始化为m-Bl+l;考察第一个关键词的前m个字节,从m个字节的 末尾开始依次向前,分别取B1长度的数据块,记它的起始位置为q,对该 数据块用第一哈希函数产生的索引查跳跃表,得到的跳跃值与m-q中较 小的一个作为该项跳跃表值,如果得到的跳跃值与m-q相同,则将所述 跳跃值或者m-q作为该项跳跃表值。然后逐一考察所有关键词,按照上 述方法修改跳跃表各项的跳跃值。当关键词集合中的每个关键词都处理完 成后,跳跃表的建立过程就结束了。
5403、 建立关键词集合对应的前缀表。
该步骤中,前缀表表项的索引由第二哈希函数用长度为B2的数据块 产生,其中B2为2或3。考虑所有关键词的长度为B2的前缀,将所有具 有相同前缀的关键词组成的链表作为相应表项的值。每个表项含有一个头 节点,头节点中的计数值为具有相同前缀的关键词的数目,可以为0, 1 或大于1。根据前缀表表项中头节点的计数值的不同,对关键词分别作不 同的处理。具体为
(1) 前缀表表项中头节点的计数值为0的,不用作任何处理;
(2) 前缀表表项中头节点计数值为1的,为这个关键词建立子跳跃表。
(3) 前缀表表项中头节点计数值大于1的,首先对该组关键词按字典 序排序;然后建立相同前缀长度表;最后用与上述(2)步骤相同的方法为 该组中的每个关4建词建立相对应的子跳跃表。
步骤s403中,(2 )( 3 )所描述的为关键词建立子跳跃表的方法具体为
(1) 初始化所有子跳跃表项为0;
(2) 前m项的表值仍然保持O不变(这样设置的原因是在搜索过程 中,关键词前m个字节对应的子跳跃表值没有意义,因此将其设为O);
(3) 将一个大小为m的窗口置于上述关键词的第二个字节处,对窗 口中后B1个字节用第一哈希函数产生索引查找跳跃表,得到跳跃值为x, 若跳跃值x为零,则子跳跃表建立过程结束;若跳跃值x不为零,则该子 跳跃表的m+l项跳跃值为x,并将窗口移动x个字节。转(4)继续查找 跳跃表的过程;
(4) 根据当前窗口后Bl个字节查找跳跃表,若跳跃值不为零,则窗 口中最后一个字符所对应的子跳跃表的跳跃值为上述查找到的跳跃表的跳 跃值,然后重复本步骤;若查找到的跳跃表中的跳跃值为零或窗口到达关 键词最末端,转到(5);
(5) 从第m + 2项开始,子跳跃表的每一项跳跃值等于当前该项跳跃 值与前一项跳跃值之和,到此该关键词对应的子跳跃表产生完毕。
上述步骤s403中(3)步骤所述描述的为关键词建立相同前缀长度表 的方法具体为
(l)找出第一和第二个关键词的最长相同前缀子串,并把该子串长度 记录在相同前缀长度表的第 一项中。
(2 )依次找到后面的相邻关键词的最长相同前缀子串,并将其值记录 在相应的相同前缀长度表项中。
(3)用与头节点计数值为1的步骤相同的方法为该组中的每个关键词 建立相对应的子跳跃表。
下面以关键词"abcdefghijklmn,,为例说明子跳跃表的建立过程,如图 5所示为子跳跃表产生过程示例,该子跳跃表的建立具体步骤如图6所示, 包括
5601、 初始化所有关键词对应的子跳跃表项为0。
5602、 保持前m项的表值为0不变
5603、 窗口 w是长度为Bl的用于作第一哈希函数的数据块窗口,用 得到的索引查找跳跃表得到子跳跃表中e所对应的项跳跃值为3,窗口移 动3个字符,窗口移动到wl。5604、 窗口为wl,查找跳跃表得到h对应的子跳跃表的跳跃值为2, 窗口移动到w2,查找跳跃表得到j对应的子跳跃表的跳跃值为2。
5605、 从第m+2项开始,子跳跃表每一项的跳跃值等于当前值与前一 个跳跃值的和。
在本发明实施例中,在对待匹配内容进行预处理阶段后,进入内容匹 配阶段,如图7所示,包括以下步骤
5701、 将一个大小为m的窗口置于待匹配内容的开始处;
5702、 对窗口内的后Bl个字符进行第一哈希运算,用得到的哈希值 检索跳跃表,若对应表项的跳跃值不为零,则按照跳跃值移动窗口,重复 此步骤直到窗口到达待分析的文本或网络内容的最末端。
5703、 若跳跃表中的跳跃值为零,则对根据窗口中前B2个字符进行 第二哈希运算,用得到的哈希值检索前缀表,根据前缀表表项中的头节点 计数值的不同,分别进行三种不同的处理。
该步骤中,三种不同的处理具体包括
(1) 若前缀表的头节点计数值为0,则窗口向右移动一个字符,转到 步骤S702继续查找;
(2) 若前缀表的头节点计数值为1,将该表项关联词的关键词与待匹 配内容中的相应字段进行字符比较,如果匹配成功就报告一次匹配,并记 录该关键词最后一个字符对应的子跳跃表值,如图8所示,当匹配成功时, 应记录的子跳跃表位置Xn,所对应的子跳跃表值Fn;如果匹S己在关键词 中间的某个字符匹配失败,就记录匹配失败字符的前一个字符所对应的子 跳跃表值,如图9所示。最后根据记录的子跳跃表值移动窗口,然后转到 步骤S702继续查找;
(3) 若前缀表的头节点计数值大于1,要将该表项关联的所有关键词 逐一与待分析的文本或网络内容中的相应字段进行字符比较。本关键词组 中第一个关键词比较完毕后,根据步骤(2)中的方法记录该关键词对应的 子跳跃表项位置及此位置上的子跳跃表值;然后比较第二个关键词,然后 将第二个关键词对应的子跳跃表项位置及此位置上的子跳跃表值,将此跳 跃表位置与前一个子跳跃表位置比较,取最右的位置及其对应的子跳跃表 值。依此类推,选择所有关键词中最右位置对应的子跳跃表值,根据这个
值移动窗口,然后转到步骤S702继续查找。
其中,将某一表项所关联的所有关键词逐一与待匹配内容进行字符比 较的方法,包括
首先,从第一个关键词Pl开始与文本或网络内容T比较,设关键词 Pi的长度为li,搜索指针为J(0<J<li),文本T的搜索指针为H。当Pi在 第J个位置与T匹配失败,若J〉li就"^艮告匹配。
其次,根据Pi和Pi+1相同前缀子串的长度same-pos [i]与J的不同关 系分别处理(其中相同前缀长度表用same-pos []表示,same-pos [i]表示Pi 与Pi+1的相同前缀长度),具体为
1) 若same-pos [i] = J,说明Pi和Pi+1从第J个位置开始出现不同的, 那么Pi+1可以从J位置开始与T进行精确比较,即i-i+l, J不变,T的搜 索指针H也不变。
2) 若same-pos [i] < J,说明Pi和Pi+1相同部分长度小于Pi已匹配的 长度,那么Pi+1应,人same-pos [i]与T开始匹配,即i = i+l , J = same画pos [i], T的搜索指针回退J-same-pos [i]个位置开始搜索,即H = H - (J-same-pos[i])。
3) 若same-pos [i] > j,说明Pi与T匹配失败的位置大于Pi和Pi+1相 同部分长度,那么Pi+1应该从J开始与T精确匹配,即i—十l, J不变,T 的搜索指针H也不变。虽然可以知道Pi+l与T必定也会在J位置匹配失 败,但是如果略过Pi+l直接判断Pi+2开始匹配的位置,情况会非常复杂。 所以要通过Pi+l匹配结果进一步判断Pi+2开始匹配的位置。
反复执行上面的搜索步骤,直到窗口到达待分析文本或网络内容的最 末端完成对文本或网络内容的分析。
下面用一个图例说明上述精确比较过程,如图IO所示。图中表示关键
词P1、 P2、 P3与文本T精确匹配的图示,具体为
1) Pl与T从xl(ti+1)比较,在x6(ti+6)位置匹配失败。
2) 相同前缀长度表第一项为6说明xlx2x3x4x5 = yly2y3y4y5,而从 Pl与T的比较结果知道x 1x2x3x4x5= ti+lti+2ti+3ti+4ti+5 ,那么 yly2y3y4y5= ti+lti+2ti+3ti+4ti+5。所以P2可以直4妄从y6开始与T的ti+6 比较。由于y6#x6andx6 = ti+6,比较会在y6位置失败。
3 )根据相同前缀长度表第二项为8 ,知道yly2y3y4y5y6y7= Zlz2z3z4z5z6z7, P2与T匹配的结果是yly2y3y4y5= ti+lti+2ti+3ti+4ti+5 而y6弁i+6,那么P3可以z6开始与T的ti+6开始比專支。
本发明实施例提供的一种多关键词匹配方法,通过建立子跳跃表和相 同前缀长度表,有效提升了现有技术的跳跃能力,加快了精确匹配中出现 大量具有相同前缀的关键词的匹配速度,极大提升了模式匹配算法的效率。
本发明实施例还提供一种多关键词匹配装置,如图ll所示,包括预处 理单元10、跳跃表检索单元20以及第一内容匹配单元30,具体为
预处理单元10,用于对关键词集合进行预处理并建立相应的数据结构, 所述数据结构中包括跳跃表、前缀表、子跳跃表和相同前缀长度表;
跳跃表检索单元20,用于根据待匹配内^^r索所述跳跃表;
第一内容匹配单元30,用于当所述跳跃表检索单元20检索所述跳跃表的 跳跃值为零时,根据所述前缀表表项,调用子跳跃表和/或相同前缀长度表对 所述待匹配内容进行匹配。
其中,预处理单元10,如图12所示,包括
跳跃表建立子单元11,用于为关键词集合建立对应的跳跃表;该单元在 扫描待匹配内容时,根据跳跃表中的跳跃值移动搜索窗口。
前缀表建立子单元12,用于为关键词集合建立对应的前缀表。
根据该前缀表建立子单元12中前缀表表项中头节点计数值的不同分别为 每个关键词创建子跳跃表建立子单元13和相同前缀长度表建立子单元14.
子跳跃表建立子单元13,用于为关键词建立对应的子跳跃表;
相同前缀长度表建立子单元14,用于为每个关键词建立对应的相同前缀 长度表。
具体的,跳跃表4全索单元20,如图13所示,还包括
窗口确定子单元21,用于将一个大小为m的窗口置于所述待匹配内容的 开始处,所述m为所有关键词中最短关键词的长度;
跳跃表检索子单元22,用于对窗口内预定的后B1个字节进行运算,用 得到的运算结果检索跳跃表。
上述第一内容匹配单元30,具体包括
当所述跳跃表检索子单元22检索所述跳跃表的跳跃值为零时,根据窗口 中前B2个字节查找前缀表,
当所述前缀表表项的头节点计数值为0时,表示没有与待匹配内容相同 的关键词,窗口向右移动一个字符,并利用得到的哈希值检索跳跃表;
当前缀表表项的头节点计数值为1时,将所述表项关联的关键词与待匹 配内容的相应字段进行字符比较,根据比较结果检索所述关键词对应的子跳 跃表,根据所述子跳跃表的跳跃值移动窗口,并利用得到的运算结果检索跳 跃表;
当前缀表表项的头节点计数值大于1时,依次将所述表项关联的所有关 键词与待匹配内容的相应字段进行字符比较,每次进行下一个关键词与待匹 配内容比较前,要根据当前比较结果和相应的相同前缀长度值决定下一个关 键词与待匹配内容比较的开始位置。在比较过程中,每个关键词比较结束时 都要记录比较失败的位置及其对应的子跳跃表值,最后找出比较失败的最右 位置及其对应的子跳跃表值,根据所述的跳跃值移动窗口,并利用得到的运 算结果检索跳跃表;
重复上述过程,直到窗口到达待匹配内容的最末端。 本发明实施例提供的一种多关键词匹配装置还包括 第二内容匹配单元40,用于当所述跳跃表检索单元20检索所述跳跃表 的跳跃值不为零,则按照跳跃值移动窗口并重复该过程。
本发明实施例提供的一种多关键词匹配装置,通过建立子跳跃表和相 同前缀长度表,有效提升了现有技术的跳跃能力,加快了精确匹配中出现 大量具有相同前缀的关键词的匹配速度,极大提升了模式匹配算法的效率。 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本 发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来 实现基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,
该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM, U盘, 移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计 算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的 普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进 和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1、一种多关键词匹配方法,其特征在于,包括对关键词集合进行预处理并建立相应的数据结构,所述数据结构中包括跳跃表、前缀表、子跳跃表和相同前缀长度表; 根据待匹配内容检索所述跳跃表; 当所述跳跃表的跳跃值为零时,根据前缀表表项,调用子跳跃表和/或相同前缀长度表对所述待匹配内容进行匹配。
2、 如权利要求l所述的方法,其特征在于,建立所述跳跃表包括 对每个可能的大小为Bl字节的字符串生成移动表的索引值,并将所述跳跃表中所有表项的跳跃值初始化为m-Bl+l;所述m为所有关键词中最短关键 词的长度,所述B1为2或2.5;考察每一个关键词的前m个字节,从m个字节的末尾开始依次向前,分 别取B1长度的数据块,所述数据块的起始位置为q,对所述数据块产生的索 引查跳跃表,得到的跳跃值与m-q中较小的一个作为该项跳跃表值。
3、 如权利要求l所述的方法,其特征在于,建立所述前缀表包括 使用预定长度为B2的数据块产生前缀表表项的索引,将具有相同前缀关键词组成的链表作为相应表项的值,所述B2为2或3。
4、 如权利要求3所述的方法,其特征在于,还包括对所述前缀表中的 每个入口加入头节点并进行处理,所述处理具体为入口下只有一个关键词时,所述入口的头节点计数为1,并为所述关键词建立所述子跳跃表;入口下有多个关键词时,关键词个数为s,此入口头节点的计数为s,并 对该组关键词按字典序排序,然后建立相同前缀长度表,最后为每个所述关 键词建立相对应的所述子跳跃表。
5、 如权利要求4所述的方法,其特征在于,所述为关4定词建立所述子跳 跃表包括初始化所有关4建词对应的子跳跃表项为0;保持前m项的表值为0不变,所述m为所有关键词中最短关键词的长度; 将一个大小为m的窗口置于关键词的第二字节处,对窗口中预定的后B1 个字节产生索引查找跳跃表,得到跳跃值x;跳跃值x不为零时,设置所述子跳il^的m+l项跳跃值为x,并将窗口 移动x个字节;根据当前窗口后B1个字节查找跳跃表,若跳跃值不为零,则窗口中最后 一个字符所对应所述子跳跃表的跳跃值为上述查找到的跳跃表的跳跃值,并 重复本步骤直至查找到跳JA4中的跳跃值为零或窗口到达关键词最末端;若查找到的跳跃表中的跳跃值为零或窗口到达关键词最末端,则从第m + 2项开始,子跳跃表的每一项跳跃值等于当前项跳跃值与前一项跳跃值之 和。
6、 如权利要求4所述的方法,其特征在于,所述建立所述相同前缀长度 表包括获取相邻关键词的最长相同前缀子串,并将其值记录在相应的相同前缀 长度表项中。
7、 如权利要求4所述的方法,其特征在于,所述头节点具体为具有相同 前缀的关键词的数目,为0、 l或大于l。
8、 如权利要求l所述的方法,其特征在于,所述根据待匹配内容检索所 述跳跃表包括将一个大小为m的窗口置于待匹配内容的开始处,所述m为所有关键词 中最短关键词的长度;对窗口内预定的后Bl个字节进行运算,用得到的运算结果检索跳跃表。
9、 如权利要求l所述的方法,其特征在于,所述当所述跳跃表的跳跃值 为零时,根据前缀表表项,调用子跳跃表和/或相同前缀长度表对所述待匹配 内容进行匹配具体包括当所述跳跃表的跳跃值为零时,根据窗口中前B2个字节查找前缀表, 当所述前缀表表项的头节点计数值为0时,表示没有与待匹配内容相同 的关键词,窗口向右移动一个字符,并利用得到的运算值检索跳跃表;当所述前缀表表项的头节点计数值为1时,将所述表项关联的关键词与 待匹配内容的相应字段进行字符比较,根据比较结果检索所述关键词对应的 子跳跃表,根据所述子跳跃表的跳跃值移动窗口,并利用得到的运算结果检索跳跃表;当所述前缀表表项的头节点计数值大于1时,依次将所述表项关联的所 有关键词与待匹配内容的相应字段进行字符比较,每次进行下一个关键词与 待匹配内容比较前,要根据当前比较结果和相应的相同前缀长度值决定下一 个关键词与待匹配内容比较的开始位置;在比较过程中,每个关键词比较结 束时都要记录比较失败的位置及其对应的子跳跃表值,最后找出比较失败的 最右位置及其对应的子跳跃表值,根据所述的跳跃值移动窗口,并利用得到 的运算结果检索跳跃表;重复上述过程,直到窗口到达待匹配内容的最末端。
10、 如权利要求l所述的方法,其特征在于,还包括当所述跳跃表的跳跃值不为零时,按照所述跳跃值移动窗口并重复该过 程直到窗口到达待匹配内容的最末端。
11、 一种多关键词匹配装置,其特征在于,包括预处理单元、跳跃表检 索单元,以及第一内容匹配单元;预处理单元,用于对关键词集合进行预处理并建立相应的数据结构,所 述数据结构中包括跳跃表、前缀表、子跳跃表和相同前缀长度表; 跳跃表检索单元,用于根据待匹配内容检索所述跳跃表; 第一内容匹配单元,用于当所述跳跃表检索单元检索所述跳跃表的跳跃 值为零时,根据所述前缀表表项,调用子跳跃表和/或相同前缀长度表对所述 待匹配内容进行匹配。
12、 如权利要求11所述的装置,其特征在于,所述预处理单元包括 跳跃表建立子单元,用于对关键词集合建立对应的跳il^; 前缀表建立子单元,用于对关键词集合建立对应的前缀表; 子跳跃表建立子单元,用于对关键词集合建立对应的子跳跃表;相同前缀长度表建立子单元,用于对关键词集合建立对应的相同前缀长 度表。
13、 如权利要求11所述的装置,其特征在于,所述跳跃表检索单元包括: 窗口确定子单元,用于将一个大小为m的窗口置于所述;f寺匹配内容的开始处,所述m为所有关键词中最短关键词的长度;跳跃表检索子单元,用于对窗口内预定的后B1个字节进行运算,用得到 的运算结果检索跳跃表。
14、 如权利要求11所述的装置,其特征在于,所述第一内容匹配单元具 体包括当所述跳跃表的跳跃值为零时,根据窗口中前B2个字节查找前缀表, 当所述前缀表表项的头节点计数值为0时,表示没有与待匹配内容相同的关键词,窗口向右移动一个字符,并利用得到的哈希值检索跳跃表;前缀表表项的头节点计数值为1时,将所述表项关联的关键词与待匹配内容的相应字段进行字符比较,根据比较结果检索所述关键词对应的子跳跃表,根据所述子跳跃表的跳跃值移动窗口,并利用得到的运算结果检索跳跃表;前缀表表项的头节点计数值大于1时,依次将所述表项关联的所有关键 词与待匹配内容的相应字段进行字符比较,每次进行下一个关键词与待匹配 内容比较前,要根据当前比较结果和相应的相同前缀长度值决定下一个关键 词与待匹配内容比较的开始位置。在比较过程中,每个关键词比较结束时都 要记录比较失败的位置及其对应的子跳跃表值,最后找出比丰支失败的最右位 置及其对应的子跳跃表值,根据所述的跳跃值移动窗口,并利用得到的运算 结果检索跳跃表;重复上述过程,直到窗口到达待匹配内容的最末端。
15、 如权利要求11所述的装置,其特征在于,还包括第二内容匹配单元,用于当所述跳跃表检索单元检索所述跳跃表的跳跃 值不为零,则按照跳跃值移动窗口并重复该过程。
全文摘要
本发明的实施例公开了一种多关键词匹配方法和装置。该方法包括对关键词集合进行预处理并建立相应的数据结构,所述数据结构中包括跳跃表、前缀表、子跳跃表和相同前缀长度表;根据待匹配内容检索所述跳跃表;当所述跳跃表的跳跃值为零时,根据前缀表表项,调用子跳跃表和/或相同前缀长度表对所述待匹配内容进行匹配。通过使用本发明的实施例,有效提升了现有技术的跳跃能力,加快了精确匹配中出现大量具有相同前缀的关键词的匹配速度,极大提升了模式匹配算法的效率。
文档编号G06F17/30GK101364237SQ200810212218
公开日2009年2月11日 申请日期2008年9月5日 优先权日2008年9月5日
发明者卞建光, 雪 李, 薛一波 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1