一种近似匹配方法和装置转让专利

申请号 : CN200810148827.1

文献号 : CN101369278B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 薛一波李雪卞建光

申请人 : 成都市华为赛门铁克科技有限公司

摘要 :

本发明实施例公开了一种近似匹配方法和装置。该方法包括:拆分关键词生成关键词子串集合,为所述关键词子串集合建立对应的表项;根据所述表项将待匹配内容与所述关键词子串集合进行精确匹配;对精确匹配成功的关键词子串对应的关键词和所述待匹配内容进行近似匹配验证,获得近似匹配结果。通过使用本发明的实施例,大幅提高了大规模关键词情况下近似匹配算法的性能,满足了文本或网络内容近似匹配处理的实用要求。

权利要求 :

1.一种近似匹配方法,其特征在于,包括:

拆分关键词生成关键词子串集合,为所述关键词子串集合建立对应的表项,所述关键词子串集合中的关键词子串长度根据关键词的长度与最大允许的错误值获得;

根据所述表项将待匹配内容与所述关键词子串集合进行精确匹配;

对精确匹配成功的关键词子串对应的关键词和所述待匹配内容进行近似匹配验证,获得近似匹配结果。

2.如权利要求1所述的方法,其特征在于,所述拆分关键词并生成关键词子串集合包括:提取关键词集合,拆分每个关键词并生成每个关键词的关键词子串;

将所述关键词子串组成关键词子串集合,建立每个所述关键词子串与原关键词的映射。

3.如权利要求1所述的方法,其特征在于,所述为关键词子串集合建立的对应的表项至少包括:跳跃表、哈希表和前缀表。

4.如权利要求3所述的方法,其特征在于,所述为关键词子串集合建立对应的跳跃表包括:对所述关键词子串集合中的所有关键词子串产生跳跃表,所述跳跃表用于在精确匹配各关键词子串时,快速的向前跳跃。

5.如权利要求3所述的方法,其特征在于,所述为关键词子串集合建立对应的哈希表包括:对所述关键词子串集合产生哈希表,所述哈希表用于搜索可能出现的精确匹配时,找到可能存在匹配的关键词子串。

6.如权利要求3所述的方法,其特征在于,所述为关键词子串集合建立对应的前缀表包括:对所述关键词子串集合产生前缀表,所述前缀表用于在精确匹配时过滤不可能存在的关键词子串。

7.如权利要求3所述的方法,其特征在于,所述根据所述表项将待匹配内容与所述关键词子串集合进行精确匹配包括: A、确定所述关键词子串集合中最短关键词的长度,根据所述最短关键词的长度在所述待匹配内容开始处设置匹配窗口;

B、对所述匹配窗口中的待匹配内容的后特定数量个字节进行哈希运算,利用得到的哈希值检索所述跳跃表;所述跳跃表中对应表项跳跃值不为零时,重复步骤B;

C、所述跳跃表中对应表项跳跃值为零时,根据所述匹配窗口中的待匹配内容的后特定数量个字节查找所述哈希表,根据所述哈希表中表项的情况进行相应处理;所述处理包括:若所述哈希表中表项为空,则将所述匹配窗口向右移动一个字符,转步骤B;若所述哈希表中表项有关键词子串,则将所述各关键词子串的前缀表中的前缀与待匹配内容中的相应字段的前缀表中的前缀进行比较,若不同则转步骤B,否则转步骤D;

D、将前缀与所述待匹配内容相同的关键词子串进行单模式精确匹配,匹配失败则移动所述匹配窗口一个字节,匹配成功则进行将待匹配内容与所述关键词子串对应的关键词进行近似匹配验证的步骤;

E、重复步骤B和步骤C,直至所述匹配窗口到达所述待匹配内容的末端。

8.如权利要求7所述的方法,其特征在于,所述对精确匹配成功的关键词子串对应的关键词和所述待匹配内容进行近似匹配验证包括:取出所述精确匹配成功的关键词子串在拆分前所在的关键词;

将所述关键词和待匹配内容的相应位置进行对齐;

对所述关键词和待匹配内容进行近似匹配验证。

