CN107122222B - 一种字符串的搜索系统及方法 - Google Patents
一种字符串的搜索系统及方法 Download PDFInfo
- Publication number
- CN107122222B CN107122222B CN201710262622.5A CN201710262622A CN107122222B CN 107122222 B CN107122222 B CN 107122222B CN 201710262622 A CN201710262622 A CN 201710262622A CN 107122222 B CN107122222 B CN 107122222B
- Authority
- CN
- China
- Prior art keywords
- search
- data
- matched
- compiler
- module
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000014509 gene expression Effects 0.000 claims abstract description 36
- 239000007787 solid Substances 0.000 claims abstract description 13
- 238000004458 analytical method Methods 0.000 claims description 17
- 238000001914 filtration Methods 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 7
- 238000005457 optimization Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- 238000007689 inspection Methods 0.000 claims description 4
- 230000003252 repetitive effect Effects 0.000 claims description 3
- 238000007781 pre-processing Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 6
- 235000013399 edible fruits Nutrition 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/423—Preprocessors
-
- 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/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/425—Lexical analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种字符串的搜索系统及方法,该搜索系统包括:RE搜索引擎,RE搜索引擎包括RE编译器和RE处理器,RE处理器设于固态硬盘上;RE编译器用于获取用户输入的正则表达式和待匹配文件信息,将正则表达式编译成指令序列,把指令序列发送给RE处理器,把待匹配文件信息发送给CPU核;RE处理器用于接收所述指令序列,及接收Flash控制器发送的根据CPU核的数据获取请求从Flash阵列中获取的待匹配数据,从待匹配数据中搜索符合指令序列的数据,并将搜索结果返回给RE编译器;所述数据获取请求由CPU核根据所述待匹配文件信息向Flash控制器发送。本发明提供的搜索系统搜索和查询是在离数据最近的存储系统进行,大大地减轻了服务器CPU的负载、提高了搜索查询速度。
Description
技术领域
本发明涉及数据搜索技术领域,尤其涉及一种字符串的搜索系统及方法。
背景技术
在企业大数据中,85%的数据是非结构化的文本日志数据。在这类数据中快速查找、搜索信息对企业决策至关重要,例如在社交网上分析消费者的走向和趋势可直接指导如何发放产品广告,金融分析可能会在茫茫的大数据中寻找“我买了房子”,公安部门在反恐过程中可能会寻找并分析有关穆斯林极端分子的某些术语等等。在没有预先设计好的以关键字为索引的结构数据的情况下,随机字符串的搜索还是以扫描整个文件的方式来找,主要的扫描搜索工具有Grep和AWK,但这些软件工具的数度很慢,用最快的服务器运行,最快也只能达到100-300MBPS,远远落后于如今最基本的网络数度和存储数度。最近,密齿根大学的科研人员提出了附在CPU旁的硬件加速器来完成在文件里的字符搜索,大大地提高了扫描的数度。
但是,如果利用目前的扫描工具查找字符串,则需要把数据一一从存储系统调到内存,然后服务器的CPU用类似Grep的软件工具扫描、查找,要花几个小时的时间,并且占用了大量的服务器资源;而硬件加速器虽然提高了纯软件的扫描数度,但是还是要首先将大量的数据从存储系统读进内存然后进行扫描搜索,其存储瓶颈以及存储与CPU的瓶颈问题依然没有解决。
因此,需要一种速度快、能够避免存储瓶颈的字符串的搜索系统。
发明内容
本发明所要解决的技术问题在于提供了一种字符串的搜索系统及方法,该搜索系统大大地减轻了服务器CPU的负载、提高了搜索查询速度。
为解决上述技术问题,本发明采用以下技术方案:
一方面,提供了一种字符串的搜索系统,该搜索系统包括:RE搜索引擎,及位于固态硬盘上的CPU核、Flash控制器和Flash阵列;所述RE搜索引擎包括RE编译器和RE处理器,所述RE处理器设于固态硬盘上;
所述RE编译器用于获取用户输入的正则表达式和待匹配文件信息,将所述正则表达式编译成指令序列,把所述指令序列发送给RE处理器,把所述待匹配文件信息发送给CPU核;
所述RE处理器用于接收所述指令序列,及接收Flash控制器发送的根据CPU核的数据获取请求从Flash阵列中获取的待匹配数据,从所述待匹配数据中搜索符合所述指令序列的数据,并将搜索结果返回给RE编译器;所述数据获取请求由CPU核根据所述待匹配文件信息向Flash控制器发送。
其中,所述RE编译器包括编译预处理模块、词法分析模块、语法分析模块和随机数产生模块,编译预处理模块用于对用户输入的正则表达式进行输入合法性检查和优化处理;词法分析模块和语法分析模块用于将经过优化的正则表达式翻译成指令序列;RE编译器还包括随机数产生模块,用于产生在预置数值范围的预置个数的随机数,作为RE处理器中的初始随机种子。
其中,所述RE处理器包括数据过滤模块、多路调度模块、运算模块和多级归并排序模块:
所述数据过滤模块用于根据所述指令序列中的前缀匹配规则,结合正则表达式的字边界规则或一位负向零宽断言对所述待匹配数据进行过滤;
所述多路调度模块用于利用所述初始随机种子采用伪随机洗牌算法得到运算模块中的运算单元的调度结果;
所述运算模块包括若干个的运算单元,用于根据调度结果按照指令序列中的指令编码和操作数完成过滤后的待匹配数据的搜索运算;
所述多级归并排序模块对搜索运算产生的结果按照偏移地址从小到大的顺序排列得到搜索结果,并把所述搜索结果返回给RE编译器。
其中,所述RE编译器位于主机上或所述固态硬盘的CPU核上,主机与固态硬盘通过PCIe接口进行数据传输。
其中,所述RE编译器在主机上由C语言实现。
其中,所述RE处理器基于FPGA由硬件描述语言Verilog或VHDL实现。
其中,所述运算模块包括16个运算单元。
其中,所述多级归并排序模块由级联的多路归并排序算法实现。
其中,所述编译预处理模块还用于将正则表达式中的重复操作进行展开,语法错误检查,对于纯字符的匹配快速生成指令序列。
另一方面,提供了一种字符串的搜索方法,该搜索方法包括:
RE编译器获取用户输入的正则表达式和待匹配文件信息,将用户输入的正则表达式编译成指令序列,把所述指令序列发送给RE处理器,把所述待匹配文件信息发送给CPU核;
CPU核根据所述待匹配文件信息向Flash控制器发送数据获取请求;
Flash控制器根据所述数据获取请求从Flash阵列中获取待匹配数据,把所述待匹配数据发送给RE处理器;
RE处理器接收所述指令序列和所述待匹配数据,从所述待匹配数据中搜索符合所述指令序列的数据,并将搜索结果返回给RE编译器。
与现有技术相比,本发明的有益效果为:本发明搜索和查询是在离数据最近的存储设备或存储系统进行,无需将大量的数据调到服务器CPU内存,大大地减轻了服务器CPU的负载、提高了搜索查询速度,接近总线传输速度,与现有技术相比,查找速度可提高数十倍、甚至上百倍,从根本上解决了在大数据查找分析的存储瓶颈和存储系统与CPU接口的瓶颈问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据本发明实施例的内容和这些附图获得其他的附图。
图1是本发明具体实施方式中提供的一种字符串的搜索系统的实施例的结构框图。
图2是本发明具体实施方式中提供的RE编译器的实施例的结构框图。
图3是本发明具体实施方式中提供的RE处理器的实施例的结构框图。
图4是本发明具体实施方式中提供的一种字符串的搜索方法的实施例的方法流程图。
具体实施方式
为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图1~3对本发明实施例作进一步的详细描述。请参考图1,其是本发明具体实施方式中提供的一种字符串的搜索系统的实施例的方法流程图,如图1所示,在一些实施例中,该搜索系统包括:RE(Regular Expression,正则表达式)搜索引擎,及位于固态硬盘2上的CPU核21、Flash控制器23和Flash阵列24;RE搜索引擎包括RE编译器11和RE处理器22,所述RE处理器22设于固态硬盘2上;RE编译器11用于用于获取用户输入的正则表达式和待匹配文件信息,将所述正则表达式编译成指令序列,把所述指令序列发送给RE处理器22,把所述待匹配文件信息发送给CPU核21;RE处理器22用于接收所述指令序列,及接收Flash控制器23发送的根据CPU核21的数据获取请求从Flash阵列24中获取的待匹配数据,从所述待匹配数据中搜索符合所述指令序列的数据,并将搜索结果返回给RE编译器11;所述数据获取请求由CPU核21根据所述待匹配文件信息向Flash控制器23发送。用户通过主机输入正则表达式和待匹配文件信息,RE编译器11获取用户输入的正则表达式和待匹配文件信息,RE处理器22完成搜索之后将搜索结果返回给RE编译器11,RE编译器11对搜索结果进行处理,并通过主机呈现给用户,用户便可操作主机从RE编译器中获取搜索结果对应的数据。
本发明实施例提供的搜索系统搜索和查询由设于离数据最近的固态硬盘的RE处理器进行,Flash控制器将待匹配数据发送给RE处理器,RE处理器从待匹配数据中搜索符合所述指令序列的数据,在离数据最近的存储设备或存储系统进行搜索和查询,无需将大量的数据调到服务器CPU内存,大大地减轻了服务器CPU的负载、提高了搜索查询速度,接近总线传输速度,与现有技术相比,查找速度可提高数十倍、甚至上百倍,从根本上解决了在大数据查找分析的存储瓶颈和存储系统与CPU接口的瓶颈问题。
图2是本发明具体实施方式中提供的RE编译器的实施例的结构框图,如图2所示,在一些实施例中,RE编译器11包括编译预处理模块112、词法分析模块113、语法分析模块114和随机数产生模块111,编译预处理模块112用于对用户输入的正则表达式进行输入合法性检查和优化处理;词法分析模块113和语法分析模块114用于将经过优化的正则表达式翻译成指令序列;随机数产生模块111用于产生在预置数值范围的预置个数的随机数,作为RE处理器中的初始随机种子。
在一些优选的实施例中,编译预处理模块112还用于将正则表达式中的重复操作进行展开,语法错误检查,对于纯字符的匹配快速生成指令序列。
图3是本发明具体实施方式中提供的RE处理器的实施例的结构框图,如图3所示,在一些优选的实施例中,RE处理器22包括数据过滤模块221、多路调度模块222、运算模块223和多级归并排序模块224:数据过滤模块221用于根据所述指令序列中的前缀匹配规则,结合正则表达式的字边界规则或一位负向零宽断言对所述待匹配数据进行过滤;多路调度模块222用于利用所述初始随机种子采用伪随机洗牌算法得到运算模块223中的运算单元的调度结果;运算模块223包括若干个的运算单元2231~223N,用于根据调度结果按照指令序列中的指令编码和操作数完成过滤后的待匹配数据的搜索运算;多级归并排序模块224对搜索运算产生的结果按照偏移地址从小到大的顺序排列得到搜索结果,并把所述搜索结果返回给RE编译器11。
数据过滤模块221根据所述指令序列中的前缀匹配规则,结合正则表达式的字边界规则或一位负向零宽断言对待匹配数据进行过滤,使得搜索系统可根据用户的需求查找100%的匹配、部分匹配、带有通配符的字符串、变长的字符串、带有特殊字符的字符串等等,数据过滤221加载字符串的同时对待匹配数据进行过滤,将前缀匹配的字符地址传给RE处理器22,不保存前缀不匹配的字符的地址,支持向前一位的零宽断言过滤,用户可配置,这一步骤大大减轻RE处理器22的压力。
多路调度模块222采用伪随机洗牌算法得到运算单元2231~223N的调度结果,使运算单元2231~223N根据调度结果按照指令序列中的指令编码和操作数完成过滤后的待匹配数据的搜索运算,采用伪随机洗牌算法可以避免由于待匹配数据固定格式造成单路繁忙问题,每个地址按调度结果传给N个运算单元,N为2的n次方,n为正整数。作为一个优选的实施例,运算模块包括16个运算单元,16个运算单元并行处理,各个运算单元相互独立地执行指令系列,大大提高了搜索查询速度。N取16,与选择的总线宽度匹配,有利于提高搜索查询速度。作为一个优选的实施例,N也可为其他2的n次方,如32、64等。
其中,采用伪随机洗牌算法每一时刻都随机产生一个0~15的排列,例如某一时刻产生的随机排列为(14,8,9,2,10,5,13,0,4,15,7,1,6,11,12),每个数出现且仅出现一次,即实现0~15的随机洗牌算法,实现对16个运算单元的调度。作为一个优选的实施例,RE编译器内部的随机数产生模块产生32个互不相同的1~255的随机数,其中4个随机数为1组,用来计算一个0~23的随机数。计算方法如下:每个随机数在FPGA中作为lfsr(线性反馈移位寄存器)的初始状态,在每个时钟到来的时候会产生1个0~31的随机数。每个lfsr模块产生的随机数在0~23的概率为0.875,在24~31之间的概率为0.125。因此4个lfsr中产生的4个随机数中至少有一个随机数在0~23范围内的概率为0.996。当随机数都不在0~23之间时,默认数值为0。这样8个0~23的随机数用来产生0~15的排列。如果是0~32的随机序列则需要32+16个随机数,这和具体算法有关,但整体框架不变,都是由RE编译器产生初始随机种子,再由FPGA上的RE运算器产生随机数。
在一些优选的实施例中,RE编译器11设置于主机1上,如图1所示。作为另一个优选的实施例RE编译器11也可设置于固态硬盘2的CPU核21上。在一些优选的实施例中,主机1与固态硬盘2通过PCIe接口3进行数据传输,通过AXI(Advanced eXtensible Interface)总线传输数据。在一些优选的实施例中,RE编译器11在主机1上由C语言实现,RE处理器22在固态硬盘2上基于FPGA(Field-Programmable Gate Array,现场可编程门阵列)由硬件描述语言Verilog或VHDL(Very-High-Speed Integrated Circuit Hardware DescriptionLanguage,超高速集成电路硬件描述语言)等实现。
在一些优选的实施例中,所述多级归并排序模块224由级联的多路归并排序算法实现,将搜索结果按照在文本中的偏移地址从小到大的顺序进行排列,并将最后结果返回给RE编译器11,返回结果的格式为:{行号+偏移地址+长度}。RE编译器对返回的结果进行处理,并通过主机呈现给用户。
本发明实施提供的搜索系统搜索和查询由设于离数据最近的固态硬盘的RE处理器进行,Flash控制器将待匹配数据发送给RE处理器,RE处理器从待匹配数据中搜索符合所述指令序列的数据,在离数据最近的存储设备或存储系统进行搜索和查询,无需将大量的数据调到服务器CPU内存,大大地减轻了服务器CPU的负载、提高了搜索查询速度,接近总线传输速度,与现有技术相比,查找速度可提高数十倍、甚至上百倍,从根本上解决了在大数据查找分析的存储瓶颈和存储系统与CPU接口的瓶颈问题,而且可根据用户的需求查找100%的匹配、部分匹配、带有通配符的字符串、变长的字符串、带有特殊字符的字符串等等,该搜索系统具有并行和流水线的特殊设计,有效提高了搜索查询速度,具有反向查找功能,根据字母出现的频率,在所查找的字符串内任意一点开始搜索,能快速在非结构化的数据里查找随机任意字符串。
以下是本发明具体实施方式中提供的一种字符串的搜索方法的实施例,系统的实施例基于上述的一种字符串的搜索系统的实施例实现,在搜索方法中未尽的描述,请参考前述搜素系统的实施例。
请参考图4,其是本发明具体实施方式中提供的一种字符串的搜索方法的实施例的方法流程图,如图4所示,在一些优选的实施例中,该搜索方法包括:
步骤S101:RE编译器获取用户输入的正则表达式和待匹配文件信息,将所述正则表达式编译成指令序列,把所述指令序列发送给RE处理器,把所述待匹配文件信息发送给CPU核。
步骤S102:CPU核根据所述待匹配文件信息向Flash控制器发送数据获取请求。
步骤S103:Flash控制器根据所述数据获取请求从Flash阵列中获取待匹配数据,把所述待匹配数据发送给RE处理器。
步骤S104:RE处理器接收和所述待匹配数据,从所述待匹配数据中搜索符合所述指令序列的数据,并将搜索结果返回给RE编译器。
用户可操作主机从RE编译器中获取搜索结果对应的数据,以搜索美国电话号码为例,对搜索系统的搜索流程做进一步说明。如美国电话号码的正则表达式如下:(?<=\s)\d{3}[-.]?\d{3}[-.]?\d{4},其中“(?<=\s)”表示匹配串的前面必须是空格字符,但是该空格字符不计入匹配串的长度;“\d”表示0-9的数字,后面的{3}表示前面的元素重复3次;“[-.]”表示“-”或“.”,后面的“?”表示前面的元素,即“[-.]”出现0次或1次。以此类推,该正表达式匹配的内容如下加黑部分所示:
p:444-555-1234f:246.555.8888m:1235554567
具体处理流程如下:
(1)RE编译器将用户输入的正则表达式编译成指令序列,将指令序列发送给RE处理器,并将用户输入的待匹配文件信息发送给CPU核。示例的正则表达式产生的指令序列如表1所示:
表1指令序列
0.lsplit 3,3,3
1.prange 48,57
2.ljmp 3,3,0
3.split 4,5
4.ppair 45,46
5.lsplit 3,3,8
6.prange 48,57
7.ljmp 3,3,5
8.split 9,10
9.ppair 45,46
10.lsplit 4,4,13
11.prange 48,57
12.ljmp 4,4,10
13.match
其中“lsplit”表示循环开始,后面参数依次为循环次数上限、下限和循环结束的下一条指令地址;“prange 48,57”表示匹配ascii码介于48到57之间的字符;“ljmp”表示循环结束,后面的参数依次为循环次数上限、下限和循环起始指令地址;“ppair 45,46”表示匹配ascii码为54或46的字符;“match”表示匹配结束。
(2)CPU核根据待匹配文件信息向Flash控制器发送数据获取请求。
(3)Flash控制器根据数据获取请求从Flash阵列中获取待匹配数据,将待匹配数据发送给RE运算器。
(4)RE处理器接收所述指令序列、及所述待匹配数据,根据所述指令序列从所述待匹配数据中搜索符合指令序列的数据,并将搜索结果返回给RE编译器。若运算器包括16个运算单元,具体过程如下:
a)前缀检查:每16B数据为一组,因此输入数据分为三组“p:_444-555-1234”、“f:_246.555.8888”和“m:_1235554567”。过滤器按照“\d”规则对前缀进行匹配,只有偏移为3的“4”、偏移为19的“2”和偏移为35的“1”符合要求(见下划线处)。
b)多路调度器产生为三组数据分别产生三组16个伪随机洗牌的结果,因此偏移3、19、35分别进入不同的运算单元。否则,由于3、19、35除以16的余数均为3,则都会被发送给运算单元3,造成运算单元3繁忙,其他运算器空闲的状态。
b)以偏移为3为例,运算单元N根据指令序列依次对后续“246.555.8888”进行匹配,结果为匹配成功。
c)多级归并排序模块采用归并排序算法对16个运算单元的搜索结果进行排序。归并排序分为二级,{0,1,2,3}分为一组进行归并排序,以此类推,16个运算单元会得到4个结果,再将这个结果进行归并排序,系统最终输出的搜索结果({行号,偏移地址,长度})为:{0,3,12},{0,19,12},{0,35,10}。
d)RE处理器把搜索结果返回给RE编译器。RE编译器对搜索结果进行处理,并通过主机呈现给用户。
本发明实施搜索和查询是在离数据最近的存储设备或存储系统进行,无需将大量的数据调到服务器CPU内存,大大地减轻了服务器CPU的负载、提高了搜索查询速度,接近总线传输速度,与现有技术相比,查找速度可提高数十倍、甚至上百倍,从根本上解决了在大数据查找分析的存储瓶颈和存储系统与CPU接口的瓶颈问题,而且可根据用户的需求查找100%的匹配、部分匹配、带有通配符的字符串、变长的字符串、带有特殊字符的字符串等等,该搜索系统具有并行和流水线的特殊设计,有效提高了搜索查询速度,具有反向查找功能,根据字母出现的频率,在所查找的字符串内任意一点开始搜索,能快速在非结构化的数据里查找随机任意字符串。
以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。
Claims (10)
1.一种字符串的搜索系统,其特征在于,该搜索系统包括:RE搜索引擎,及位于固态硬盘上的CPU核、Flash控制器和Flash阵列;所述RE搜索引擎包括RE编译器和RE处理器,所述RE处理器设于固态硬盘上;
所述RE编译器用于获取用户输入的正则表达式和待匹配文件信息,将所述正则表达式编译成指令序列,把所述指令序列发送给RE处理器,把所述待匹配文件信息发送给CPU核;
所述RE处理器用于接收所述指令序列,及接收Flash控制器发送的根据CPU核的数据获取请求从Flash阵列中获取的待匹配数据,从所述待匹配数据中搜索符合所述指令序列的数据,并将搜索结果返回给RE编译器;所述数据获取请求由CPU核根据所述待匹配文件信息向Flash控制器发送。
2.根据权利要求1所述的一种字符串的搜索系统,其特征在于,所述RE编译器包括编译预处理模块、词法分析模块、语法分析模块和随机数产生模块,编译预处理模块用于对用户输入的正则表达式进行输入合法性检查和优化处理;词法分析模块和语法分析模块用于将经过优化的正则表达式翻译成指令序列;RE编译器还包括随机数产生模块,用于产生在预置数值范围的预置个数的随机数,作为RE处理器中的初始随机种子。
3.根据权利要求2所述的一种字符串的搜索系统,其特征在于,所述RE处理器包括数据过滤模块、多路调度模块、运算模块和多级归并排序模块:
所述数据过滤模块用于根据所述指令序列中的前缀匹配规则,结合正则表达式的字边界规则或一位负向零宽断言对所述待匹配数据进行过滤;
所述多路调度模块用于利用所述初始随机种子采用伪随机洗牌算法得到运算模块中的运算单元的调度结果;
所述运算模块包括若干个的运算单元,用于根据调度结果按照指令序列中的指令编码和操作数完成过滤后的待匹配数据的搜索运算;
所述多级归并排序模块对搜索运算产生的结果按照偏移地址从小到大的顺序排列得到搜索结果,并把所述搜索结果返回给RE编译器。
4.根据权利要求3所述的一种字符串的搜索系统,其特征在于,所述RE编译器位于主机上或所述固态硬盘的CPU核上,主机与固态硬盘通过PCIe接口进行数据传输。
5.根据权利要求2所述的一种字符串的搜索系统,其特征在于,所述RE编译器在主机上由C语言实现。
6.根据权利要求3所述的一种字符串的搜索系统,其特征在于,所述RE处理器基于FPGA由硬件描述语言Verilog或VHDL实现。
7.根据权利要求3所述的一种字符串的搜索系统,其特征在于,所述运算模块包括16个运算单元。
8.根据权利要求3所述的一种字符串的搜索系统,其特征在于,所述多级归并排序模块由级联的多路归并排序算法实现。
9.根据权利要求2所述的一种字符串的搜索系统,其特征在于,所述编译预处理模块还用于将正则表达式中的重复操作进行展开,语法错误检查,对于纯字符的匹配快速生成指令序列。
10.一种基于如权利要求1至9任意一项所述的字符串的搜索系统的一种字符串的搜索方法,其特征在于,该搜索方法包括:
RE编译器获取用户输入的正则表达式和待匹配文件信息,将所述正则表达式编译成指令序列,把所述指令序列发送给RE处理器,把所述待匹配文件信息发送给CPU核;
CPU核根据所述待匹配文件信息向Flash控制器发送数据获取请求;
Flash控制器根据所述数据获取请求从Flash阵列中获取待匹配数据,把所述待匹配数据发送给RE处理器;
RE处理器接收所述指令序列和所述待匹配数据,从所述待匹配数据中搜索符合所述指令序列的数据,并将搜索结果返回给RE编译器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710262622.5A CN107122222B (zh) | 2017-04-20 | 2017-04-20 | 一种字符串的搜索系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710262622.5A CN107122222B (zh) | 2017-04-20 | 2017-04-20 | 一种字符串的搜索系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107122222A CN107122222A (zh) | 2017-09-01 |
CN107122222B true CN107122222B (zh) | 2019-02-19 |
Family
ID=59725809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710262622.5A Active CN107122222B (zh) | 2017-04-20 | 2017-04-20 | 一种字符串的搜索系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107122222B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109901796A (zh) * | 2019-02-19 | 2019-06-18 | 武汉轻工大学 | 基于外存的排序选择方法、装置、外存储设备及存储介质 |
CN110795626A (zh) * | 2019-10-28 | 2020-02-14 | 南京弹跳力信息技术有限公司 | 大数据处理方法及系统 |
CN111949836A (zh) * | 2020-07-31 | 2020-11-17 | 上海中通吉网络技术有限公司 | 正则表达式的应用方法及系统 |
CN112307277A (zh) * | 2020-09-29 | 2021-02-02 | 西安赢瑞电子有限公司 | 一种汉字串匹配预判方法 |
CN112732796B (zh) * | 2021-01-23 | 2023-01-24 | 河北省科学院应用数学研究所 | 一种模糊查询匹配方法 |
CN113392286B (zh) * | 2021-06-11 | 2022-02-11 | 深圳市宏博信息科技有限公司 | 大数据信息采集系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013149269A (ja) * | 2013-03-28 | 2013-08-01 | Bank Of Tokyo-Mitsubishi Ufj Ltd | 検索装置 |
CN103810229A (zh) * | 2012-11-01 | 2014-05-21 | 辉达公司 | 用于实施字符串搜索的系统、方法和计算机程序产品 |
CN105956067A (zh) * | 2016-04-27 | 2016-09-21 | 北京小米移动软件有限公司 | 资源搜索方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7225188B1 (en) * | 2002-02-13 | 2007-05-29 | Cisco Technology, Inc. | System and method for performing regular expression matching with high parallelism |
WO2005026925A2 (en) * | 2002-05-21 | 2005-03-24 | Washington University | Intelligent data storage and processing using fpga devices |
US7685254B2 (en) * | 2003-06-10 | 2010-03-23 | Pandya Ashish A | Runtime adaptable search processor |
CN101360088B (zh) * | 2007-07-30 | 2011-09-14 | 华为技术有限公司 | 正则表达式编译、匹配系统及编译、匹配方法 |
WO2011011916A1 (zh) * | 2009-07-29 | 2011-02-03 | 华为技术有限公司 | 正则表达式匹配方法和系统及查找装置 |
CN102023858A (zh) * | 2010-12-03 | 2011-04-20 | 上海交通大学 | 软硬件协同工作的字符匹配系统及其匹配方法 |
US9658977B2 (en) * | 2013-03-15 | 2017-05-23 | Micron Technology, Inc. | High speed, parallel configuration of multiple field programmable gate arrays |
CN103617226B (zh) * | 2013-11-25 | 2017-06-20 | 华为技术有限公司 | 一种正则表达式匹配方法及装置 |
-
2017
- 2017-04-20 CN CN201710262622.5A patent/CN107122222B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810229A (zh) * | 2012-11-01 | 2014-05-21 | 辉达公司 | 用于实施字符串搜索的系统、方法和计算机程序产品 |
JP2013149269A (ja) * | 2013-03-28 | 2013-08-01 | Bank Of Tokyo-Mitsubishi Ufj Ltd | 検索装置 |
CN105956067A (zh) * | 2016-04-27 | 2016-09-21 | 北京小米移动软件有限公司 | 资源搜索方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107122222A (zh) | 2017-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107122222B (zh) | 一种字符串的搜索系统及方法 | |
WO2021083239A1 (zh) | 一种进行图数据查询的方法、装置、设备及存储介质 | |
US10445323B2 (en) | Association rule mining with the micron automata processor | |
US20120323919A1 (en) | Distributed reverse semantic index | |
US20160098450A1 (en) | Querying input data | |
CN104504150A (zh) | 新闻舆情监测系统 | |
US8688685B2 (en) | Accelerated searching of substrings | |
CN108255602B (zh) | 任务组合方法及终端设备 | |
CN102810096A (zh) | 一种基于单字索引系统的检索方法和装置 | |
CN103279478A (zh) | 一种基于分布式互信息文档特征提取方法 | |
CN102163226A (zh) | 基于映射-化简和分词及邻接排序去重方法 | |
CN107436911A (zh) | 模糊查询方法、装置及查询系统 | |
CN107038225A (zh) | 信息智能检索系统的检索方法 | |
CN110059129A (zh) | 数据存储方法、装置及电子设备 | |
CN104899214B (zh) | 一种建立输入建议的数据处理方法和系统 | |
Huang et al. | A scalable, high-performance customized priority queue | |
CN110837584A (zh) | 一种分块并行构造后缀数组的方法及系统 | |
Polig et al. | Giving text analytics a boost | |
Polig et al. | Compiling text analytics queries to FPGAs | |
CN112347126B (zh) | 大数据处理方法、装置、设备及介质 | |
US8484221B2 (en) | Adaptive routing of documents to searchable indexes | |
Ulmer et al. | Massively parallel acceleration of a document-similarity classifier to detect web attacks | |
Aslam et al. | Pre‐filtering based summarization for data partitioning in distributed stream processing | |
Ahmed et al. | Hardware based string matching algorithms: A survey | |
Tang et al. | A real-time updatable FPGA-based architecture for fast regular expression matching |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 518000 3501, venture capital building, No. 9, Tengfei Road, huanggekeng community, Longcheng street, Longgang District, Shenzhen, Guangdong Province Patentee after: Shenzhen Dapu Microelectronics Co.,Ltd. Country or region after: China Address before: 518000 503, block B, building 2, Huangge North Road, Longcheng street, Longgang District, Shenzhen, Guangdong Patentee before: SHENZHEN DAPU MICROELECTRONICS Co.,Ltd. Country or region before: China |