一种非结构化数据快速检索的系统及方法

文档序号:6506250阅读:177来源:国知局
一种非结构化数据快速检索的系统及方法
【专利摘要】本发明公开一种非结构化数据快速检索的系统及方法,系统包括查询处理模块、查询条件解析模块、大数据存储模块、布隆过滤器过滤模块、索引建立模块和布隆过滤器构建模块。查询处理模块接收应用客户端的查询请求,从查询请求中获取查询条件,调用查询条件解析模块对查询条件进行解析和改造,使用布隆过滤器代替原始查询条件中的分词条件,生成基于布隆过滤器过滤记录标识的新查询条件;通过该条件查询数据记录表;对布隆过滤器及其他查询条件进行测试,并将符合全部查询条件的数据记录作为查询结果,返回给应用客户端。通过本发明的系统及方法,能够更加快速的判断一条数据记录是否符合分词条件,并且消耗更少的资源。
【专利说明】一种非结构化数据快速检索的系统及方法
【技术领域】
[0001]本申请属于信息【技术领域】,尤其涉及一种在大数据量存储中对非结构化数据进行快速检索的系统及方法。
【背景技术】
[0002]随着互联网的快速发展,网页、博客、社交网络、即时通信软件等应用迅速普及,产生了大量的非结构化文本数据,如何对这些文本数据进行快速有效的检索,成为了业界研究的热点。互联网搜索引擎通过对文本数据进行分词操作,建立从分词到文本标识的反向索引,通过这些索引,实现根据分词进行文本检索。虽然通过反向索引能够进行文本数据的检索,但是当用户检索的时候包含多个检索条件,或者检索条件中包含多个检索词的时候,需要进行大量的文本标识的比对工作,对系统资源的消耗比较大,性能较低。

【发明内容】

[0003]本专利申请要解决的技术问题是:提供一种非结构化数据快速检索的系统及方法,能够快速完成文本标识比对,从而更快的检索到符合条件的文本标识,并且消耗较少的系统资源。
[0004]为了解决上述技术问题,本专利申请提供了一种非结构化数据快速检索的系统及方法。本申请所述系统包括查询处理模块、查询条件解析模块、大数据存储模块、布隆过滤器过滤模块、索引建立模块和布隆过滤器构建模块。各模块功能如下:
[0005]查询处理模块接收应用客户端的查询请求,从查询请求中获取查询条件。
[0006]查询条件解析模块实现对查询条件的解析和对查询条件的改造,使用布隆过滤器代替原始查询条件中的分词条件,将客户端查询条件转换成对大数据存储模块中数据记录表的查询条件。
[0007]大数据存储模块负责索引数据和记录数据的存储,并根据查询条件对数据进行过滤,返回符合查询条件的数据。大数据存储模块包含反向索引表和数据记录表,反向索引表存储从分词到记录标识的反向索引以及布隆过滤器;数据记录表存储记录数据。其中,记录标识指给每条数据记录分配的唯一 ID。
[0008]布隆过滤器过滤模块完成使用布隆过滤器快速判断一条记录数据是否满足分词条件的功能。
[0009]索引建立模块将分词到记录标识对应关系以及对应的布隆过滤器组合在一起,构成包含布隆过滤器的反向索引数据,存入大数据存储中的反向索引表。
[0010]布隆过滤器构建模块完成对每个分词构建布隆过滤器的功能。
[0011]本申请所述的一种非结构化数据快速检索的方法为:
[0012]A、查询处理模块接收到应用客户端的查询请求以后,从查询请求中获取查询条件,并调用查询条件解析模块,对查询条件进行解析,查询条件解析模块从查询条件中分离出分词条件,形成分词列表:[0013]B、查询条件解析模块通过分词列表,查询大数据存储模块中的反向索引表,获取查询条件中所有分词对应的布隆过滤器;
[0014]C、查询条件解析模块结合原始查询条件和每个分词对应的布隆过滤器对原始查询条件进行重构,使用布隆过滤器代替原始查询条件中对应的分词条件,而多个查询条件之间的逻辑关系保持不变,形成基于布隆过滤器的查询条件;
[0015]D、查询处理模块使用基于布隆过滤器的查询条件对大数据存储模块中的数据记录表进行查询;大数据存储模块接收到基于布隆过滤器的查询条件以后,调用布隆过滤器过滤模块,使用基于布隆过滤器的查询条件中的布隆过滤器对数据记录中的记录标识进行包含关系测试,测试结果为真,则表明该记录标识包含在布隆过滤器中,进而表明数据符合分词条件,否则不符合;
[0016]E、大数据存储模块使用基于布隆过滤器的查询条件中布隆过滤器条件以外的其他查询条件对数据记录进行测试,如果数据记录符合这些查询条件,则测试结果为真,否则测试结果为假;
[0017]F、结合步骤D中布隆过滤器测试结果以及步骤E中其他查询条件的测试结果,按照原有的逻辑关系进行组合运算,根据运算结果判断数据记录是否符合全部的查询条件,并将符合条件的数据记录作为查询结果,返回给查询处理模块,由查询处理模块返回给应用客户端。
[0018]本专利申请的有益效果:
[0019]1、通过本专利申请,在文本标识比对的时候,只需要获取布隆过滤器,而不需要获取分词对应的文本标识,因此读取的数据量更少更集中,对于系统磁盘的读写压力更小;
[0020]2、通常的检索方法需要在查询条件中存储并传输大量的文本标识,而本专利申请中,只需要存储布隆过滤器,因此对于内存和网络读写的消耗更少;
[0021]3、本专利申请采用少量的位比对取代了字符串比对,因此消耗的计算资源更少,速度更快。
【专利附图】