9.如权利要求8所述的方法,其特征在于,所述对所述关键词和待匹配内容进行近似匹配验证包括:对于长度不大于32位的关键词,采用32位并行BPM算法进行单模式近似匹配的验证;

对于长度大于32位,不大于64位的关键词,采用64位并行BPM算法进行单模式近似匹配的验证;

对于长度大于64位的关键词,采用任意位并行BPM算法进行单模式近似匹配的验证。

10.如权利要求8所述的方法,其特征在于,还包括:

当一关键词的第一关键词子串精确匹配成功,且所述关键词和所述待匹配内容近似匹配时,记录所述关键词在所述待匹配内容中出现的匹配位置;

所述关键词的第二关键词子串精确匹配成功时,获取所述关键词子串要验证的位置;

所述匹配的位置在所述验证位置之后或与所述验证位置重合时,停止对所述关键词与待匹配数据进行近似匹配验证。

11.一种匹配装置,其特征在于,包括:

预处理单元,用于拆分关键词并生成关键词子串集合,为所述关键词子串集合建立对应的表项,所述关键词子串集合中的关键词子串长度根据关键词的长度与最大允许的错误值获得;

精确匹配单元,用于根据所述预处理单元建立的表项将待匹配内容与所述关键词子串集合进行精确匹配;

近似匹配单元,用于对所述精确匹配单元精确匹配成功的关键词子串对应的关键词和所述待匹配内容进行近似匹配验证,获得近似匹配结果。

12.如权利要求11所述的装置,其特征在于,所述预处理单元包括:拆分子单元,用于提取关键词集合,拆分每个关键词并生成每个关键词的关键词子串;

将所述关键词子串组成关键词子串集合,建立每个所述关键词子串与原关键词的映射;

跳跃表建立子单元,用于对所述关键词子串集合中的所有关键词子串产生跳跃表,所述跳跃表用于在精确匹配各关键词子串时,快速的向前跳跃;

哈希表建立子单元,用于对所述关键词子串集合产生哈希表,所述哈希表用于搜索可能出现的精确匹配时,找到可能存在匹配的关键词子串;

前缀表建立子单元,用于对所述关键词子串集合产生前缀表,所述前缀表用于在精确匹配时过滤不可能存在的关键词子串。

13.如权利要求12所述的装置,其特征在于,所述精确匹配单元包括:匹配窗口设置子单元、用于确定所述关键词子串集合中最短关键词的长度,根据所述最短关键词的长度在所述待匹配内容开始处设置匹配窗口并发送通知; 跳跃表检索子单元,用于接收所述匹配窗口设置子单元的通知,对所述匹配窗口中的待匹配内容的后特定数量个字节进行哈希运算,利用得到的哈希值检索所述跳跃表;当所述跳跃表中对应表项跳跃值不为零时则重复本子单元中所述哈希运算和跳跃表检索的步骤,否则发送通知;

第一处理子单元,用于接收所述跳跃表检索子单元发送的通知,根据所述匹配窗口中的待匹配内容的后特定数量个字节查找所述哈希表,根据所述哈希表中表项的情况进行相应处理;所述处理包括:若所述哈希表中表项为空,则将所述匹配窗口向右移动一个字符,并将所述匹配窗口的位置通知所述跳跃表检索子单元;若所述哈希表中表项有关键词子串,则将所述各关键词子串的前缀表中的前缀与待匹配内容中的相应字段的前缀表中的前缀进行比较,若不同则通知所述跳跃表检索子单元,否则发送触发通知;

精确匹配子单元,用于接收所述第一处理子单元发送的触发通知,将前缀与所述待匹配内容相同的关键词子串进行单模式精确匹配,匹配失败则移动所述匹配窗口一个字节并通知判断子单元,匹配成功则通知所述近似匹配单元将待匹配内容与所述关键词子串对应的关键词进行近似匹配验证;

判断子单元,用于当所述匹配窗口未到达所述待匹配内容的末端时,通知所述跳跃表检索子单元和第一处理子单元。

14.如权利要求11所述的装置,其特征在于,所述近似匹配单元包括:关键词提取子单元,用于取出所述精确匹配成功的关键词子串在拆分前所在的关键词;

对齐子单元,用于将所述关键词和待匹配内容的相应位置进行对齐;

