CN108133052A - 一种多关键字的搜索方法、系统、介质及设备 - Google Patents
一种多关键字的搜索方法、系统、介质及设备 Download PDFInfo
- Publication number
- CN108133052A CN108133052A CN201810048761.2A CN201810048761A CN108133052A CN 108133052 A CN108133052 A CN 108133052A CN 201810048761 A CN201810048761 A CN 201810048761A CN 108133052 A CN108133052 A CN 108133052A
- Authority
- CN
- China
- Prior art keywords
- state
- character
- search
- multiple key
- finite
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
- G06F16/3329—Natural language query formulation or dialogue systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种多关键字搜索方法,应用于流式数据,包括:在预设有限状态自动机的当前状态下,读入目标字符串的字符,以在读入的目标字符串的字符中搜索与待搜索的多关键字对应的字符,以得到搜索结果;其中,预设有限状态自动机为根据多关键字所构建的有限状态自动机;若搜索失败,则利用预设规则重复查找当前状态的回退状态,直至利用回退状态和目标字符串的字符,搜索得到与多关键字的字符对应的搜索结果。通过本发明中的方法,可以实现对目标字符串的一次遍历,即可达到对多关键字同时进行搜索的目的,可大大提高对多关键字搜索的速度。相应的,本发明公开的一种多关键字搜索系统、介质及设备,同样具有上述有益效果。
Description
技术领域
本发明涉及大数据处理领域,特别涉及一种多关键字的搜索方法、系统、介质及设备。
背景技术
随着移动互联网的飞速发展,关键字的搜索已经成为人们生活的一部分,由此得到的就是繁杂冗余的庞大数据量。而对于数据处理系统,其搜索的速度和资源消耗量直接决定了系统品质的好坏。在现有技术当中,关键字的搜索基本上都是适用于单关键字搜索,而对于多关键字的连续搜索,特别是基于流式数据的搜索,经常会出现系统资源占用严重,甚至直接造成系统瘫痪,给人们的日常工作带来巨大的损失。由此可见,通过怎样更好的方法来对多关键字进行搜索,是本领域技术人员亟待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种多关键字的搜索方法、系统、介质及设备,以提高对多关键字的搜索性能。其具体方案如下:
一种多关键字搜索方法,应用于流式数据,包括:
在预设有限状态自动机的当前状态下,读入目标字符串的字符,以在读入的目标字符串的字符中搜索与待搜索的多关键字对应的字符,以得到搜索结果;其中,所述预设有限状态自动机为根据所述多关键字所构建的有限状态自动机;
若搜索失败,则利用预设规则重复查找当前状态的回退状态,直至利用所述回退状态和目标字符串的字符,搜索得到与所述多关键字的字符对应的搜索结果。
优选的,还包括:
在所述有限状态自动机的当前状态下,读入所述多关键字的字符,输出得到与当前状态对应的当前迁移状态和输出字符,并记录当前状态和当前迁移状态的对应关系,得到转向函数表;
在所述有限状态自动机的当前迁移状态下,读入输出字符,并进行搜索;
若搜索失败,则输出与当前迁移状态对应的回退状态,并记录当前迁移状态与回退状态的对应关系,得到失效函数表;
若搜索成功,则输出与当前迁移状态对应的匹配关键字,并记录当前迁移状态与匹配关键字的对应关系,得到输出函数表;
将所述转向函数表、所述失效函数表和所述输出函数表进行汇总,得到所述预设有限状态自动机。
优选的,还包括:
在所述有限状态自动机的任意状态下,将读入所述多关键字的字符所对应的搜索结果插入至所述转向函数表中;其中,所述搜索结果包括与读入所述关键字的字符对应输出的匹配关键字和/或回退状态的对应关系。
优选的,所述若搜索失败,则利用预设规则重复查找当前状态的回退状态的过程,包括:
若搜索失败,则利用所述失效函数表重复查找当前状态的回退状态。
优选的,还包括:
利用内存池管理技术对所述流式数据进行处理,以减少系统资源的消耗。
相应的,本发明还公开了一种多关键字搜索系统,应用于流式数据,包括:
字符读入模块,用于在预设有限状态自动机的当前状态下,读入目标字符串的字符,以在读入的目标字符串的字符中搜索与待搜索的多关键字对应的字符,以得到搜索结果;其中,所述预设有限状态自动机为根据所述多关键字所构建的有限状态自动机;
字符搜索模块,用于若搜索失败,则利用预设规则重复查找当前状态的回退状态,直至利用所述回退状态和目标字符串的字符,搜索得到与所述多关键字的字符对应的搜索结果。
优选的,还包括:
第一函数表建立模块,用于在所述有限状态自动机的当前状态下,读入所述多关键字的字符,输出得到与当前状态对应的当前迁移状态和输出字符,并记录当前状态和当前迁移状态的对应关系,得到转向函数表;
输出字符读入模块,用于在所述有限状态自动机的当前迁移状态下,读入输出字符,并进行搜索;
第二函数表建立模块,用于若搜索失败,则输出与当前迁移状态对应的回退状态,并记录当前迁移状态与回退状态的对应关系,得到失效函数表;
第三函数表建立模块,用于若搜索成功,则输出与当前迁移状态对应的匹配关键字,并记录当前迁移状态与匹配关键字的对应关系,得到输出函数表;
自动机创建模块,用于将所述转向函数表、所述失效函数表和所述输出函数表进行汇总,得到所述预设有限状态自动机。
优选的,还包括:
数据处理模块,用于利用内存池管理技术对所述流式数据进行处理,以减少系统资源的消耗。
相应的,本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述公开的多关键字搜索方法的步骤。
相应的,本发明还公开了一种多关键字搜索设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如前述公开的多关键字搜索方法的步骤。
在本发明中,一种多关键字搜索方法,应用于流式数据,包括:在预设有限状态自动机的当前状态下,读入目标字符串的字符,以在读入的目标字符串的字符中搜索与待搜索的多关键字对应的字符,以得到搜索结果;其中,预设有限状态自动机为根据多关键字所构建的有限状态自动机;若搜索失败,则利用预设规则重复查找当前状态的回退状态,直至利用回退状态和目标字符串的字符,搜索得到与多关键字的字符对应的搜索结果。
可见,在本发明中,首先是根据待搜索的多关键字创建一个有限状态自动机,得到预设有限状态自动机,再利用预设有限状态自动机对多关键字进行搜索,也即,在预设有限状态自动机的当前状态下,读入目标字符串的字符,并利用预设有限状态自动机在读入的目标字符串的字符中,搜索与待搜索的多关键字对应的字符,如果利用预设有限状态自动机在读入的目标字符串的字符当中没有搜索到与待搜索的多关键字匹配的字符,则利用预设规则重复查找预设有限状态自动机当前状态的回退状态,直至利用回退状态和读入的目标字符串的字符,搜索得到与多关键字的字符对应的搜索结果。由此可见,在利用预设有限状态自动机搜索多关键字的过程中,如果待搜索的多关键字发生了失配,则预设有限状态自动机会根据预设规则进行回退,而目标字符串无需再次进行回退,从而实现了对目标字符串的一次遍历,即可达到对多关键字同时进行搜索的目的,大大提高了对多关键字的搜索速度。相应的,本发明公开的一种多关键字搜索系统、介质及设备,同样具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种多关键字搜索方法的流程图;
图2为本发明实施例提供的另一种多关键字搜索方法的流程图;
图3为本发明实施例提供的一种多关键字搜索系统的结构图;
图4为本发明实施例提供的一种多关键字搜索设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种多关键字搜索方法,应用于流式数据,如图1所示,该方法包括:
步骤S11:在预设有限状态自动机的当前状态下,读入目标字符串的字符,以在读入的目标字符串的字符中搜索与待搜索的多关键字对应的字符,以得到搜索结果;
其中,预设有限状态自动机为根据多关键字所构建的有限状态自动机。
在本实施例中,首先是根据待搜索的多关键字创建有限状态自动机,得到预设有限状态自动机,然后利用预设有限状态自动机来对待搜索的多关键字进行搜索,以降低对多关键字进行搜索时对资源的消耗。需要说明的是,本实施例中的方法,可以应用于流式数据的应用场景,也可以应用在其它的大数据的搜索场景下,此处不作具体的限定。
步骤S12:若搜索失败,则利用预设规则重复查找当前状态的回退状态,直至利用回退状态和目标字符串的字符,搜索得到与多关键字的字符对应的搜索结果。
具体的,在对多关键字进行搜索的过程中,首先是将目标字符串与待搜索的多关键字的首字符对齐,依次比对目标字符串与待搜索的多关键字的每一个字符,如果在某一个字符位置处比对失败,则将多关键字的字符串的搜索状态进行回退,在回退状态下重新再对多关键字进行比对,直至将多关键字的字符与目标字符串的字符匹配成功,则输出搜索结果,但是在搜索的过程中,搜索当前状态的回退状态,并不是一步到位的,而是需要对待搜索的多关键字进行多次回退,以便找到最合适的回退位置。具体的,在本发明中,是利用预先设置好的预设规则去查找预设有限状态自动机的当前状态的最合适的回退状态,然后在该回退状态下,再对多关键字的字符进行匹配,从而避免多关键字以逐个字符的形式进行回退,从而实现多个字符的滑进,进而提高对多关键字的搜索性能。
换句话说,利用预设有限状态自动机来对目标字符串进行搜索的过程,与目标字符串的长度无关,而只与多关键字的字符串长度有关。在利用预设有限状态自动机对目标字符串进行搜索的过程中,如果搜索过程发生了失配,则预设有限状态自动机会对多关键字的当前搜索状态进行回退,也即,将多关键字的当前搜索状态回退到某一个状态再次进行搜索,但是,目标字符串却不会有这一回退的过程。例如:若定义目标字符串的长度为n,多关键字的字符串长度为m,利用本发明中的方法来对多关键字进行搜索时的时间复杂度为0(n),再加上根据多关键字的字符串构建有限状态自动机的过程所需要的预处理时间为0(m),所以,在最好和最坏的情况下,利用预设有限状态自动机搜索多关键字的时间复杂度都为0(n+m),也即实现了对目标字符串的一次遍历,即可对多个多关键字进行同时搜索,从而大大提高了对多关键字进行搜索时的搜索性能。
可见,在本发明中,首先是根据待搜索的多关键字创建一个有限状态自动机,得到预设有限状态自动机,再利用预设有限状态自动机对多关键字进行搜索,也即,在预设有限状态自动机的当前状态下,读入目标字符串的字符,并利用预设有限状态自动机在读入的目标字符串的字符中,搜索与待搜索的多关键字对应的字符,如果利用预设有限状态自动机在读入的目标字符串的字符当中没有搜索到与待搜索的多关键字匹配的字符,则利用预设规则重复查找预设有限状态自动机当前状态的回退状态,直至利用回退状态和读入的目标字符串的字符,搜索得到与多关键字的字符对应的搜索结果。由此可见,在利用预设有限状态自动机搜索多关键字的过程中,如果待搜索的多关键字发生了失配,则预设有限状态自动机会根据预设规则进行回退,而目标字符串无需再次进行回退,从而实现了对目标字符串的一次遍历,即可达到对多关键字同时进行搜索的目的,大大提高了对多关键字的搜索速度。
基于上述实施例,在本实施例中对上述实施例中创建预设有限状态自动机的过程进行具体的说明,如图2所示,创建预设有限状态自动机的过程包括:
步骤S21:在有限状态自动机的当前状态下,读入多关键字的字符,输出得到与当前状态对应的当前迁移状态和输出字符,并记录当前状态和当前迁移状态的对应关系,得到转向函数表。
具体的,在有限状态自动机的当前状态下,如果有限状态自动机读入多关键字的字符时,能够输出得到与当前状态对应的当前迁移状态和输出字符,则通过这种方式就定义了一种多关键字状态之间的转向关系。例如:假设有限状态自动机的当前状态为S_now,读入的多关键字的字符为C,如果输出得到有限状态自动机的当前迁移状态S_next,则这一过程就可以表示为:G(S_now,C)=S_next;如果有限状态自动机在读入的多关键字中不存在这样的状态迁移,则就可以将这一过程表示为:S_next=S_fail。在本实施例中,通过记录有限状态自动机的当前状态和当前迁移状态的对应关系,即可得到不同状态之间的转向关系,也即得到转向函数表G。
步骤S22:在有限状态自动机的当前迁移状态下,读入输出字符,并进行搜索。
步骤S23:若搜索失败,则输出与当前迁移状态对应的回退状态,并记录当前迁移状态与回退状态的对应关系,得到失效函数表。
可以理解的是,以转向函数表G的当前迁移状态和输出的匹配结果作为有限状态自动机下一次搜索的输入时,如果输出结果无效,也即,在该过程中没有匹配到多关键字,此时,有限状态自动机就会输出与当前迁移状态对应的回退状态,换句话说,该过程是以另外一种形式定义了不同状态间的转向关系,也即,将当前迁移状态与回退状态的对应关系记录下来,得到失效函数表F,以便在后续的过程中,可以利用失效函数表F实现对多关键字不同状态进行搜索的自动切换。
步骤S24:若搜索成功,则输出与当前迁移状态对应的匹配关键字,并记录当前迁移状态与匹配关键字的对应关系,得到输出函数表。
能够想到的是,如果利用有限状态自动机的当前状态与读入的多关键字的字符,输出得到有限状态自动机的当前迁移状态S_next,则记录所有状态的迁移状态,得到输出函数表R,也即,输出函数表R中记录的都是各个状态与输出的多关键字的对应关系,以便在后续的搜索过程中,利用输出函数表R就可以得到待搜索的多关键字的各个搜索结果。
步骤S25:将转向函数表、失效函数表和输出函数表进行汇总,得到预设有限状态自动机。
在本实施例中,是根据转向函数表G、失效函数表F和输出函数表R构建了预设有限状态自动机,也即,通过本实施例中所提供的方法来对待搜索的多关键字进行了预处理,进而提高了在对多关键字进行搜索时的搜索速度。
基于上述实施例,作为一种优选的实施方式,在本实施例中对上述实施例中步骤S12:若搜索失败,则利用预设规则重复查找当前状态的回退状态的过程作进一步的说明。
若搜索失败,则利用失效函数表重复查找当前状态的回退状态。
可以理解的是,利用本发明中的方法,在利用预设有限状态自动机在对多关键字进行搜索的过程中,如果搜索失败,则利用预设有限状态自动机中的失效函数表F来重复查找与待搜索的多关键字的当前状态的最合适的回退状态,从而避免了需要对待搜索的多关键字的逐个字符的回退,进而实现了多个字符的滑进,进一步的提高了对多关键字的搜索速度。
基于上述实施例,作为一种优选的实施方式,在本实施例中对上述实施例作了进一步的说明与优化。
优选的,在有限状态自动机的任意状态下,将读入多关键字的字符所对应的搜索结果插入至转向函数表中;
其中,搜索结果包括与读入关键字的字符对应输出的匹配关键字和/或回退状态的对应关系。
需要说明的是,当将转向函数表G、失效函数表F和输出函数表R创建好以后,此时得到的有限状态自动机为非确定性有限状态自动机(Nondeterministic Finite StateAutomata,NFA)。当利用非确定性有限状态自动机来对多关键字进行搜索时,如果在搜索的过程中,待搜索的多关键字没有匹配到相应的字符,则会根据预设规则进行状态回退,也即根据失效函数表F进行状态回退,但是在此过程中,待搜索的多关键字具体回退到哪一个状态是不确定的,需要进行多次循环回溯,以寻找最合适的回退状态,在此种情况下,对多关键字进行搜索时,仍然会遇到性能瓶颈。
为了避免这一现象的产生,需要将非确定性有限状态自动机进行优化,以避免利用预设有限状态自动机在搜索过程中的性能瓶颈。也即,将非确定性有限状态自动机转换为确定性有限状态自动机(Deterministic Finite State Automata,DFA),换句话说,也就是在任意状态下,利用确定性有限状态自动机,都可以确定的给出当前状态的回退状态,而不需要对当前状态的最合适的回退状态进行反复查找。也即,假设当前状态是S_now,读入的字符为C,则利用确定性有限状态自动机,会确定地输出与当前状态对应的下一个状态S_next,这一过程可表示为:若G(S_now,C)匹配成功,则S_next=goto(S_now,C);否则,将这一过程记为:S_now=G(F(S),C),如果S_next有效且不为0,则S_next就是那个确定状态,此时,与此过程对应的搜索结果插入到转向函数表G中。能够想到的是,随着状态关系的不断插入,转向函数表G中的对应关系越来越多,最终产生的结果就是利用此转向函数表G对多关键字进行搜索时,都可以直接进行状态跳转,无需再去查询失效函数表,从而可以消除利用非确定性有限状态自动机多次循环搜索的性能瓶颈,进而提高搜索多关键字的搜索速度。
基于上述实施例,作为一种优选的实施方式,还可以对流式数据进行处理,以使得系统能够同时处理更多的数据。
具体的,利用内存池管理技术对流式数据进行处理,以减少系统资源的消耗。
随着大数据时代的到来,流式数据成为大数据信息的重要来源,其中,流式数据作为多关键字搜索最为常见的一种应用场景,对于流式数据处理成为提高处理数据时效性的关键。具体的,在本实施例中,是利用内存池管理技术对流式数据进行处理,来减少内存的频繁申请和释放,从而大大降低流式数据的资源占用率,进而提高系统的搜索性能。当然,这种方法也可以应用到其它类似的应用场景当中,此处不作具体的限定。
相应的,本发明还公开了一种多关键字搜索系统,应用于流式数据,如图3所示,该系统包括:
字符读入模块31,用于在预设有限状态自动机的当前状态下,读入目标字符串的字符,以在读入的目标字符串的字符中搜索与待搜索的多关键字对应的字符,以得到搜索结果;其中,预设有限状态自动机为根据多关键字所构建的有限状态自动机;
字符搜索模块32,用于若搜索失败,则利用预设规则重复查找当前状态的回退状态,直至利用回退状态和目标字符串的字符,搜索得到与多关键字的字符对应的搜索结果。
该多关键字搜索系统还包括:
第一函数表建立模块,用于在有限状态自动机的当前状态下,读入多关键字的字符,输出得到与当前状态对应的当前迁移状态和输出字符,并记录当前状态和当前迁移状态的对应关系,得到转向函数表;
输出字符读入模块,用于在有限状态自动机的当前迁移状态下,读入输出字符,并进行搜索;
第二函数表建立模块,用于若搜索失败,则输出与当前迁移状态对应的回退状态,并记录当前迁移状态与回退状态的对应关系,得到失效函数表;
第三函数表建立模块,用于若搜索成功,则输出与当前迁移状态对应的匹配关键字,并记录当前迁移状态与匹配关键字的对应关系,得到输出函数表;
自动机创建模块,用于将转向函数表、失效函数表和输出函数表进行汇总,得到预设有限状态自动机。
该多关键字搜索系统还包括:
数据优化模块,用于在有限状态自动机的任意状态下,将读入多关键字的字符所对应的搜索结果插入至转向函数表中;其中,搜索结果包括与读入关键字的字符对应输出的匹配关键字和/或回退状态的对应关系。
优选的,字符搜索模块包括:
字符搜索单元,用于若搜索失败,则利用失效函数表重复查找当前状态的回退状态。
该多关键字搜索系统还包括:
数据处理模块,用于利用内存池管理技术对流式数据进行处理,以减少系统资源的消耗。
相应的,本发明还公开了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如前述公开的多关键字搜索方法的步骤。
相应的,本发明还公开了一种多关键字搜索设备,如图4所示,包括:
存储器41,用于存储计算机程序;
处理器42,用于执行计算机程序时实现如前述公开的多关键字搜索方法的步骤。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种多关键字搜索方法、系统、介质及设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种多关键字搜索方法,其特征在于,应用于流式数据,包括:
在预设有限状态自动机的当前状态下,读入目标字符串的字符,以在读入的目标字符串的字符中搜索与待搜索的多关键字对应的字符,以得到搜索结果;其中,所述预设有限状态自动机为根据所述多关键字所构建的有限状态自动机;
若搜索失败,则利用预设规则重复查找当前状态的回退状态,直至利用所述回退状态和目标字符串的字符,搜索得到与所述多关键字的字符对应的搜索结果。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述有限状态自动机的当前状态下,读入所述多关键字的字符,输出得到与当前状态对应的当前迁移状态和输出字符,并记录当前状态和当前迁移状态的对应关系,得到转向函数表;
在所述有限状态自动机的当前迁移状态下,读入输出字符,并进行搜索;
若搜索失败,则输出与当前迁移状态对应的回退状态,并记录当前迁移状态与回退状态的对应关系,得到失效函数表;
若搜索成功,则输出与当前迁移状态对应的匹配关键字,并记录当前迁移状态与匹配关键字的对应关系,得到输出函数表;
将所述转向函数表、所述失效函数表和所述输出函数表进行汇总,得到所述预设有限状态自动机。
3.根据权利要求2所述的方法,其特征在于,还包括:
在所述有限状态自动机的任意状态下,将读入所述多关键字的字符所对应的搜索结果插入至所述转向函数表中;其中,所述搜索结果包括与读入所述关键字的字符对应输出的匹配关键字和/或回退状态的对应关系。
4.根据权利要求2所述的方法,其特征在于,所述若搜索失败,则利用预设规则重复查找当前状态的回退状态的过程,包括:
若搜索失败,则利用所述失效函数表重复查找当前状态的回退状态。
5.根据权利要求1至4任一项所述的方法,其特征在于,还包括:
利用内存池管理技术对所述流式数据进行处理,以减少系统资源的消耗。
6.一种多关键字搜索系统,其特征在于,应用于流式数据,包括:
字符读入模块,用于在预设有限状态自动机的当前状态下,读入目标字符串的字符,以在读入的目标字符串的字符中搜索与待搜索的多关键字对应的字符,以得到搜索结果;其中,所述预设有限状态自动机为根据所述多关键字所构建的有限状态自动机;
字符搜索模块,用于若搜索失败,则利用预设规则重复查找当前状态的回退状态,直至利用所述回退状态和目标字符串的字符,搜索得到与所述多关键字的字符对应的搜索结果。
7.根据权利要求6所述的系统,其特征在于,还包括:
第一函数表建立模块,用于在所述有限状态自动机的当前状态下,读入所述多关键字的字符,输出得到与当前状态对应的当前迁移状态和输出字符,并记录当前状态和当前迁移状态的对应关系,得到转向函数表;
输出字符读入模块,用于在所述有限状态自动机的当前迁移状态下,读入输出字符,并进行搜索;
第二函数表建立模块,用于若搜索失败,则输出与当前迁移状态对应的回退状态,并记录当前迁移状态与回退状态的对应关系,得到失效函数表;
第三函数表建立模块,用于若搜索成功,则输出与当前迁移状态对应的匹配关键字,并记录当前迁移状态与匹配关键字的对应关系,得到输出函数表;
自动机创建模块,用于将所述转向函数表、所述失效函数表和所述输出函数表进行汇总,得到所述预设有限状态自动机。
8.根据权利要求6或7所述的系统,其特征在于,还包括:
数据处理模块,用于利用内存池管理技术对所述流式数据进行处理,以减少系统资源的消耗。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的多关键字搜索方法的步骤。
10.一种多关键字搜索设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述多关键字搜索方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810048761.2A CN108133052A (zh) | 2018-01-18 | 2018-01-18 | 一种多关键字的搜索方法、系统、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810048761.2A CN108133052A (zh) | 2018-01-18 | 2018-01-18 | 一种多关键字的搜索方法、系统、介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108133052A true CN108133052A (zh) | 2018-06-08 |
Family
ID=62399888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810048761.2A Pending CN108133052A (zh) | 2018-01-18 | 2018-01-18 | 一种多关键字的搜索方法、系统、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108133052A (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801152A (zh) * | 2006-01-13 | 2006-07-12 | 清华大学 | 一种用于文本或网络内容分析的多关键词匹配方法 |
CN101051321A (zh) * | 2007-05-18 | 2007-10-10 | 北京哲安科技有限公司 | 一种多字符串匹配方法和芯片 |
CN101577703A (zh) * | 2008-05-07 | 2009-11-11 | 北京启明星辰信息技术股份有限公司 | 一种无需解码的对base64编码数据的模式匹配方法 |
CN102646115A (zh) * | 2012-02-17 | 2012-08-22 | 北京星网锐捷网络技术有限公司 | Ac状态机的构建方法及装置 |
US20120239702A1 (en) * | 2003-05-01 | 2012-09-20 | The Hong Kong Polytechnic Polytechnic University | String lookup using three-transition tree structure |
CN102799600A (zh) * | 2012-04-10 | 2012-11-28 | 成都网安科技发展有限公司 | 一种基于编码关联的多模式匹配算法及系统 |
CN104008136A (zh) * | 2014-05-07 | 2014-08-27 | 中国科学院信息工程研究所 | 一种文本查找的方法和装置 |
CN104077358A (zh) * | 2014-06-03 | 2014-10-01 | 南京大学 | 用于海量短文本信息发现的自动机方法 |
CN106874294A (zh) * | 2015-12-14 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 一种信息匹配方法及装置 |
-
2018
- 2018-01-18 CN CN201810048761.2A patent/CN108133052A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120239702A1 (en) * | 2003-05-01 | 2012-09-20 | The Hong Kong Polytechnic Polytechnic University | String lookup using three-transition tree structure |
CN1801152A (zh) * | 2006-01-13 | 2006-07-12 | 清华大学 | 一种用于文本或网络内容分析的多关键词匹配方法 |
CN101051321A (zh) * | 2007-05-18 | 2007-10-10 | 北京哲安科技有限公司 | 一种多字符串匹配方法和芯片 |
CN101577703A (zh) * | 2008-05-07 | 2009-11-11 | 北京启明星辰信息技术股份有限公司 | 一种无需解码的对base64编码数据的模式匹配方法 |
CN102646115A (zh) * | 2012-02-17 | 2012-08-22 | 北京星网锐捷网络技术有限公司 | Ac状态机的构建方法及装置 |
CN102799600A (zh) * | 2012-04-10 | 2012-11-28 | 成都网安科技发展有限公司 | 一种基于编码关联的多模式匹配算法及系统 |
CN104008136A (zh) * | 2014-05-07 | 2014-08-27 | 中国科学院信息工程研究所 | 一种文本查找的方法和装置 |
CN104077358A (zh) * | 2014-06-03 | 2014-10-01 | 南京大学 | 用于海量短文本信息发现的自动机方法 |
CN106874294A (zh) * | 2015-12-14 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 一种信息匹配方法及装置 |
Non-Patent Citations (2)
Title |
---|
NULLZX: ""多模字符串匹配算法之AC自动机—原理与实现"", 《HTTPS://WWW.CNBLOGS.COM/NULLZX/P/7499397.HTML》 * |
林夕-梦: ""AC自动机算法详解(转载)"", 《HTTPS://WWW.CNBLOGS.COM/CMMDC/P/7337611.HTML》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106797446B (zh) | 基于存储器的历史搜索 | |
US9195738B2 (en) | Tokenization platform | |
CN102542052B (zh) | 优先散列索引 | |
CN107153647B (zh) | 进行数据压缩的方法、装置、系统和计算机程序产品 | |
Baeza-Yates | Introduction to Data Structures and Algorithms Related to Information Retrieval. | |
CN104899264B (zh) | 一种多模式正则表达式匹配方法及装置 | |
CN101154228A (zh) | 一种分段模式匹配方法及其装置 | |
CN102148805B (zh) | 特征匹配方法和装置 | |
WO2004063948A1 (en) | A programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data | |
US20060259508A1 (en) | Method and apparatus for detecting semantic elements using a push down automaton | |
CN102867049B (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
Shi et al. | The implementation of crawling news page based on incremental web crawler | |
CN101425084A (zh) | 基于有序二叉树的模式匹配方法 | |
JP2004194343A (ja) | パイプライン型ハードウエアビットマップ型マルチビットトライアルゴリズムネットワーク検索エンジンにおけるパス圧縮最適化のためのシステム及び方法 | |
Breslauer et al. | Simple real-time constant-space string matching | |
JPH0748220B2 (ja) | データを構成、管理又は検索するための方法及び装置 | |
CN105718463A (zh) | 关键字模糊匹配方法及装置 | |
JP6072922B2 (ja) | 文字列検索装置、文字列検索方法および文字列検索プログラム | |
CN108133052A (zh) | 一种多关键字的搜索方法、系统、介质及设备 | |
Jekovec et al. | Parallel query in the suffix tree | |
Chitrakar et al. | Approximate search with constraints on indels with application in SPAM filtering | |
Misevičius et al. | Iterated tabu search for the traveling salesman problem: new results | |
Clifford et al. | Pattern matching in multiple streams | |
KR102146625B1 (ko) | 오토마타 기반 증분적 중위 확률 계산 장치 및 방법 | |
Ejendibia et al. | String searching with DFA-based algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180608 |