【附图说明】
[0022]附图1为本专利申请的模块分布图
[0023]附图2为查询处理流程图
【具体实施方式】
[0024]本专利申请所述的一种非结构化数据快速检索的系统,其模块分布情况如附图1所示,包括查询处理模块、查询条件解析模块、大数据存储模块、布隆过滤器过滤模块、索引建立模块和布隆过滤器构建模块。
[0025]大数据存储模块包含反向索引表和数据记录表。反向索引表的数据更新步骤包括:
[0026]1、索引建立模块接收每条数据记录包含的所有分词条件,使用反向索引构建的方法生成从分词到记录标识的对应关系数据;
[0027]2、将对应关系数据发送给布隆过滤器构建模块,生成布隆过滤器;布隆过滤器的长度和包含该分词的数据记录个数成正比;使用该分词对应的每个记录标识构建出布隆过滤器的键值,并将所有的键值加入到布隆过滤器中;键值的构建方法可以采用业界常规构建方法,在此不再赘述;
[0028]3、将分词到记录标识对应关系以及对应的布隆过滤器组合在一起,构成包含布隆过滤器的反向索引数据,存入大数据存储中的反向索引表。
[0029]本专利申请所述的一种非结构化数据快速检索的方法,查询处理流程如附图2所示,具体包括如下步骤:
[0030]1、查询处理模块接收应用客户端的查询请求,从查询请求中获取查询条件,调用查询条件解析模块;
[0031]2、查询条件解析模块对查询条件进行解析。具体包括:
[0032]2.1查询条件解析模块首先分析查询条件,从查询条件中分离出包含的分词条件,形成分词列表,分词列表中的分词条件不重复;
[0033]2.2根据分词列表,查询大数据存储模块中分词到记录标识的反向索引表,获取所有分词条件对应的布隆过滤器。
[0034]3、查询条件解析模块对原始查询条件进行重构,使用布隆过滤器代替原始查询条件中的分词条件,而多个查询条件之间的逻辑关系保持不变,生成基于布隆过滤器的新查询条件;
[0035]4、查询处理模块使用基于布隆过滤器的查询条件对大数据存储模块中的数据记录表进行查询,大数据存储模块调用布隆过滤器过滤模块,使用基于布隆过滤器的查询条件中的布隆过滤器对数据记录中的记录标识进行包含性测试,测试结果为真,则表明数据可能符合分词条件,否则不符合。具体测试方法为:
[0036]布隆过滤器包含N(N>= I)个哈希散列函数,同时包含一个位向量。对键值进行测试的时候,使用哈希散列函数对键值进行散列,会得到N个哈希散列值;判断位向量中,和这N个哈希散列值对应的位置的值是I还是0,如果全部都是I,则测试通过,数据符合分词条件,否则不符合。
[0037]较佳的,在查询出布隆过滤器的同时,查询出分词对应的所有记录标识,在布隆过滤器测试结果为真的情况下进一步通过记录标识比对来确定记录标识是否真正符合条件,可以有效避免布隆过滤器误中的情况。
[0038]5、大数据存储模块使用查询条件中布隆过滤器以外的其他查询条件对数据记录进行测试,例如查询条件中,性别=’男’,则判断数据记录中‘性别’这一属性是否等于’男’,如果是,则测试结果为真,否则测试结果为假。
[0039]6、大数据存储模块结合步骤4中布隆过滤器的测试结果和步骤5中其他查询条件的测试结果按照原有的逻辑关系进行组合运算,根据运算结果判断数据记录是否符合全部的查询条件。例如:有’记录I’这样一条记录数据,基于布隆过滤器的查询条件为:(’布隆过滤器I’并且‘性别’=’男’),’布隆过滤器I’对于’记录I’的测试结果为’真’,同时’记录I’中’性别’属性等于’男’,则组合运算结果为真,表明’记录I’满足全部查询条件。之后,大数据存储模块将符合条件的数据记录作为查询结果,返回给查询处理模块,并由查询处理模块返回给应用客户端。
[0040]以上实施方案的说明只适用于帮助理解本专利申请的原理,同时对本领域的一般技术人员,依据本专利申请实施例,在【具体实施方式】以及应用范围上均会有改变之处,因此本说明书内容不应理解为对本专利申请的限制。
【权利要求】
1.一种非结构化数据快速检索的系统,其特征在于:包括查询处理模块、查询条件解析模块、大数据存储模块、布隆过滤器过滤模块、索引建立模块和布隆过滤器构建模块。
2.一种非结构化数据快速检索的方法,其特征在于,包括如下步骤: A、查询处理模块接收到应用客户端的查询请求以后,从查询请求中获取查询条件,并调用查询条件解析模块,对查询条件进行解析,查询条件解析模块从查询条件中分离出分词条件,形成分词列表; B、查询条件解析模块通过分词列表,查询大数据存储模块中的反向索引表,获取查询条件中所有分词对应的布隆过滤器; C、查询条件解析模块结合原始查询条件和每个分词对应的布隆过滤器对原始查询条件进行重构,使用布隆过滤器代替原始查询条件中对应的分词条件,而多个查询条件之间的逻辑关系保持不变,形成基于布隆过滤器的查询条件; D、查询处理模块使用基于布隆过滤器的查询条件对大数据存储模块中的数据记录表进行查询;大数据存储模块接收到基于布隆过滤器的查询条件以后,调用布隆过滤器过滤模块,使用基于布隆过滤器的查询条件中的布隆过滤器对数据记录中的记录标识进行包含关系测试,测试结果为真,则表明该记录标识包含在布隆过滤器中,进而表明数据符合分词条件,否则不符合; E、大数据存储模块使用基于布隆过滤器的查询条件中布隆过滤器条件以外的其他查询条件对数据记录进行测试,如果数据记录符合这些查询条件,则测试结果为真,否则测试结果为假; F、结合步骤D中布隆过滤器测试结果以及步骤E中其他查询条件的测试结果,按照原有的逻辑关系进行组合运算,根据运算结果判断数据记录是否符合全部的查询条件,并将符合条件的数据记录作为查询结果,返回给查询处理模块,由查询处理模块返回给应用客户端。
3.如权利要求2所述的一种非结构化数据快速检索的方法,其特征在于,所述步骤B中的反向索引表的数据更新过程如下: B1、索引建立模块接收每条数据记录包含的所有分词条件,使用反向索引构建的方法生成从分词到记录标识的对应关系数据; B2、将对应关系数据发送给布隆过滤器构建模块,生成分词对应的布隆过滤器; B3、将分词到记录标识对应关系以及对应的布隆过滤器组合在一起,构成包含布隆过滤器的反向索引数据,存入大数据存储中的反向索引表。
4.如权利要求3所述的一种非结构化数据快速检索的方法,其特征在于:所述步骤B2中的布隆过滤器的长度和包含该分词的数据记录个数成正比:使用该分词对应的每个记录标识构建出布隆过滤器的键值,并将所有的键值加入到对应的布隆过滤器中。
5.如权利要求2所述的一种非结构化数据快速检索的方法,其特征在于,所述步骤D进一步包括:在查询出布隆过滤器的同时,查询出分词对应的所有记录标识,在布隆过滤器测试结果为真的情况下进一步通过记录标识比对来确定记录标识是否真正符合条件。
【文档编号】G06F17/30GK103440249SQ201310308778
【公开日】2013年12月11日 申请日期:2013年7月23日 优先权日:2013年7月23日
【发明者】周帅锋, 赵智峰, 曹俊亮, 穆宁 申请人:南京烽火星空通信发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1