近似匹配验证子单元,用于对所述关键词和待匹配内容进行近似匹配验证。

15.如权利要求14所述的装置,其特征在于,所述近似匹配单元还包括:判断子单元,用于当一关键词的第一关键词子串精确匹配成功,且所述关键词和所述待匹配内容近似匹配时,记录所述关键词在所述待匹配内容中出现的匹配位置;所述关键词的第二关键词子串精确匹配成功时,获取所述关键词子串要验证的位置;所述匹配的位置在所述验证位置之后或与所述验证位置重合时,停止对所述关键词与待匹配数据进行近似匹配验证。

说明书 :

一种近似匹配方法和装置

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种近似匹配方法和装置。

背景技术

[0002] 随着全球计算机网络的飞速发展,网络技术的应用日益普及,已经深入到社会的各个领域中,给整个社会的经济、科技和文化带来了巨大的推动和冲击。然而,人们在得益于网络技术所带来的新的巨大机遇的同时,也不得不面对信息安全问题的严峻考验。通常网上伴随着众多有用信息的同时,也存在大量的不良信息。因此迫切需要新的技术和手段能快速准确实时地获得网络内容的动态及敏感信息。
[0003] 传统的信息安全技术大多采用精确的特征串匹配方法来分析、收集及过滤敏感信息,采用这种技术仅能识别与特征集中规则一致的数据包。但是,随着使用者水平的提高,会有意对敏感信息进行变换,或者加一些通配符或无用字符等手段来规避检测,因此精确匹配方法对文本信息内容、黑客入侵等应用就无能为力。因此,开展近似模式匹配技术的研究和应用是信息安全的重要方向和迫切之需。
[0004] 近似模式匹配又称为关键词近似匹配,也可以被称为“允许误差的关键词匹配”,目的是找到文本或网络内容中与关键词的差异在一定范围内的所有关键词的出现位置。这个差异可以量化命名为“距离”,也就是使两个关键词变为相同的最少操作次数,这里的一次操作可以是在关键词中任意的位置插入、删除或替换掉一个字符,这样的关键词近似匹配可称为基于编辑距离的近似匹配。多模式近似匹配需要解决的问题就是在各关键词给定的编辑距离下,快速而准确地判断待测文本或者网络内容中所有出现任意关键词的位置。 [0005] 随着计算机应用和网络应用的普及,数据处理量日益增大。尤其是在网络应用环境中,存在大量的实时数据处理的需求。由于数据处理量和用户需求的不断增大,关键词数量也会不断的增大,规模常常达到上万级,甚至十万级。在这种情况下,已有的多模式近似匹配算法的匹配速度下降非常明显,影响了整个安全系统的性能,其极低的吞吐量已经很难满足文本或者网络内容处理的实用要求。
[0006] 解决多模式近似匹配的问题可以通过许多不同的方法,过滤筛选法是其中应用较多的一种方法。过滤筛选法首先快速地过滤掉文本中哪些不可能产生成功匹配的区域,然后再对可能匹配的区域进行匹配验证,确定是否真的有匹配。基于过滤筛选法的MultiPEX算法是现存经典多模式近似匹配算法中应用最广泛的算法之一。
[0007] MultiPEX算法是对单模式近似匹配算法PEX算法在多关键词情况下的扩展。PEX算法的核心思想是对于编辑距离为k的情况,将关键词划分为k+1片,如果文本对于关键词近似匹配成功,则其中必至少有一片在文本中是精确匹配的,因为,在编辑距离模型下,k个错误不可能被分到k+1片中。MultiPEX算法匹配过程分为两个阶段:过滤阶段和验证阶段。在过滤阶段可以采用不同的精确匹配算法,在验证阶段可以采用不同的单模式近似匹配算法进行验证匹配。
[0008] 在实现本发明的过程中,发明人发现现有技术中的实现方式存在以下问题:MultiPEX算法仅适用于模式数规模小的情况,当模式数达到1000条时,其匹配速度下降非常明显,因此MultiPEX在大规模特征数的情况下无法满足文本或网络内容处理的实用要求。
[0009] 发明内容
[0010] 本发明的实施例提供一种近似匹配方法和装置,能够适用于大规模关键词情况下的近似匹配处理。
[0011] 本发明的实施例提供一种近似匹配方法,包括:
[0012] 拆分关键词生成关键词子串集合,为所述关键词子串集合建立对应的表项,所述关键词子串集合中的关键词子串长度根据关键词的长度与最大允许的错误值获得; [0013] 根据所述表项将待匹配内容与所述关键词子串集合进行精确匹配;
[0014] 对精确匹配成功的关键词子串对应的关键词和所述待匹配内容进行近似匹配验证,获得近似匹配结果。
[0015] 本发明的实施例还提供一种匹配装置,包括:
[0016] 预处理单元,用于拆分关键词并生成关键词子串集合,为所述关键词子串集合建立对应的表项,所述关键词子串集合中的关键词子串长度根据关键词的长度与最大允许的错误值获得;
[0017] 精确匹配单元,用于根据所述预处理单元建立的表项将待匹配内容与所述关键词子串集合进行精确匹配;
[0018] 近似匹配单元,用于对所述精确匹配单元精确匹配成功的关键词子串对应的关键词和所述待匹配内容进行近似匹配验证,获得近似匹配结果。
[0019] 与现有技术相比,本发明的实施例具有以下优点:
[0020] 本发明的实施例中,拆分关键词以生成关键词子串集合并为关键词子串集合建立对应的表项,进而进行精确匹配和近似匹配验证以得到近似匹配结果,从而大幅提高了大规模关键词情况下近似匹配算法的性能,满足了文本或网络内容近似匹配处理的实用要求。
[0021] 附图说明
[0022] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0023] 图1是本发明实施例中近似匹配方法的流程图;
[0024] 图2是本发明实施例中预处理阶段的方法流程图;
[0025] 图3是本发明实施例中建立的跳跃表的示意图;
[0026] 图4是本发明实施例中建立的哈希表的示意图;
[0027] 图5是本发明实施例中精确匹配阶段的示意图;
[0028] 图6是本发明实施例中匹配装置的结构示意图;
[0029] 图7是本发明实施例中匹配装置的另一结构示意图。
[0030] 具体实施方式
[0031] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0032] 本发明实施例提供一种近似匹配方法,如图1所示,包括以下步骤:
[0033] 步骤s101,拆分关键词生成关键词子串集合,为所述关键词子串集合建立对应的表项,其中表项包括跳跃表、哈希表和前缀表。
[0034] 步骤s102,根据所述表项将待匹配内容与所述关键词子串集合进行精确匹配。 [0035] 步骤s103,对精确匹配成功的关键词子串对应的关键词和所述待匹配内容进行近似匹配验证,获得近似匹配结果。
[0036] 本发明的实施例中,拆分关键词以生成关键词子串集合并为关键词子串集合建立表项,进而进行精确匹配和近似匹配验证以得到近似匹配结果。从而大幅提高了大规模关键词情况下近似匹配算法的性能。具体的,通过建立跳跃表,使得搜索阶段精确匹配各关键词子串时能够快速的向前跳跃;通过建立哈希表,使得搜索阶段出现可能的精确匹配时,找到可能存在匹配的关键词片断;通过建立前缀表,使得搜索阶段精确匹配时过滤不可能匹配的关键词子串。通过上述跳跃表、哈希表和前缀表的结合使用,提高了大规模关键词情况下近似匹配的效率,满足了文本或网络内容近似匹配处理的实用要求。
[0037] 本发明实施例中提供的近似匹配方法,具体包括预处理阶段、精确匹配阶段以及近似匹配验证阶段。以下分别对不同阶段的处理流程进行详细介绍。
[0038] 如图2所示,预处理阶段的详细流程包括:
[0039] 步骤s201,拆分关键词生成每个关键词的关键词子串。
[0040] 该步骤中拆分关键词生成每个关键词的关键词子串的具体方法为:对于任一个近似特征pi,该关键词对应的长度是mi,最大允许的错误值是ki,将该关键词尽量平均分成(ki+1)个关键词子串,每个子串长度约为mi/(ki+1)。 如果原关键词可以被近似匹配,则生成的关键词子串中必然有一个可以被精确匹配。
[0041] 步骤s202,将拆分得到的关键词子串组成关键词子串集合。
[0042] 该步骤中,将拆分后的关键词子串组成关键词子串集合,并建立每个关键词子串与原关键词的映射。
[0043] 步骤s203,为关键词子串集合中的所有关键词子串建立跳跃表。
[0044] 跳跃表用于在精确匹配各关键词子串时,快速的向前跳跃。跳跃表由索引和跳跃值组成,表项的索引由第一哈希函数用长度为B1的数据块产生,其中B1为2~4。扫描文本或网络内容时,根据跳跃表中的跳跃值移动搜索窗口。
[0045] 跳跃表的具体产生办法包括:首先对每个可能的大小为B1字节的字符串,用第一哈希函数生成移动表的索引值,并将跳跃表中所有表项的跳跃值初始化为m-B1+1;考察第一个关键词的前m个字节(m的值根据经验进行设置),从m个字节的末尾开始依次向前,分别取B1长度的数据块,记它的起始位置为q,对该数据块用第一哈希函数产生的索引查找跳跃表,得到的跳跃值与m-q中较小的一个作为该项跳跃表值。然后逐一考察所有关键词,按照上述方法修改跳跃表各项的跳跃值。当关键词集合中的每个关键词都处理完成后,跳跃表的建立过程结束。
[0046] 以“barbarian”“bomb”为例,建立的跳跃表的表值如图3所示。
[0047] 步骤s204,建立关键词子串集合对应的哈希表。
[0048] 哈希表用于搜索可能出现的精确匹配时,找到可能存在匹配的关键词子串。哈希表表项的索引由第二哈希函数用长度为B2的数据块产生,其中B2为2~4。哈希表对待匹配的关键词片集合进行了划分,将所有末尾B2个字符的哈希值相等的关键词片集中在一起,存储在这个哈希值指定的哈希表的表项中。以关键词“bomb”、“barbarian”、“constant”和“musician”为例,建立的哈希表如图4所示。
[0049] 步骤s205,建立关键词子串集合对应的前缀表。
[0050] 前缀表用于在精确匹配时过滤不可能存在的关键词子串。前缀表的索引是第三哈希函数利用长度为B3的关键词子串前缀得到的。跳跃表值为0时,先通过查找哈希表得到与待分析文本或网络内容同一后缀的关键词子串链表,计算文本的前缀值,并利用它来过滤那些后缀相同但是前缀不同的关键词子串。
[0051] 在精确匹配阶段,即搜索阶段中,流程如下:
[0052] (1),确定关键词子串集合中最短关键词的长度m,将一个大小为m的窗口置于待分析的文本或网络内容的开始处。
[0053] (2),对窗口内的后B1个字节进行第一哈希运算,用得到的哈希值检索跳跃表,若对应表项的跳跃值不为零,则说明无匹配的关键词子串,按照跳跃值移动窗口,重复(2),否则执行步骤(3);例如,若对应表项的跳跃值为1,则窗口移动1。
[0054] (3),若(2)中检索得到的跳跃值为零,则窗口不发生移动,根据窗口中后B2个字节查找哈希表,根据哈希表表项的不同情况作不同的处理,处理包括:
[0055] (3.1)若哈希表的表项为空,表示没有与该段文本或网络内容相同的关键词子串,窗口向右移动一个字符,执行(2);
[0056] (3.2)、若哈希表表项中有关键词子串,将各关键词子串的前缀与待分析的文本或网络内容中的相应字段查前缀表进行比较,若前缀表不相同,窗口向右移动一个字符,重复(2),若相同则执行(4)。
[0057] (4),将前缀与待分析的文本或网络内容相同的关键词子串进行单模式精确匹配,匹配失败则窗口移动一个字节,如果存在匹配成功的情况,则进行近似匹配验证。 [0058] (5),重复(2)和(3),直到窗口到达待分析的文本或网络内容的最末端。 [0059] 如果在上述搜索阶段发现待分析文本或网络内容中存在与某一或多个关键词子串精确匹配的情况,例如图5中发现关键字barbarian匹配命中,则进行近似匹配验证过程,即近似匹配验证阶段。
[0060] 近似匹配验证阶段中,首先根据之前建立的关键词子串与原始关键词的映射关系,找到与匹配的关键词子串对应的原始关键词;
[0061] 如果在精确匹配过程中出现了某关键词子串与当前文本相匹配的情况,则根据关键词子串与原始关键词的映射关系取出该关键词子串对应的原始关键词,然后用优化的BPM算法进行验证,BPM算法中:
[0062] 对于长度不大于32位的原始关键词,采用32位并行BPM算法进行单模式近似匹配的验证;对于长度大于32位,不大于64位的原始关键词,采用64位并行BPM算法进行单模式近似匹配的验证;对于长度大于64位的原始关键词,采用任意位并行BPM算法进行单模式近似匹配的验证。
[0063] 如果出现近似匹配成功的情况就报告匹配位置,然后转到搜索阶段继续进行关键词子串的精确匹配过程;如果近似匹配失败,直接转到搜索阶段继续进行精确匹配过程。 [0064] 由于同一个近似特征串被拆分成ki+1个子串之后很有可能出现ki+1个子串中的多个子串都在输入数据中被搜索到,这样就会出现在重复验证同一个近似特征串,同一匹配位置多次报告的情况。所以如果在上一轮扫描中发现关键词被拆分后ki+1个子串中的一个子串在待分析数据中出现,并且经过验证后确认该原始关键词和文本在某处近似匹配成功。如果在本轮扫描中发现该原始关键词的另一个子串也在待分析数据中出现,那么应当判断原始关键词在待分析数据中出现的位置是否已经被报告过,如果已经被报告,即上次匹配的位置在本次要验证的位置之后或与所述验证位置重合时,并且上次报告匹配的原始关键词编号和本次待验证的原始关键词编号相同,则不需要再次使用该原始关键词与待分析数据做近似匹配验证。如果不符合此条件则需要将本次映射到的原始关键词和待分析数据做验证,并报告本次验证的结果。
[0065] 本发明实施例提供的上述方法中,在预处理阶段拆分关键词以生成关键词子串集合并为关键词子串集合建立对应的表项,进而进行精确匹配和近似匹配验证以得到近似匹配结果。从而大幅提高了大规模关键词情况下近似匹配算法的性能,满足了文本或网络内容近似匹配处理的实用要求。
[0066] 本发明的实施例还提供一种匹配装置,用于面向大规模关键词下情况的近似匹配,如图6所示,包括:
[0067] 预处理单元10,用于拆分关键词并生成关键词子串集合,为所述关键词子串集合建立对应的表项,其中表项包括跳跃表、哈希表和前缀表;
[0068] 精确匹配单元20,用于根据预处理单元10建立的表项将待匹配内容与所述关键词子串集合进行精确匹配;
[0069] 近似匹配单元30,用于对精确匹配单元20精确匹配成功的关键词子串对应的关键词和所述待匹配内容进行近似匹配验证,获得近似匹配结果。
[0070] 本发明的另一实施例中,匹配装置的结构还可以如图7所示,
[0071] 预处理单元具体10可以进一步包括:
[0072] 拆分子单元11,用于提取关键词集合,拆分每个关键词并生成每个关键词的关键词子串;将所述关键词子串组成关键词子串集合,建立每个所述关键词子串与原关键词的映射;
[0073] 跳跃表建立子单元12,用于对所述关键词子串集合中的所有关键词子串产生跳跃表,所述跳跃表用于在精确匹配各关键词子串时,快速的向前跳跃;
[0074] 哈希表建立子单元13,用于对所述关键词子串集合产生哈希表,所述哈希表用于搜索可能出现的精确匹配时,找到可能存在匹配的关键词子串;
[0075] 前缀表建立子单元14,用于对所述关键词子串集合产生前缀表,所述前缀表用于在精确匹配时过滤不可能存在的关键词子串。
[0076] 精确匹配单元20可以进一步包括:
[0077] 匹配窗口设置子单元21、用于确定关键词子串集合中最短关键词的长度,根据最短关键词的长度在所述待匹配内容开始处设置匹配窗口并发送通知;
[0078] 跳跃表检索子单元22,用于接收匹配窗口设置子单元21的通知,对匹配窗口中的待匹配内容的后特定数量个字节进行哈希运算,利用得到的哈希值检索所述跳跃表;当所述跳跃表中对应表项跳跃值不为零时则重复本子单元中所述哈希运算和跳跃表检索的步骤,否则发送通知;
[0079] 第一处理子单元23,用于接收跳跃表检索子单元22发送的通知,根据匹配窗口中的待匹配内容的后特定数量个字节查找所述哈希表,根据所述哈希表中表项的情况进行相应处理;所述处理包括:若哈希表中表项为空,则将匹配窗口向右移动一个字符,并将匹配窗口的位置通知跳跃表检索子单元22;若哈希表中表项有关键词子串,则将各关键词子串的前缀表中的前缀与待匹配内容中的相应字段的前缀表中的前缀进行比较,若不同则通知跳跃表检索子单元22,否则发送触发通知;
[0080] 精确匹配子单元24,用于接收第一处理子单元23发送的触发通知,将前缀与所述待匹配内容相同的关键词子串进行单模式精确匹配,匹配失败则移动匹配窗口一个字节并通知判断子单元25,匹配成功则通知近似匹配单元30将待匹配内容与所述关键词子串对应的关键词进行近似匹配验证;
[0081] 判断子单元25,用于当匹配窗口未到达待匹配内容的末端时,通知跳跃表检索子单元22和第一处理子单元23。
[0082] 近似匹配单元30可以进一步包括:
[0083] 关键词提取子单元31,用于取出所述精确匹配成功的关键词子串在拆分前所在的关键词;
[0084] 对齐子单元32,用于将所述关键词和待匹配内容的相应位置进行对齐; [0085] 近似匹配验证子单元33,用于使用BPM算法对所述关键词和待匹配内容进行近似匹配验证;
[0086] 判断子单元34,用于当一关键词的第一关键词子串精确匹配成功,且所述关键词和所述待匹配内容近似匹配时,记录所述关键词在所述待匹配内容中出现的匹配位置;所述关键词的第二关键词子串精确匹配成功时,获取所述关键词子串要验证的位置;所述匹配的位置在所述验证位置之后或与所述验证位置重合时,停止对所述关键词与待匹配数据进行近似匹配验证。
[0087] 上述近似匹配验证子单元33可以具体用于:对于长度不大于32位的关键词,采用32位并行BPM算法进行单模式近似匹配的验证;对于长度大于32位,不大于64位的关键词,采用64位并行BPM算法进行单模式近似匹配的验证;对于长度大于64位的关键词,采用任意位并行BPM算法进行单模式近似匹配的验证。
[0088] 本发明实施例提供的方法和装置中,在预处理阶段拆分关键词以生成关键词子串集合并为关键词子串集合建立对应的表项,进而进行精确匹配和近似匹配验证以得到近似匹配结果。因此大幅提高了大规模关键词情况下近似匹配算法的性能。具体的,通过建立跳跃表,使得搜索阶段精确匹配各关键词子串时能够快速的向前跳跃;通过建立哈希表,使得搜索阶段出现可能的精确匹配时,找到可能存在匹配的关键词片断;通过建立前缀表,使得搜索阶段精确匹配时过滤不可能匹配的关键词子串。通过上述跳跃表、哈希表和前缀表的结合使用,提高了大规模关键词情况下近似匹配的效率,满足了超大规模关键词情况下文本或网络内容近似匹配处理的实用要求。和现有技术相比,性能较传统算法有十倍以上的提升。确保了算法在平均情况下的匹配性能保持在一个很高的水平。在验证阶段,对经典近似匹配算法BPM算法进行了优化,分别针对32位、64位及64位以上的关键词作了优化,提高了验证阶段单模式近似匹配算法的匹配速度。
[0089] 通过以上优化,本发明实施例提供的方法性能达到在实际应用中有较好的表现,相比现有算法100Mbps以下的处理能力,本发明实施例的方法在模式数为1000时,匹配性能达到3300Mbps,在模式数为10000时,匹配性能仍超过1500Mbps(上述性能数据为双核双CPU Xeon2GHz处理器,前端总线频率1333MHz,L2CACHE4MB,Unix操作系统下的实测数据),达到了实用化要求。
[0090] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。 [0091] 以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。