CN101154228A - 一种分段模式匹配方法及其装置 - Google Patents
一种分段模式匹配方法及其装置 Download PDFInfo
- Publication number
- CN101154228A CN101154228A CNA2006101593103A CN200610159310A CN101154228A CN 101154228 A CN101154228 A CN 101154228A CN A2006101593103 A CNA2006101593103 A CN A2006101593103A CN 200610159310 A CN200610159310 A CN 200610159310A CN 101154228 A CN101154228 A CN 101154228A
- Authority
- CN
- China
- Prior art keywords
- character string
- fragment
- pending character
- node
- state machine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及字符串模式匹配,具体的讲是一种分段模式匹配方法及其装置。为了解决现有模式匹配的资源消耗大,硬件要求高的缺点,本发明方法为,根据预定规则将关键字字符串分割成至少一个关键字字符串片段,将所述关键字字符串片段生成关键字树;根据所述预定规则将用户输入的待处理字符串分割成至少一个待处理字符串片段,作为状态机的输入;由所述状态机根据AC匹配算法将所述待处理字符串片段在所述关键字树节点中进行匹配操作,每个节点分支的判断条件都是所述关键字字符串片段;如果所述待处理字符串片段匹配成功,则返回该匹配的模式ID。本发明的有益效果在于,能够提高字符串模式匹配的效率,并且降低了对硬件资源的要求。
Description
技术领域
本发明涉及计算机领域,特别涉及字符串模式匹配领域,具体来讲是一种分段模式匹配方法及其装置。
背景技术
现在,通过互联网,每一个人都能非常容易地发布自己的信息,这同时也意味着在互联网上充斥着海量的信息,而且这些信息是各种各样的。在这些信息当中,有许多有价值的信息,但是同时,更多的是一些垃圾信息,比如垃圾邮件等等。
在实际生活中,人们通常只是想阅读自己感兴趣的东西,而不想去阅读自己不感兴趣的东西。不幸的是,互联网本身并没有提供这种机制,所以,互联网的用户直接面临着在网上无限制传播的大量信息,会很容易地被信息流所淹没。面对这海量的信息,过滤是帮助人们获得有价值信息的有用工具,通过过滤,互联网的用户只需要花很少的时间就能获得自己感兴趣的信息;网络设备可以过滤掉有害信息,或者识别出特别的重要信息。模式匹配的算法解决了这个问题,在模式匹配中找到匹配集中最合适的关键字是十分重要的。多模式的匹配即是有K个模式P[1]...P[K]和一个文本T,寻找K个模式中的任何一个模式在T中是否出现以及出现的位置,1975年由A.V.Aho和M.J.Corasick公开了一种有限子动机的多模式匹配算法(AC算法),能够有效的对文本进行匹配和过滤,以使文献检索变得更加迅速。
图1为现有AC算法的模式匹配集和示意图。图中虚线方框内的就是匹配的模式。规定模式的集合为:
P1:*/movie/*
P2:*/music/*
P3:*/root/public/*
P4:*/movie/comedy/*
其中通配符“*”在两端的意思为,以这些模式为关键字,可能出现在一个字符串或者文本的任意部分。对于AC算法来说,它的处理方法是基于一个关键字树,这个关键字树由匹配集合中的所有关键字构成,每个节点分支的判断条件都是一个字符。当对一字符串进行分析时,该字符串逐字符穿过关键字树直到整个字符串都被分析完成为止。由一个状态机对关键字树进行匹配操作,关键字树的每一个节点都为有限状态机的一个可能状态。其中,节点为静态的,是可能的状态的描述,而状态是状态机在某一特定时刻的描述。
中国专利200410023142,一种基于特征值的多模式匹配算法及硬件实现专利,公开了一种对信息进行两次匹配的方法,先滤除一些不重要的信息,对感兴趣的信息进行第二次滤除,但是该方法需的存储器容量也很大,并且该方法的匹配速度不够理想。
发明内容
为了解决以上问题,本发明提供一种分段模式匹配方法,将格式化的字符串进行分段并进行模式匹配,以达到更快速的效果。
为了解决以上问题,本发明提供一种分段模式匹配装置,将字符串分段,并进行模式匹配以达到对硬件要求低的效果。
一种分段模式匹配方法,包括,
步骤1,根据模式字符串中的特殊符号或者根据语言结构将模式字符串划分成至少一个关键字字符串片段,由编译器利用现有匹配算法规则将所述关键字字符串片段生成关键字树,所述关键字树的每个节点都包含至少一个关键字字符串片段,该节点的分支条件是另一个关键字字符串片段;
步骤2,根据模式字符串中的特殊符号或者根据语言结构将用户输入的待处理字符串划分成至少一个待处理字符串片段,作为状态机的输入;
步骤3,由所述状态机根据所述现有匹配算法将所述待处理字符串片段在所述关键字树节点中进行匹配操作;
步骤4,如果在匹配的所述关键字树节点的数据结构中具有模式匹配成功的标志,则记录或者输出该匹配的模式ID;
步骤5,如果所有所述待处理的字符串片段处理完毕,则结束,否则在所述状态机中处理下一个所述待处理字符串片段,重复步骤3-5。
所述步骤3中,使用哈希算法或者二分法将待处理字符串片段与节点分支条件进行字符串之间的匹配。
还包括一排序步骤,
在步骤1中,将待处理字符串分段后,由一排序单元将所述关键字字符串片段按照预定的顺序排序,并输入所述编译器,由所述编译器生成关键字树;
在步骤2中,将待处理字符串分割成至少一个待处理字符串片段后,由所述排序单元将所述待处理字符串片段按照所述预定顺序输入所述状态机,以进行步骤3至步骤5。
还包括一合并步骤:
在步骤1中,将模式字符串分段后,按照下述合并规则由一合并单元将所述关键字字符串片段合并成新的关键字字符串片段:将所述关键字树同一支路中相邻的只具有一个分支的节点合并;或者将上述合并的节点与其最后一个节点相邻的,并且具有至少两个分支的节点合并;合并后输入所述编译器,由编译器重新生成关键字树;
在步骤2中,将待处理字符串分段后,按照上述合并规则,由所述合并单元将所述待处理字符串片段合并成由至少一个待处理字符串片段组成的新的待处理字符串片段,作为所述状态机的输入。
还包括一合并步骤:
在步骤1中,将所述关键字字符串片段排序后,按照下述合并规则由一合并单元将所述关键字字符串片段合并成新的关键字字符串片段:将所述关键字树同一支路中相邻的只具有一个分支的节点合并;或者将上述合并的节点与其最后一个节点相邻的,并且具有至少两个分支的节点合并;合并后输入所述编译器,由编译器重新生成关键字树;
在步骤2中,将所述待处理字符串片段排序后,按照上述合并规则由所述合并单元将所述待处理字符串片段合并成由至少一个待处理字符串片段组成的新的待处理字符串片段,作为所述状态机的输入。
所述预定顺序包括,按照所述关键字字符串片段和所述待处理字符串片段读入的先后顺序,或者片段的语法结构进行排序,排序后所述键字字符串片段和所述待处理字符串片段的顺序相同。
一种分段模式匹配装置,包括,
分段器,用于根据根据模式字符串中的特殊符号或者根据语言结构将模式字字符串和待处理字符串分段;
编译器,与状态机相连接,用于将所述关键字字符串片段生成关键字树;
所述状态机,接收所述分段器传送的待处理字符串片段,利用现有匹配算法将所述待处理字符串片段在所述关键字树节点中进行匹配操作;
输出单元与所述状态机相连接,用于输出与所述待处理字符串的匹配模式编号。
还包括一排序单元,用于将由所述分段器输出的至少2个待处理字符串片段和所述关键字字符串片段按照预定顺序分别进行排序,将排序后的所述待处理字符串片段输入所述状态机,将排序后的所述关键字字符串片段输入所述编译器。
还包括一合并单元,用于合并所述待处理字符串片段并传送给所述状态机,合并所述关键字字符串片段并传送给所述编译器。
还包括一合并单元,用于合并所述经过排序单元的待处理字符串片段,并传送给所述状态机,合并所述经过排序单元的关键字字符串片段,并传送给所述编译器。
本发明的有益效果在于,能够更快速的模式匹配,并且节省存储器,更快速的模式匹配收敛速度。
附图说明
图1为现有AC算法的模式匹配集合示意图;
图2为本发明模式匹配第一实施例示意图;
图3为本发明分段模式匹配装置示意图;
图4为本发明模式匹配第二实施例示意图;
图5为本发明模式匹配第三实施例示意图;
图6为本发明加入排序单元和合并单元的装置示意图。
具体实施方式
下面,结合附图对于本发明进行如下详细说明。
在通常的模式匹配问题中,通配符可以代表许多任意的字符。根据请求注解文档RFC2396(Request for Comments Document 2396)中说明的URL,我们能够基于片段的形式看到URL字符串,该字符串可以看作是以“.”和“/”区分的,由分隔符“.”或者“/”分开的子字符串成为一个片段。对于HTTP的URL(或其他一些类似的协议)过滤应用中,模式可能只是定义在基本片段中的过滤条件。还例如IP地址,或者介质访问控制MAC地址之类的数据,同样也可以认为是格式化的字符串,IP地址101.102.103.104,根据“.”将它们的模式分段。换句话说,通配符在模式中可以代表许多任意的片段,而不仅仅是字符。
本发明所利用的现有匹配算法不限制于现有的AC匹配算法,也可以使用其他的匹配方法,例如确定性有限状态机DFA(deterministic FiniteAutomaton)匹配算法。
如图2所示为本发明模式匹配第一实施例示意图。虚线方框内的是匹配的模式。规定一组模式:
P1:*/movie/*
P2:*/music/*
P3:*/root/public/*
P4:*/movie/comedy/*
叶节点上为关键字片段或关键字片段的组合,例如/root/和/public/都为关键字片段,节点/root/的分支条件为关键字片段/public/,而在/root/下一级的子节点为关键字片段的组合/root/public/,该节点代表一个路径。例如,一个待处理URL字符串为“/root/movie/comedy/laura.mpeg”,图2所示的关键字集合为{/movie/,/music/,/movie/comedy/,/root/public/},其中各个节点都代表一个或者数个模式的前缀。通过将输入字符串片段与当前节点状态的分支进行比较而得到下一个节点,并修改着状态机的状态。首先,由编译器根据关键字集合生成关键字树。状态机处于“idle”空闲状态,当输入URL字符串,第一个待处理字符串片段为“/root/”,这个片段将会被提取出来,与“/music/”,“/movie/”和“/root/”三个分支相比较,状态机比较的结果将状态机的状态修改为“/root/”。第二个待处理字符串片段为“/movie/”,从“/root/”状态所对应节点的分支条件中并不包括“/movie/”片段,一个失败函数在这里被用来将当前状态位改变为“idle”状态,而这种回滚的操作是现有匹配算法中就已经存在,例如AC匹配算法,根据整个关键字树的特征计算出来。在本例中回滚到关键字树根节点重新开始比较,结果将状态机的状态改为匹配关键字“/movie/”,生成关键字树时在/movie/节点中的数据结构中定义一标志位,代表该节点为一模式P1,当匹配到“/movie/”时输出这个模式P1。再处理第三个待处理字符串片段“/comedy/”,由于在“/movie/”状态对应节点的分支中存在这样的匹配片段/comedy/,对应的节点关键字片段为“/movie/comedy/”,所以将状态机的状态修改为匹配关键字片段“/movie/comedy/”,即路径为“/movie/comedy/”,生成关键字树时在/movie/comedy/关键字片段节点中定义一标志位,代表该节点为模式P4,并输出该模式P4。第四个待处理字符串片段为“/laura”,由于没有相应的分支对应该片段,则由失败函数将状态机的状态修改为“idle”。对第五个待处理字符串片段“.mpeg”的处理结果状态机的状态依然是“idle”。最后,输入的整个URL字符串只有两个匹配关键字,“/movie/”和“/movie/comedy/”。输出的模式ID为P1和P4。其中,待处理字符串片段与关键字字符串片段进行比较时,先将字符串片段利用某一种哈希算法计算成数值,再将待处理字符串片段的数值与关键字字符串片段数值进行比较,这样避免了片段之间逐字符的比较,加快了匹配速度。同样也可以使用现有技术中其他的字符串比较方法,例如二分法等。
本发明方法不仅可以适用于拼音类文字分段模式匹配,还可以适用于双字节字符,例如中文编码,由于发明并不是基于字节,无论是单字节的英文单词,还是双字节的中文字,所有的分段都可以被识别为串行位。用例如“/”、“.”或者空格等作为分隔符,将字符串分段。
如图3所示为本发明第一实施例信号流图。在处理过程中,将要被处理的字符串,例如URL等字符串,处理结束后输出的是输入字符串的最佳匹配模式ID。首先将模式集合{P1,P2,P3...}传送至分段器,根据分隔符对模式集中的每一个模式分段,将上述关键字片段传送给编译器,由该编译器根据现有的匹配算法(例如标准AC匹配算法)生成关键字树,其中关键字树的每一个节点的分支条件为所述分段后的字符串片段,该节点的数据结构中包含表示跳转、分支信息、模式匹配命中标识符等信息的数据结构。然后将待处理的字符串输入分段器,根据字符串中的特殊字符将待处理字符串分割成几段输入状态机,在状态机的操作下将分段后的字符串与关键字树节点的分支条件进行匹配,与哪个关键字树节点分支条件相匹配则跳转到相应的下一个节点,如果没有匹配的分支条件则根据现有匹配算法的失败函数跳转到其他节点,直到待处理字符串匹配处理完毕,得到最合适的匹配模式,并且将该模式的ID输出,外界的功能实体以进行进一步对用户输入的字符串进行处理,例如,将该模式与预定的规则比较,如果相同则禁止执行该该字符串所代表的任务。
作为进一步的实施例,本发明将至少两个待处理字符串片段和关键字片段进行顺序排列以加速匹配。通常分段后的待处理字符串的各段有一定的特定意义,根据实际处理目的,可以对各段进行优先顺序排序。比如:一个提问“你叫什么名字?”,回答一般都是“我叫XX”,这个回答的模式匹配可以利用语言的结构特点(例如通过区分谓语“叫”的前后),分为:“我”,“叫”和“XX”;通常我们可以认为在这几个片段中,其优先顺序是“XX”、“我”、“叫”。对于“What is your name?”,回答一般为”/My name/is/XX/”,这个回答可以使用“/”作为通配符进行分段,同样也可以利用结构特点(is)区分,分解出:“My name”,“is”,“XX”,同样我们可以设定其优先顺序为:“XX”、“My name”、和“is”。下面的例子详细描述了本发明按照优先顺序将待处理字符串进行匹配的处理过程。
如图4为本发明第二实施例根据关键字片段重要性排序后的关键字树示意图。针对于“What is your name?”对话答复有四个可能模式匹配:
P1:/My name/is/Jack/;
P2:/My name/is/Mary/;
P3:/My name/was/Martin/;
P4:/My name/is/Martin/;
在关键字树生成阶段,首先通过分段器对以上可能模式根据实际结构进行分段(例如:主/谓/宾),然后通过排序单元根据实际各段意义的重要性进行排序,可以通过在每个关键字片段读入的先后顺序,或者各片段的语法结构进行排序,语法结构可以是自然语言的,也可以是针对于某种标准的(例如,URL语法标准),判断每个片段的语法位置,在本例中可以认为各段的重要性顺序为:宾/主/谓,生成新的等效的模式匹配为:
P1:/Jack/My name/is/;
P2:/Mary/My name/is/;
P3:/Martin/My name/was/;
P4:/Martin/My name/is/;
根据以上模式匹配中关键字的顺序,由编译器以段为单位,按现有模式匹配算法(例如标准AC匹配算法)将关键字片段生成关键字树,结果如图4所示。
假设待处理字符串为:“/My name/is/Martin/”。首先根据生成模式P1-P4时的约定进行分段,在本例中根据“/”分段,分成:/My name/、/is/和/Martin/三段。然后根据各片段的语法结构进行排序,或者根据输入的顺序进行排序,排序的结果与关键字字符串片段的顺序一致,得到新的待处理字符串:/Martin/、/is/和/my name/。然后以段为单位,从idle状态开始利用现有匹配算法(例如标准AC匹配算法)搜索关键字树。在本例中,将会在节点的分支条件中先后找到:/Martin/、/My name/和/is/三个字符串片段,预先在最后一个节点数据结构中的标志位标明相应的模式ID,输出其标号:P4。
作为可选的,如图5所示为本发明第三实施例合并关键字片段后的关键字树示意图。在合并单元进行判断关键字树的“/Jack/”节点后到树叶节点的分支,如果只有一个分支,则将后续分段合并,并在该节点的数据结构中提供额外的描述,表明该后续节点是由后面2个或者多个节点合并而成。本例中“/Jack/”节点后的“/My name/”和“/is/”合并,形成“/Jack/”节点新的分支条件“/My name/is/”;“/Mary/”节点后的“/My name/”和“/is/”合并,形成“/Mary/”节点新的分支条件“/My name/is/”,同时在/Jack/和/Mary/节点标明该后续节点由2个分段组成;其他节点不变,由编译器接收上述合并单元的处理结果生成新的关键字树如图5所示。
假设实际待处理字符串为“/My name/is/Mary/”,根据前面的分段、排序规则,待处理字符串片段为:/Mary/、/My name/、/is/。
在状态机查关键字树时,在每一个节点,首先需要判断该后续节点是由几个段构成,然后从待处理字符串片段中取出相应个数的片段,传送给合并单元进行合并处理,重新组成状态机的输入,进行精确匹配。在本例中,idle状态后续输入只有1个关键字片段组成的分支条件,因此取“/Mary/”作为输入,然后比较,得到一个节点“/Mary/”,转移状态机的状态为“/Mary/”,并且下一个匹配操作是将输入字符串片段与“/Mary/”节点后面的分支条件进行比较,在“/Mary/”节点的数据结构中发现该后续节点由2个片段组成,因此再读入后续的两个待处理字符串片段组成新的片段“/My name/is/”,进行比较,发现匹配,而且命中匹配模式P2.返回匹配的结果P2。
作为另一种实施例,在关键字树中合并的关键字片段不限于以上描述,可以是在整个关键字树的同一支路中任意几个连续的只具有一个分支的节点相合并,该合并还可以包括紧接着合并末尾节点的具有多个分支的节点。根据合并的规则重新由编译器生成关键字树。
如图6所示为本发明加入重新排序单元和合并单元的装置示意图。与图3相比,增加一个排序单元,连接于状态机与分段器之间,不仅将待处理字符串分段后的片段进行排序,而且将关键字片段进行相应排序,将某些重要的字符串片段在待处理字符串片段中优先处理,以便进行模式匹配时加快处理速度。本图中,还包括一合并单元,连接于排序单元与状态机之间,用于将关键字树中的某些节点合并,其处理结果输入编译器以生成新的关键字树,并且根据关键字树节点数据结构中关于后继节点合并的信息,将待处理字符串片段中后继的几个片段合并作为状态机的输入。所述排序单元和合并单元并不是必须同时存在的,可以单独使用其中一个或者一起使用,用于加快模式匹配的速度和优化系统性能。
通过本发明的方法能够缩短搜索速度,并且不需要大量的存储空间。
对于AC算法的关键字树来说,如果要避免回滚函数的操作,则需要针对每一个可能分支都存储下一节点的信息,就形成了DFA算法。于是对于整个状态机的转换表要求的存储空间为:
以上公式在M.Aldwairi,T.conte和P.Franzon在“用于加速侵入窃密检测的可配置字符串匹配硬件”中描述。
其中 li为模式i的长度。
假设有1000个模式,每个模式有128byte长,因此,s=128K。每个状态都将有一个哈希表,用于查询过渡状态,该表中包括其子节点信息。在每个合法的URL地址中,有将近c=80个字符,那么每个状态的表都将会有80个字符,最后AC算法所需要的存储空间为M≤61MB。
对于本发明方法来说,假设模式的长度有10个片段。因此,s=10K,每一个片段的长度为12.8byte,每个状态的哈希表或者内容寻址存储器(CAM)被用于查询转变条件。每一种转变条件,需要的存储单元包括6byte的下个状态信息,和用于比较的整个片段的12.8byte。所以,如果应用了CAM整个需要的存储空间为M≤18.8×10K=188K。使用哈希表必须事先制定表的大小,如果需要比较小的冲突概率的话,表格的大小要大于所含有的元素的个数,为了便于估计所需要的整个内存空间的大小,假设哈希表的大小是所含有的表项数目的两倍,那么存储空间为M≤18.8×10K×2=376KB。这两个数据与现有的DFA算法相比较都是非常小的,所以本发明方法在存储空间上来说是很有优势的。
本发明方法大大提高了搜索速度,搜索速度的提高在于在每一步时都需要很短的时间里得到下一状态,和需要几步才能完成。一般的方式,是通过为状态机提供哈希表,每一步的时间就是存储单元的访问时间,对于DFA算法来说,由于需要使用很大的存储器,所以目前只有类似DDRRAM的存储器才能满足速度和容量上的要求,如果访问速度在40纳秒左右,搜索URL字符串的速度可以达到200Mbps。当应用本发明方法,只需要很少的存储空间,可以使用内容寻址存储器(CAM),如果访问速度在10纳秒左右,那么搜索速度可以达到8Gbps。如果在SRAM中应用哈希表进行转变计算,10个访问都查询哈希表,每一个访问时间为5纳秒左右,那么搜索速度可以达到4Gbps。由此可见,采用本发明方法的搜索速度比传统的DFA算法快很多。
本发明的有益效果在于,能够更快速的模式匹配,并且节省存储器,更快速的滤除收敛速度,应用于防火墙等应用中能够大幅度的提高其性能。
以上具体实施方式仅用于说明本发明,而非用于限定本发明。
Claims (10)
1.一种分段模式匹配方法,其特征在于,
步骤1,根据模式字符串中的特殊符号或者根据语言结构将模式字符串划分成至少一个关键字字符串片段,由编译器利用现有匹配算法规则将所述关键字字符串片段生成关键字树,所述关键字树的每个节点都包含至少一个关键字字符串片段,该节点的分支条件是另一个关键字字符串片段;
步骤2,根据模式字符串中的特殊符号或者根据语言结构将用户输入的待处理字符串划分成至少一个待处理字符串片段,作为状态机的输入;
步骤3,由所述状态机根据所述现有匹配算法将所述待处理字符串片段在所述关键字树节点中进行匹配操作;
步骤4,如果在匹配的所述关键字树节点的数据结构中具有模式匹配成功的标志,则记录或者输出该匹配的模式ID;
步骤5,如果所有所述待处理的字符串片段处理完毕,则结束,否则在所述状态机中处理下一个所述待处理字符串片段,重复步骤3-5。
2.根据权利要求1所述的一种分段模式匹配方法,其特征在于所述步骤3中,使用哈希算法或者二分法将待处理字符串片段与节点分支条件进行字符串之间的匹配。
3.根据权利要求1所述的一种分段模式匹配方法,其特征在于还包括一排序步骤,
在步骤1中,将待处理字符串分段后,由一排序单元将所述关键字字符串片段按照预定的顺序排序,并输入所述编译器,由所述编译器生成关键字树;
在步骤2中,将待处理字符串分割成至少一个待处理字符串片段后,由所述排序单元将所述待处理字符串片段按照所述预定顺序输入所述状态机,以进行步骤3至步骤5。
4.根据权利要求1所述的一种分段模式匹配方法,其特征在于还包括一合并步骤:
在步骤1中,将模式字符串分段后,按照下述合并规则由一合并单元将所述关键字字符串片段合并成新的关键字字符串片段:将所述关键字树同一支路中相邻的只具有一个分支的节点合并;或者将上述合并的节点与其最后一个节点相邻的,并且具有至少两个分支的节点合并;合并后输入所述编译器,由编译器重新生成关键字树;
在步骤2中,将待处理字符串分段后,按照上述合并规则,由所述合并单元将所述待处理字符串片段合并成由至少一个待处理字符串片段组成的新的待处理字符串片段,作为所述状态机的输入。
5.根据权利要求3所述的一种分段模式匹配方法,其特征在于还包括一合并步骤:
在步骤1中,将所述关键字字符串片段排序后,按照下述合并规则由一合并单元将所述关键字字符串片段合并成新的关键字字符串片段:将所述关键字树同一支路中相邻的只具有一个分支的节点合并;或者将上述合并的节点与其最后一个节点相邻的,并且具有至少两个分支的节点合并;合并后输入所述编译器,由编译器重新生成关键字树;
在步骤2中,将所述待处理字符串片段排序后,按照上述合并规则由所述合并单元将所述待处理字符串片段合并成由至少一个待处理字符串片段组成的新的待处理字符串片段,作为所述状态机的输入。
6.根据权利要求3所述的一种分段模式匹配方法,其特征在于所述预定顺序包括,按照所述关键字字符串片段和所述待处理字符串片段读入的先后顺序,或者片段的语法结构进行排序,排序后所述键字字符串片段和所述待处理字符串片段的顺序相同。
7.一种分段模式匹配装置,其特征在于包括,
分段器,用于根据模式字符串中的特殊符号或者根据语言结构将模式字字符串和待处理字符串分段;
编译器,与状态机相连接,用于将所述关键字字符串片段生成关键字树;
所述状态机,接收所述分段器传送的待处理字符串片段,利用现有匹配算法将所述待处理字符串片段在所述关键字树节点中进行匹配操作;
输出单元与所述状态机相连接,用于输出与所述待处理字符串的匹配模式编号。
8.根据权利要求7所述的一种分段模式匹配装置,其特征在于还包括一排序单元,用于将由所述分段器输出的至少2个待处理字符串片段和所述关键字字符串片段按照预定顺序分别进行排序,将排序后的所述待处理字符串片段输入所述状态机,将排序后的所述关键字字符串片段输入所述编译器。
9.根据权利要求7所述的一种分段模式匹配装置,其特征在于还包括一合并单元,用于合并所述待处理字符串片段并传送给所述状态机,合并所述关键字字符串片段并传送给所述编译器。
10.根据权利要求7所述的一种分段模式匹配装置,其特征在于还包括一合并单元,用于合并所述经过排序单元的待处理字符串片段,并传送给所述状态机,合并所述经过排序单元的关键字字符串片段,并传送给所述编译器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006101593103A CN101154228A (zh) | 2006-09-27 | 2006-09-27 | 一种分段模式匹配方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006101593103A CN101154228A (zh) | 2006-09-27 | 2006-09-27 | 一种分段模式匹配方法及其装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101154228A true CN101154228A (zh) | 2008-04-02 |
Family
ID=39255889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006101593103A Pending CN101154228A (zh) | 2006-09-27 | 2006-09-27 | 一种分段模式匹配方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101154228A (zh) |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009660B (zh) * | 2007-01-19 | 2010-06-30 | 杭州华三通信技术有限公司 | 处理分段报文模式匹配的通用方法及装置 |
CN102004789A (zh) * | 2010-12-07 | 2011-04-06 | 苏州迈科网络安全技术股份有限公司 | Url过滤系统的应用方法 |
CN101286988B (zh) * | 2008-04-18 | 2011-05-04 | 北京启明星辰信息技术股份有限公司 | 一种并行多模式匹配的方法及系统 |
CN101677318B (zh) * | 2008-09-18 | 2012-05-23 | 北京启明星辰信息技术股份有限公司 | 匹配规则包含次数指示符的并行多模式匹配的方法及系统 |
CN102609459A (zh) * | 2012-01-12 | 2012-07-25 | 神州数码网络(北京)有限公司 | 基于正则表达式的字符串匹配方法和装置 |
US8239341B2 (en) | 2006-12-08 | 2012-08-07 | Hangzhou H3C Technologies Co., Ltd. | Method and apparatus for pattern matching |
CN101442540B (zh) * | 2008-12-30 | 2012-09-05 | 合肥昊特信息科技有限公司 | 基于现场可编程门阵列的高速模式匹配算法 |
CN102682017A (zh) * | 2011-03-15 | 2012-09-19 | 阿里巴巴集团控股有限公司 | 一种信息检索方法和系统 |
CN102693272A (zh) * | 2011-03-15 | 2012-09-26 | 微软公司 | 从统一资源定位符(url)的关键字提取 |
CN102789481A (zh) * | 2012-06-27 | 2012-11-21 | 北京神州泰岳软件股份有限公司 | 一种手机im客户端的特定类型内容解析方法 |
CN101609466B (zh) * | 2009-07-01 | 2012-11-28 | 中兴通讯股份有限公司 | 海量数据查重的方法和系统 |
CN102929900A (zh) * | 2012-01-16 | 2013-02-13 | 中国科学院北京基因组研究所 | 一种字符串匹配的方法及装置 |
CN103309893A (zh) * | 2012-03-15 | 2013-09-18 | 阿里巴巴集团控股有限公司 | 一种字符串的比较方法及装置 |
CN103412858A (zh) * | 2012-07-02 | 2013-11-27 | 清华大学 | 用于文本或网络内容分析的大规模特征匹配的方法 |
CN103595637A (zh) * | 2013-10-27 | 2014-02-19 | 西安电子科技大学 | 基于树与哈希表的内容中心网络结点处理数据方法 |
CN104008136A (zh) * | 2014-05-07 | 2014-08-27 | 中国科学院信息工程研究所 | 一种文本查找的方法和装置 |
CN105117500A (zh) * | 2015-10-10 | 2015-12-02 | 成都携恩科技有限公司 | 一种在大数据背景下的数据查询获取方法 |
CN105337932A (zh) * | 2014-06-30 | 2016-02-17 | 杭州迪普科技有限公司 | 一种web应用防护方法及装置 |
CN106710592A (zh) * | 2016-12-29 | 2017-05-24 | 北京奇虎科技有限公司 | 一种智能硬件设备中的语音识别纠错方法和装置 |
CN107305540A (zh) * | 2016-04-20 | 2017-10-31 | 顺丰科技有限公司 | 地址切分识别方法 |
CN107590258A (zh) * | 2017-09-20 | 2018-01-16 | 杭州安恒信息技术有限公司 | 关键字匹配方法及装置 |
CN107659535A (zh) * | 2016-07-25 | 2018-02-02 | 中国移动通信集团上海有限公司 | 一种规则识别方法及装置 |
CN108170812A (zh) * | 2017-12-29 | 2018-06-15 | 迈普通信技术股份有限公司 | 一种数据过滤方法及设备 |
CN110502611A (zh) * | 2019-08-01 | 2019-11-26 | 武汉虹信通信技术有限责任公司 | 字符串检索方法和装置 |
CN112395877A (zh) * | 2020-11-04 | 2021-02-23 | 苏宁云计算有限公司 | 字符串检测方法、装置、计算机设备和存储介质 |
CN113505585A (zh) * | 2021-07-15 | 2021-10-15 | 中南大学湘雅医院 | 基于原语状态机的高速字符串特征匹配方法、装置及设备 |
-
2006
- 2006-09-27 CN CNA2006101593103A patent/CN101154228A/zh active Pending
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239341B2 (en) | 2006-12-08 | 2012-08-07 | Hangzhou H3C Technologies Co., Ltd. | Method and apparatus for pattern matching |
CN101009660B (zh) * | 2007-01-19 | 2010-06-30 | 杭州华三通信技术有限公司 | 处理分段报文模式匹配的通用方法及装置 |
CN101286988B (zh) * | 2008-04-18 | 2011-05-04 | 北京启明星辰信息技术股份有限公司 | 一种并行多模式匹配的方法及系统 |
CN101677318B (zh) * | 2008-09-18 | 2012-05-23 | 北京启明星辰信息技术股份有限公司 | 匹配规则包含次数指示符的并行多模式匹配的方法及系统 |
CN101442540B (zh) * | 2008-12-30 | 2012-09-05 | 合肥昊特信息科技有限公司 | 基于现场可编程门阵列的高速模式匹配算法 |
CN101609466B (zh) * | 2009-07-01 | 2012-11-28 | 中兴通讯股份有限公司 | 海量数据查重的方法和系统 |
CN102004789A (zh) * | 2010-12-07 | 2011-04-06 | 苏州迈科网络安全技术股份有限公司 | Url过滤系统的应用方法 |
CN102693272B (zh) * | 2011-03-15 | 2017-04-12 | 微软技术许可有限责任公司 | 从统一资源定位符(url)的关键字提取 |
CN102682017A (zh) * | 2011-03-15 | 2012-09-19 | 阿里巴巴集团控股有限公司 | 一种信息检索方法和系统 |
CN102693272A (zh) * | 2011-03-15 | 2012-09-26 | 微软公司 | 从统一资源定位符(url)的关键字提取 |
CN102682017B (zh) * | 2011-03-15 | 2014-04-23 | 阿里巴巴集团控股有限公司 | 一种信息检索方法和系统 |
CN102609459A (zh) * | 2012-01-12 | 2012-07-25 | 神州数码网络(北京)有限公司 | 基于正则表达式的字符串匹配方法和装置 |
CN102609459B (zh) * | 2012-01-12 | 2016-01-06 | 神州数码网络(北京)有限公司 | 基于正则表达式的字符串匹配方法和装置 |
CN102929900B (zh) * | 2012-01-16 | 2015-08-12 | 中国科学院北京基因组研究所 | 一种字符串匹配的方法及装置 |
CN102929900A (zh) * | 2012-01-16 | 2013-02-13 | 中国科学院北京基因组研究所 | 一种字符串匹配的方法及装置 |
CN103309893A (zh) * | 2012-03-15 | 2013-09-18 | 阿里巴巴集团控股有限公司 | 一种字符串的比较方法及装置 |
CN103309893B (zh) * | 2012-03-15 | 2016-12-28 | 阿里巴巴集团控股有限公司 | 一种字符串的比较方法及装置 |
CN102789481A (zh) * | 2012-06-27 | 2012-11-21 | 北京神州泰岳软件股份有限公司 | 一种手机im客户端的特定类型内容解析方法 |
CN103412858B (zh) * | 2012-07-02 | 2016-09-21 | 清华大学 | 用于文本或网络内容分析的大规模特征匹配的方法 |
CN103412858A (zh) * | 2012-07-02 | 2013-11-27 | 清华大学 | 用于文本或网络内容分析的大规模特征匹配的方法 |
CN103595637A (zh) * | 2013-10-27 | 2014-02-19 | 西安电子科技大学 | 基于树与哈希表的内容中心网络结点处理数据方法 |
CN103595637B (zh) * | 2013-10-27 | 2017-03-29 | 西安电子科技大学 | 基于树与哈希表的内容中心网络结点处理数据方法 |
CN104008136A (zh) * | 2014-05-07 | 2014-08-27 | 中国科学院信息工程研究所 | 一种文本查找的方法和装置 |
CN105337932A (zh) * | 2014-06-30 | 2016-02-17 | 杭州迪普科技有限公司 | 一种web应用防护方法及装置 |
CN105117500A (zh) * | 2015-10-10 | 2015-12-02 | 成都携恩科技有限公司 | 一种在大数据背景下的数据查询获取方法 |
CN105117500B (zh) * | 2015-10-10 | 2018-07-06 | 成都携恩科技有限公司 | 一种在大数据背景下的数据查询获取方法 |
CN107305540A (zh) * | 2016-04-20 | 2017-10-31 | 顺丰科技有限公司 | 地址切分识别方法 |
CN107659535A (zh) * | 2016-07-25 | 2018-02-02 | 中国移动通信集团上海有限公司 | 一种规则识别方法及装置 |
CN106710592A (zh) * | 2016-12-29 | 2017-05-24 | 北京奇虎科技有限公司 | 一种智能硬件设备中的语音识别纠错方法和装置 |
CN107590258A (zh) * | 2017-09-20 | 2018-01-16 | 杭州安恒信息技术有限公司 | 关键字匹配方法及装置 |
CN107590258B (zh) * | 2017-09-20 | 2020-04-28 | 杭州安恒信息技术股份有限公司 | 关键字匹配方法及装置 |
CN108170812B (zh) * | 2017-12-29 | 2020-06-19 | 迈普通信技术股份有限公司 | 一种数据过滤方法及设备 |
CN108170812A (zh) * | 2017-12-29 | 2018-06-15 | 迈普通信技术股份有限公司 | 一种数据过滤方法及设备 |
CN110502611A (zh) * | 2019-08-01 | 2019-11-26 | 武汉虹信通信技术有限责任公司 | 字符串检索方法和装置 |
CN110502611B (zh) * | 2019-08-01 | 2022-04-12 | 武汉虹信科技发展有限责任公司 | 字符串检索方法和装置 |
CN112395877A (zh) * | 2020-11-04 | 2021-02-23 | 苏宁云计算有限公司 | 字符串检测方法、装置、计算机设备和存储介质 |
CN113505585A (zh) * | 2021-07-15 | 2021-10-15 | 中南大学湘雅医院 | 基于原语状态机的高速字符串特征匹配方法、装置及设备 |
CN113505585B (zh) * | 2021-07-15 | 2023-03-21 | 中南大学湘雅医院 | 基于原语状态机的高速字符串特征匹配方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101154228A (zh) | 一种分段模式匹配方法及其装置 | |
WO2021083239A1 (zh) | 一种进行图数据查询的方法、装置、设备及存储介质 | |
Li et al. | Pfp: parallel fp-growth for query recommendation | |
Meng et al. | A unified graph model for personalized query-oriented reference paper recommendation | |
Gu et al. | Etree: Effective and efficient event modeling for real-time online social media networks | |
Martinez‐Romo et al. | S em G raph: Extracting keyphrases following a novel semantic graph‐based approach | |
CN101551803A (zh) | 一种建立模式匹配状态机、模式识别的方法和装置 | |
US20170109358A1 (en) | Method and system of determining enterprise content specific taxonomies and surrogate tags | |
Ferrara et al. | Automatic wrapper adaptation by tree edit distance matching | |
US20140280358A1 (en) | Machine for recognizing or generating jabba-type sequences | |
Wang et al. | TSMH Graph Cube: A novel framework for large scale multi-dimensional network analysis | |
CN105045808A (zh) | 一种复合规则集匹配方法和系统 | |
CN105404677A (zh) | 一种基于树形结构的检索方法 | |
CN103226601A (zh) | 一种图片搜索的方法和装置 | |
CN103488741A (zh) | 一种基于url的中文多语义名词的在线语义挖掘系统 | |
Ahamed et al. | An Efficient Mechanism for Deep Web Data Extraction Based on Tree‐Structured Web Pattern Matching | |
Wang et al. | Web search results clustering based on a novel suffix tree structure | |
CN100568239C (zh) | 一种模式匹配方法及装置 | |
CN106844553A (zh) | 基于样本数据的数据探测和扩充方法及装置 | |
Xia et al. | Graph-based web query classification | |
CN105426490A (zh) | 一种基于树形结构的索引方法 | |
Gaur et al. | Review of ontology based focused crawling approaches | |
Castellano et al. | A web text mining flexible architecture | |
Zhang et al. | The extraction method of new logining word/term for social media based on statistics and N-increment | |
Banerjee et al. | Natural language querying and visualization system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20080321 Address after: Munich, Germany Applicant after: Nokia Siemens Networks Address before: Munich, Germany Applicant before: Siemens AG |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |