一种二维过滤器的生成方法、查询方法及装置制造方法

文档序号:6625153阅读:401来源:国知局
一种二维过滤器的生成方法、查询方法及装置制造方法
【专利摘要】本发明公开了一种二维过滤器的生成方法、查询方法及装置,在该方案中,一个二维过滤器包括二维矩阵,二维矩阵中可以与多个键值元素组相链接,因此,提高了过滤器的灵活性,进一步的,查询键值元素是否属于多个键值元素组包括的键值元素时,只需要基于这个二维过滤器查询就可以了,没必要生成与每一个键值元素组分别对应的布隆过滤器,并且在查询键值元素是否属于多个键值元素组包括的键值元素时,不需要分别基于多个布隆过滤器一一进行查询,因此,还解决了目前查询效率较低的缺陷。
【专利说明】一种二维过滤器的生成方法、查询方法及装置

【技术领域】
[0001] 本发明涉及元素查询匹配的【技术领域】,特别是涉及一种二维过滤器的生成、查询 方法及装置。

【背景技术】
[0002] 在设计计算机软件时,经常要判断一个元素是否在一个集合中。比如在字处理软 件中,需要检查一个英语单词是否拼写正确(也就是要判断它是否在已知的字典中);又比 如在URL (Universal Resource Locator,统一资源定位符)过滤软件中,判断一个URL是 否在过滤名单中等等。最直接的方法就是将集合中的全部元素存储在计算机中,遇到一个 新元素时,将它和集合中的元素进行直接比较即可。为了提高查找的速度,通常使用哈希 表(Hash Table)来存储集合。哈希表,是一种根据元素的关键码值来快速映射其存储位置 的数据结构,这个映射函数也就是通常我们所说的哈希函数。哈希表的结构如图IA所示, 集合中的元素首先经过哈希函数得到其哈希位置,然后将元素记录到该位置的哈希链表 中。图IA中,假设哈希函数为HASH,并且A1、A2,…A8是集合中的元素,那么从图中可看 出 HASH (Al) =HASH (A2) =Hl ,HASH (A3) =HASH (A4) =H2, HASH (A5) =HASH (A6) =H3, HASH(A7) = HASH(A8) = H4。
[0003] 哈希表的好处是能够快速准确的判断元素是否在集合中,缺点就是需要较大的存 储空间。为了节省存储空间,一维布隆过滤器由巴顿布隆于一九七零年提出,其原理如下 : 一个一维布隆过滤器由k个相互独立的哈希函数hi, h2,......,hk和一个长度为m的位向 量组成,其中,每个哈希函数的值域均为{〇,1,……,m-l},又因为一个字节有8个比特位, 因此位向量实际占的内存空间为m/8个字节,位向量的所有的位均初始化为0。集合S = {si, s2, ......,sn},用k个哈希函数对集合S中的每一个元素计算一个哈希序列(hi (s), h2(s),……,hk(s)),然后将位向量中对应的哈希序列位设为1,则称该布隆过滤器装入了 数据元素集合S,或者说该布隆过滤器表示了数据元素集合S。例如若hi (si) =5,则将位 向量的第6位设为l,h2(sl) = 10,则将位向量的第11位设为1,直到hk(sl) = n-1,将位 向量的第n位设为1,则称布隆过滤器中装入了数据元素sl,当集合S中的每一个数据元素 均装入布隆过滤器中,则称布隆过滤器表示了数据元素集合S。当查询某个数据元素是否 在集合S中时,用同样的k个哈希函数对数据元素计算一个哈希序列,如果哈希序列所对应 的位向量上的每一位均为1,则认为该数据元素属于S,否则不属于S。与完全存储数据相 t匕,采用布隆过滤器,能够节省存储空间,使用布隆过滤器绝不会漏掉任何一个属于集合中 的元素。
[0004] 下面结合垃圾Email地址的例子,对布隆过滤器做一个简单的描述。
[0005] 假定垃圾Email地址的数量有一亿个,先建立一个长度为十六亿比特的位向量, 即两亿字节的向量,然后将这十六亿个二进制位全部初始化为零。对于每一个已知的垃圾 Email地址,用八个不同的哈希函数(F1,F2,……,F8)产生八个哈希值(f 1,f2,……,f8), 将这八个哈希值对应的位向量的位置全部置1。将这一亿个垃圾Email地址都进行这样的 处理后,一个针对这些垃圾Email地址的布隆过滤器就生成了。如图IB所示,为某一个垃 圾Email地址采用布隆过滤器表示的示例图,对于垃圾Email地址XXX0163. com,采用八个 不同的哈希函数(F1,F2,……,F8)产生八个哈希值(fl,f2,……,f8),将这八个哈希值对 应的位向量的位置全部置1,则称布隆过滤器中装入了该垃圾邮件地址。
[0006] 以上生成的布隆过滤器是针对一个键值元素组的,也就是说,一个布隆过滤器只 能与一个键值元素组相链接,有几个键值元素组就要生成几个布隆过滤器,因此,存在布隆 过滤器灵活性较差的缺陷。


【发明内容】

[0007] 本发明实施例提供一种二维过滤器的生成、查询方法及装置,用以提高布隆过滤 器的灵活性。
[0008] 本发明实施例提供的具体技术方案如下:
[0009] 第一方面,提供一种二维过滤器的生成方法,包括:
[0010] 建立包括至少两个行向量和至少两个列向量的二维矩阵;
[0011] 确定哈希函数集合,其中,所述哈希函数集合中的每一个哈希函数与至少一个键 值元素组相对应,所述哈希函数集合中的任一哈希函数对对应的至少一个键值元素组中的 任一键值元素的第一子键值元素进行哈希运算得到第一哈希值、对所述任一键值元素的第 二子键值元素进行哈希运算得到第二哈希值,所述第一哈希值为小于或等于所述行向量的 长度的正整数,所述第二哈希值为小于或等于所述列向量的长度的正整数;
[0012] 生成包括所述二维矩阵和所述哈希函数集合的二维过滤器。
[0013] 结合第一方面,在第一方面的第一种可能的实现方式中,所述行向量的长度和所 述列向量的长度均大于或等于#;
[0014]其中,Sr为所述所有键值元素组包括的所有键值元素的数量;或者,Sr为所述所 有键值元素组包括的所有键值元素经过查询条件过滤后得到的键值元素的数量。
[0015] 结合第一方面,或者第一方面的第一种可能的实现方式,在第一方面的第二种可 能的实现方式中,所述第一子键值元素包括所述任一键值元素用二进制表示时的所有奇数 位组成的键值元素,所述第二子键值元素包括所述任一键值元素用二进制表示时的所有偶 数位组成的键值元素;或者
[0016] 所述第一子键值元素包括所述任一键值元素用二进制表示时的第1位至第K位组 成的键值元素,所述第二子键值元素包括所述任一键值元素用二进制表示时的第K+1位至 第N位组成的键值元素,N为所述任一键值元素用二进制表示时的位数,I < K < N,K为正 整数。
[0017] 结合第一方面,或者第一方面的第一至第二种可能的实现方式,在第一方面的第 三种可能的实现方式中,还包括:
[0018] 将所述二维矩阵中的任意一行向量和任意一列向量所确定的元素初始化为第一 预设标识。
[0019] 第二方面,提供一种利用第一方面,或者第一方面的第一至第三种可能的实现方 式生成的二维过滤器查询键值元素的方法,包括:
[0020] 从所述哈希函数集合中确定出每一组键值元素组分别对应的哈希函数子集合;
[0021] 针对每一组键值元素组中的任一键值元素,根据该键值元素所属键值元素组对应 的哈希函数子集合计算出哈希值,将计算出的哈希值在所述二维矩阵中所处位置对应的元 素设置为第二预设标识;
[0022] 针对待查询的键值元素,确定所述待查询的键值元素所属键值元素组对应的哈希 函数子集合,并根据所述对应的哈希函数子集合,计算所述待查询的键值元素的哈希值;
[0023] 获取所述待查询的键值元素的哈希值在所述二维矩阵中所处位置对应的元素;
[0024] 当所述获取的元素为所述待查询的键值元素的哈希值在所述二维矩阵中所处位 置对应的第二预设标识时,确定所述待查询的键值元素属于二维过滤器表示的键值元素集 合。
[0025] 结合第二方面,在第二方面的第一种可能的实现方式中,任意两个不相同的键值 元素组分别对应的哈希函数子集合中包括的哈希函数不同;或者
[0026] 任意两个不相同的键值元素组分别对应的哈希函数子集合中包括的哈希函数相 同,哈希函数的排列方式不同。
[0027] 结合第二方面,或者第二方面的第一种可能的实现方式,在第二方面的第二种可 能的实现方式中,计算所述待查询的键值元素的哈希值,具体包括:
[0028] 基于所述待查询的键值元素所属键值元素组对应的哈希函数子集合,对所述待查 询的键值元素的第一子键值元素计算得到第一哈希值;
[0029] 基于所述待查询的键值元素所属键值元素组对应的哈希函数子集合,对所述待查 询的键值元素的第二子键值元素计算得到第二哈希值。
[0030] 结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式 中,获取所述待查询的键值元素的哈希值在所述二维矩阵中所处位置对应的元素,具体包 括:
[0031] 获取所述二维矩阵中以所述第一哈希值为行、所述第二哈希值为列的元素;或者, 获取所述二维矩阵中以所述第二哈希值为行、所述第一哈希值为列的元素。
[0032] 第三方面,提供一种二维过滤器的生成装置,包括:
[0033] 建立单元,用于建立包括至少两个行向量和至少两个列向量的二维矩阵;
[0034] 确定单元,用于确定哈希函数集合,其中,所述哈希函数集合中的每一个哈希函数 与至少一个键值元素组相对应,所述哈希函数集合中的任一哈希函数对对应的至少一个键 值元素组中的任一键值元素的第一子键值元素进行哈希运算得到第一哈希值、对所述任一 键值元素的第二子键值元素进行哈希运算得到第二哈希值,所述第一哈希值为小于或等于 所述行向量的长度的正整数,所述第二哈希值为小于或等于所述列向量的长度的正整数;
[0035] 生成单元,用于生成包括所述二维矩阵和所述哈希函数集合的二维过滤器。
[0036] 结合第三方面,在第三方面的第一种可能的实现方式中,所述建立单元生成的二 维矩阵包括的行向量的长度和所述列向量的长度均大于或等于
[0037]其中,Sr为所述所有键值元素组包括的所有键值元素的数量;或者,Sr为所述所 有键值元素组包括的所有键值元素经过查询条件过滤后得到的键值元素的数量。
[0038] 结合第三方面,或者第三方面的第一种可能的实现方式,在第三方面的第二种可 能的实现方式中,所述确定单元得到的第一子键值元素包括所述任一键值元素用二进制表 示时的所有奇数位组成的键值元素,所述确定单元得到的第二子键值元素包括所述任一键 值元素用二进制表示时的所有偶数位组成的键值元素;或者
[0039] 所述确定单元得到的第一子键值元素包括所述任一键值元素用二进制表示时的 第1至位第K位组成的键值元素,所述确定单元得到的第二子键值元素包括所述任一键值 元素用二进制表示时的第K+1位至第N位组成的键值元素,N为所述任一键值元素用二进 制表示时的位数,1彡K彡N,K为正整数。
[0040] 结合第三方面,或者第三方面的第一至第二种可能的实现方式,在第三方面的第 三种可能的实现方式中,还包括初始化单元,用于将所述二维矩阵中的任意一行向量和任 意一列向量所确定的元素初始化为第一预设标识。
[0041] 第四方面,提供一种利用第三方面,或者第三方面的第一至第三种可能的实现方 式生成的二维过滤器查询键值元素的装置,包括:
[0042] 确定单元,用于从所述哈希函数集合中确定出每一组键值元素组分别对应的哈希 函数子集合;
[0043] 设置单元,用于针对每一组键值元素组中的任一键值元素,根据该键值元素所属 键值元素组对应的哈希函数子集合计算出哈希值,将计算出的哈希值在所述二维矩阵中所 处位置对应的元素设置为第二预设标识;
[0044] 计算单元,用于针对待查询的键值元素,确定所述待查询的键值元素所属键值元 素组对应的哈希函数子集合,并根据所述对应的哈希函数子集合,计算所述待查询的键值 元素的哈希值;
[0045] 获取单元,用于获取所述待查询的键值元素组的哈希值在所述二维矩阵中所处位 置对应的元素;
[0046] 查询单元,用于当所述获取的元素为所述待查询的键值元素的哈希值在所述二维 矩阵中所处位置对应的所述第二预设标识,确定所述待查询的键值元素属于二维过滤器表 示的键值元素集合。
[0047] 结合第四方面,在第四方面的第一种可能的实现方式中,所述确定单元确定出的 任意两个不相同的键值元素组分别对应的哈希函数子集合中包括的哈希函数不同;或者 [0048] 所述确定单元确定出的任意两个不相同的键值元素组分别对应的哈希函数子集 合中包括的哈希函数相同,哈希函数的排列方式不同。
[0049] 结合第四方面,或者第四方面的第一种可能的实现方式,在第四方面的第二种可 能的实现方式中,所述计算单元具体用于:
[0050] 基于所述待查询的键值元素所属键值元素组对应的哈希函数子集合,对所述待查 询的键值元素的第一子键值元素计算得到第一哈希值;
[0051] 基于所述待查询的键值元素所属键值元素组对应的哈希函数子集合,对所述待查 询的键值元素的第二子键值元素计算得到第二哈希值。
[0052] 结合第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式 中,所述获取单元具体用于:
[0053] 获取所述二维矩阵中以所述第一哈希值为行、所述第二哈希值为列的元素;或者, 获取所述二维矩阵中以所述第二哈希值为行、所述第一哈希值为列的元素。
[0054] 本发明实施例中,一个二维过滤器包括二维矩阵,二维矩阵中可以与多个键值元 素组相链接,因此,提高了过滤器的灵活性。

【专利附图】

【附图说明】
[0055] 图IA为现有技术中哈希表的结构示意图;
[0056] 图IB为现有技术某一个垃圾Email地址采用过滤器表示的示例图;
[0057] 图2A为本发明实施例中生成二维过滤器的流程图;
[0058] 图2B为本发明实施例中二维矩阵的示意图;
[0059] 图3为本发明实施例中查询键值元素的流程图;
[0060] 图4为本发明实施例中生成二维过滤器及查询键值元素的实施例;
[0061] 图5为本发明实施例中生成二维过滤器的装置的功能结构示意图;
[0062] 图6为本发明实施例中生成二维过滤器的装置的实体结构示意图;
[0063] 图7为本发明实施例中查询键值元素的装置的功能结构示意图;
[0064] 图8为本发明实施例中查询键值元素的装置的实体结构示意图。

【具体实施方式】
[0065] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0066] 另外,本文中术语"系统"和"网络"在本文中常被可互换使用。本文中术语"和/ 或",仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以 表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字母"/",一般表 示前后关联对象是一种"或"的关系。
[0067] 下面结合说明书附图对本发明优选的实施方式进行详细说明,应当理解,此处所 描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况 下,本申请中的实施例及实施例中的特征可以相互组合。
[0068] 下面结合附图对本发明优选的实施方式进行详细说明。
[0069] 实施例一
[0070] 参阅图2A所示,本发明实施例中,二维过滤器的生成的详细流程如下:
[0071] 步骤200 :建立包括至少两个行向量和至少两个列向量的二维矩阵;
[0072] 步骤210 :确定哈希函数集合,其中,哈希函数集合中的每一个哈希函数与至少一 个键值元素组相对应,哈希函数集合中的任一哈希函数对对应的至少一个键值元素组中的 任一键值元素的第一子键值元素进行哈希运算得到第一哈希值、对对应键值元素组中的任 一键值元素的第二子键值元素进行哈希运算得到第二哈希值,第一哈希值均为小于或等于 行向量的长度的正整数,第二哈希值均为小于或等于列向量的长度的正整数;
[0073] 步骤220 :生成包括二维矩阵和哈希函数集合的二维过滤器。
[0074] 本发明实施例中,二维矩阵如图2B所示。
[0075] 本发明实施例中,二维矩阵的存储数据单元的数目为行向量的数量和列向量的数 量的乘积,如图2B中,二维矩阵的行向量的数量为9,列向量的数量为9,则二维矩阵的存储 数据单元的数目为81个。
[0076] 本发明实施例中,若建立的二维矩阵的行向量和列向量长度均小于#的话,键 值元素组中的键值元素载入过滤器时,不同键值元素载入至同一位置的概率较高,影响查 询的准确性,因此,为了提高查询的准确度,本发明实施例中,建立的二维矩阵的行向量和 列向量长度均大于^/^:,其中,Sr为所有键值元素组包括的所有键值元素的数量;或者,Sr 为所有键值元素组包括的所有键值元素经过查询条件过滤后得到的键值元素的数量。
[0077] 但是,行向量和列向量的长度越大的话,需要的存储空间就越大,因此,本发明实 施例中,为了提高存储空间的利用率,本发明实施例中,建立的二维矩阵的行向量和列向量 长度均等于
[0078] 本发明实施例中,第一键值元素和第二键值元素的形式有多种,可选的,可以采用 如下几种形式 :
[0079] 第一子键值元素包括任一键值元素用二进制表示时的所有奇数位组成的键值元 素,第二子键值元素包括任一键值元素用二进制表示时的所有偶数位组成的键值元素。
[0080] 其中,所有奇数位组成的键值元素可以为十进制,所有偶数位组成的键值元素可 以为十进制,当然,也可以为其他进制,在此不再进行一一详述。
[0081] 如键值元素为37348, 37348用二进制表示时为:1001000111100100,所有奇数位 为:01011010,所有偶数位为:10001100,所有奇数位表示的十进制数为90 (第一子键值元 素),所有偶数位表示的十进制数为140 (第二子键值元素)。
[0082] 或者也可以为如下形式:
[0083] 第一子键值元素包括任一键值元素用二进制表示时的第1至位第K位组成的键值 元素,第二子键值元素包括任一键值元素用二进制表示时的第K+1位至第N位组成的键值 元素,N为任一键值元素用二进制表示时的位数,I < K < N,K为正整数。
[0084] 其中,所有奇数位组成的键值元素可以为十进制,所有偶数位组成的键值元素可 以为十进制,当然,也可以为其他进制,在此不再进行一一详述。
[0085] 如键值元素为37348,37348用二进制表示时为:1001000111100100,第0至第7位 为:10010001,第8至第15位为:11100100,第0至第7位所表示的十进制数为90(第一子 键值元素),第8至第15位表示的十进制数为140 (第二子键值元素)。
[0086] 本发明实施例中,在建立包括行向量和列向量的二维矩阵之后,还包括:将二维矩 阵中的任意一行向量和任意一列向量所确定的元素初始化为第一预设标识。
[0087] 实施例二
[0088] 参阅图3所示,本发明实施例中,利用图2生成的二维过滤器查询键值元素的详细 流程如下:
[0089] 步骤300:从哈希函数集合中确定出每一组键值元素分别对应的哈希函数子集 合;
[0090] 步骤310:针对每一组键值元素中的任一键值元素,根据该键值元素所属键值元 素组对应的哈希函数子集合计算出哈希值,将计算出的哈希值在二维矩阵中所处位置对应 的元素设置为第二预设标识;
[0091] 步骤320:针对待查询的键值元素,确定待查询的键值元素所属键值元素组对应 的哈希函数子集合,并根据对应的哈希函数子集合,计算待查询的键值元素的哈希值;
[0092] 步骤330:获取待查询的键值元素的哈希值在二维矩阵中所处位置对应的元素;
[0093] 步骤340:当获取的元素为与待查询的键值元素的哈希值在二维矩阵中所处位置 相对应的第二预设标识时,确定待查询的键值元素属于二维过滤器表示的键值元素集合。[0094] 若两类不相同的键值元素对应的哈希函数子集合相同的话,载入二维过滤器时的 位置相同,那么不同的键值元素对应二维过滤器的同一位置,这样,查询的准确性较低,为 了提高查询的准确度,本发明实施例中,任意两个不相同的键值元素组分别对应的哈希函 数子集合中包括的哈希函数不同;或者
[0095] 任意两个不相同的键值元素组分别对应的哈希函数子集合中包括的哈希函数相 同,哈希函数的排列方式不同。
[0096] 例如:第一键值元素组是关于地区的销售表,第二键值元素组是关于月份的销售 表,那么第一键值元素组所对应的哈希函数子集合和第二键值元素组所对应的哈希函数子 集合是不相同的。
[0097] 本发明实施例中,计算待查询的键值元素的哈希值的方式有多种,可选的,可以采 用如下方式:
[0098] 基于待查询的键值元素所属键值元素组对应的哈希函数子集合,对待查询的键值 元素的第一子键值元素计算得到第一哈希值;
[0099] 基于待查询的键值元素所属键值元素组对应的哈希函数子集合,对待查询的键值 元素的第二子键值元素计算得到第二哈希值。
[0100] 当然,此处的第一子键值元素也可以包括任一键值元素用二进制表示时的所有奇 数位组成的键值元素,第二子键值元素包括任一键值元素用二进制表示时的所有偶数位组 成的键值元素;或者
[0101] 第一子键值元素包括任一键值元素用二进制表示时的第1至位第K位组成的键值 元素,第二子键值元素包括任一键值元素用二进制表示时的第K+1位至第N位组成的键值 元素,N为任一键值元素用二进制表示时的位数,I < K < N,K为正整数。
[0102] 此处第一子键值元素具体的表示形式与实施例中的第一子键值元素的表示形式 相同。
[0103] 本发明实施例中,获取待查询的键值元素的哈希值在二维矩阵中所处位置对应的 元素的方式有多种,可选的,可以采用如下方式:
[0104] 获取二维矩阵中以第一哈希值为行、第二哈希值为列的元素;或者,获取二维矩阵 中以第二哈希值为行、第一哈希值为列的元素。
[0105] 例如,任一键值元素的第一子键值元素为90、第二子键值元素为140,该任一键值 元素对应的哈希函数子集合为(hl、h2、h3),(hl、h2、h3)对90计算得到的第一哈希值分别 为6、128、55,(hi、h2、h3)对140计算得到的第二哈希值分别为0、101、46,那么,任一键值 元素在二维矩阵中所处的位置为(6、0)、(6、101)、(6、46)、(128、0)、(128、101)、(128、46)、 (55、0)、(55、101)、(55、46),那么把这些位置对应的元素都设置为第二预设标识,或者,任 一键值元素在二维矩阵中所处的位置为(〇、6)、(101、6)、(46、4)、(0、128)、(101、128)、(46、 128)、(0、55)、(101、55)、(46、55),那么把这些位置对应的元素都设置为第二预设标识。 [0106] 在实施例二中,查询键值元素是否属于多个键值元素组包括的键值元素时,只需 要基于这个二维过滤器查询就可以了,没必要生成与每一个键值元素组分别对应的布隆过 滤器,并且在查询键值元素是否属于多个键值元素组包括的键值元素时,不需要分别基于 多个布隆过滤器一一进行查询,因此,还解决了目前查询效率较低的缺陷。
[0107] 在实施例一和实施例二中讲述的以二维矩阵为例进行说明,当然,还可以是三维 矩阵,四维矩阵等多维矩阵,生成多维矩阵的过程与生成二维矩阵的过程类似,且基于多维 矩阵的查询过程,和基于二维矩阵的查询过程类似,在此不再进行一一详述。
[0108] 为了更好地理解本发明实施例,以下给出具体应用场景,针对查询键值元素的过 程,作出进一步详细描述,如图4所示:
[0109] 实施例三
[0110] 步骤400 :建立包括三个行向量和三个列向量的二维矩阵;
[0111] 步骤410 :确定哈希函数集合,生成包括二维矩阵和哈希函数集合的二维过滤器;
[0112] 其中,哈希函数集合中的每一个哈希函数与至少一个键值元素组相对应,哈希函 数集合中的任一哈希函数对对应的至少一个键值元素组中的任一键值元素的第一子键值 元素进行哈希运算得到第一哈希值、对对应键值元素组中的任一键值元素的第二子键值元 素进行哈希运算得到第二哈希值,第一哈希值均为小于或等于行向量的长度的正整数,第 二哈希值均为小于或等于列向量的长度的正整数;
[0113] 且该步骤确定的哈希函数集合包括10个哈希函数:hl、h2、h3、h4、h5、h6、h7、h8、 h9、hl0。
[0114] 步骤420:将二维矩阵中的任意一行向量和任意一列向量所确定的元素初始化为 第一预设标识;
[0115] 步骤430:从确定的哈希函数集合中确定出两个键值元素组分别对应的哈希函数 子集合;
[0116] 步骤440:针对两个键值元素组中的任意一键值元素,根据该键值元素所属键值 元素组对应的哈希函数子集合计算出哈希值,并将计算出的哈希值在二维矩阵中所处位置 对应的元素预设为第二预设标识;
[0117] 步骤450:针对待查询的键值元素,确定待查询的键值元素所属键值元素组对应 的哈希函数子集合,并根据对应的哈希函数子集合,计算待查询的键值元素的哈希值;
[0118] 步骤460:获取待查询的键值元素的哈希值在二维矩阵中所处位置对应的元素;
[0119] 步骤470:判断获取的元素是否为与待查询的键值元素的哈希值在二维矩阵中所 处位置相对应的第二预设标识,若是,确定待查询的键值元素属于二维过滤器表示的键值 元素集合;否则,确定待查询的键值元素不属于二维过滤器表示的键值元素集合。
[0120] 基于上述技术方案,参阅图5所示,本发明实施例提供一种二维过滤器的生成装 置,该生成装置包括建立单元50、确定单元51、生成单元52,其中:
[0121] 建立单元50,用于建立包括至少两个行向量和至少两个列向量的二维矩阵;
[0122] 确定单元51,用于确定哈希函数集合,其中,哈希函数集合中的每一个哈希函数与 至少一个键值元素组相对应,哈希函数集合中的任一哈希函数对对应的至少一个键值元素 组中的任一键值元素的第一子键值元素进行哈希运算得到第一哈希值、对对应键值元素组 中的任一键值元素的第二子键值元素进行哈希运算得到第二哈希值,第一哈希值均为小于 或等于行向量的长度的正整数,第二哈希值均为小于或等于列向量的长度的正整数;
[0123] 生成单元52,用于生成包括二维矩阵和哈希函数集合的二维过滤器。
[0124] 本发明实施例中,可选的,建立单元50生成的二维矩阵包括的行向量的长度和列 向量的长度均大于或等于
[0125] 其中,Sr为所有键值元素组包括的所有键值元素的数量;或者,Sr为所有键值元 素组包括的所有键值元素经过查询条件过滤后得到的键值元素的数量。
[0126] 本发明实施例中,可选的,确定单元51得到的第一子键值元素包括任一键值元素 用二进制表示时的所有奇数位组成的键值元素,确定单元51得到的第二子键值元素包括 任一键值元素用二进制表示时的所有偶数位组成的键值元素;或者
[0127] 确定单元51得到的第一子键值元素包括任一键值元素用二进制表示时的第1至 位第K位组成的键值元素,确定单元51得到的第二子键值元素包括任一键值元素用二进 制表示时的第K+1位至第N位组成的键值元素,N为任一键值元素用二进制表示时的位数, 1彡K彡N,K为正整数。
[0128] 本发明实施例中,进一步的,还包括初始化单元53,用于将二维矩阵中的任意一行 向量和任意一列向量所确定的元素初始化为第一预设标识。
[0129] 如图6所示,为本发明提供的二维过滤器的生成装置的实体装置图,二维过滤器 的生成装置包括至少一个处理器601,通信总线602,存储器603以及至少一个通信接口 604。
[0130] 其中,通信总线602用于实现上述组件之间的连接并通信,通信接口 604用于与外 部设备连接并通信。
[0131] 其中,存储器603用于存储需要执行的程序代码,当处理器601执行存储器603中 的程序代码时,实现如下功能:
[0132] 建立包括至少两个行向量和至少两个列向量的二维矩阵;
[0133] 确定哈希函数集合,其中,哈希函数集合中的每一个哈希函数与至少一个键值元 素组相对应,哈希函数集合中的任一哈希函数对对应的至少一个键值元素组中的任一键值 元素的第一子键值元素进行哈希运算得到第一哈希值、对对应键值元素组中的任一键值元 素的第二子键值元素进行哈希运算得到第二哈希值,第一哈希值均为小于或等于行向量的 长度的正整数,第二哈希值均为小于或等于列向量的长度的正整数;
[0134] 生成包括二维矩阵和哈希函数集合的二维过滤器。
[0135] 基于上述技术方案,参阅图7所示,本发明实施例提供一种查询键值元素的装置, 该查询键值元素的装置包括确定单元70、设置单元71、计算单元72、获取单元73,查询单元 74,其中:
[0136] 确定单元70,用于从哈希函数集合中确定出每一组键值元素分别对应的哈希函数 子集合;
[0137] 设置单元71,用于针对每一组键值元素中的任一键值元素,根据该键值元素所属 键值元素组对应的哈希函数子集合计算出哈希值,将计算出的哈希值在二维矩阵中所处位 置对应的元素设置为第二预设标识;
[0138] 计算单元72,用于针对待查询的键值元素,确定待查询的键值元素所属键值元素 组对应的哈希函数子集合,并根据对应的哈希函数子集合,计算待查询的键值元素的哈希 值;
[0139] 获取单元73,用于获取待查询的键值元素组的哈希值在二维矩阵中所处位置对应 的元素;
[0140] 查询单元74,用于当获取的元素为与待查询的键值元素的哈希值在二维矩阵中所 处位置相对应的第二预设标识,确定待查询的键值元素属于二维过滤器表示的键值元素集 合。
[0141] 本发明实施例中,可选的,确定单元70确定出的任意两个不相同的键值元素组分 别对应的哈希函数子集合中包括的哈希函数不同;或者
[0142] 确定单元70确定出的任意两个不相同的键值元素组分别对应的哈希函数子集合 中包括的哈希函数相同,哈希函数的排列方式不同。
[0143] 本发明实施例中,可选的,计算单元72具体用于:
[0144] 基于待查询的键值元素所属键值元素组对应的哈希函数子集合,对待查询的键值 元素的第一子键值元素计算得到第一哈希值;
[0145] 基于待查询的键值元素所属键值元素组对应的哈希函数子集合,对待查询的键值 元素的第二子键值元素计算得到第二哈希值。
[0146] 本发明实施例中,可选的,获取单元73具体用于:
[0147] 获取二维矩阵中以第一哈希值为行、第二哈希值为列的元素;或者,获取二维矩阵 中以第二哈希值为行、第一哈希值为列的元素。
[0148] 如图8所示,为本发明提供的二维过滤器的生成装置的实体装置图,二维过滤器 的生成装置包括至少一个处理器801,通信总线802,存储器803以及至少一个通信接口 804。
[0149] 其中,通信总线802用于实现上述组件之间的连接并通信,通信接口 804用于与外 部设备连接并通信。
[0150] 其中,存储器803用于存储需要执行的程序代码,当处理器801执行存储器803中 的程序代码时,实现如下功能:
[0151] 从哈希函数集合中确定出每一组键值元素分别对应的哈希函数子集合;
[0152] 针对每一组键值元素中的任一键值元素,根据该键值元素所属键值元素组对应的 哈希函数子集合计算出哈希值,将计算出的哈希值在二维矩阵中所处位置对应的元素设置 为第二预设标识;
[0153] 针对待查询的键值元素,确定待查询的键值元素所属键值元素组对应的哈希函数 子集合,并根据对应的哈希函数子集合,计算待查询的键值元素的哈希值;
[0154] 获取待查询的键值元素的哈希值在二维矩阵中所处位置对应的元素;
[0155] 当获取的元素为与待查询的键值元素的哈希值在二维矩阵中所处位置相对应的 第二预设标识时,确定待查询的键值元素属于二维过滤器表示的键值元素集合。
[0156] 综上所述,本发明实施例中,一个二维过滤器包括二维矩阵,二维矩阵中可以与多 个键值元素组相链接,因此,提高了过滤器的灵活性。
[0157] 进一步的,查询键值元素是否属于多个键值元素组包括的键值元素时,只需要基 于这个二维过滤器查询就可以了,没必要生成与每一个键值元素组分别对应的布隆过滤 器,并且在查询键值元素是否属于多个键值元素组包括的键值元素时,不需要分别基于多 个布隆过滤器一一进行查询,因此,还解决了目前查询效率较低的缺陷。
[0158] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程 图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一 流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机 程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器 以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用 于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中的功能的装置。
[0159] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特 定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指 令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或 多个方框中的功能。
[0160] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计 算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或 其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图 一个方框或多个方框中的功能的步骤。
[0161] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造 性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优 选实施例以及落入本发明范围的所有变更和修改。
[0162] 显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发 明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求 及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1. 一种二维过滤器的生成方法,其特征在于,包括: 建立包括至少两个行向量和至少两个列向量的二维矩阵; 确定哈希函数集合,其中,所述哈希函数集合中的每一个哈希函数与至少一个键值元 素组相对应,所述哈希函数集合中的任一哈希函数对对应的至少一个键值元素组中的任一 键值元素的第一子键值元素进行哈希运算得到第一哈希值、对所述任一键值元素的第二子 键值元素进行哈希运算得到第二哈希值,所述第一哈希值为小于或等于所述行向量的长度 的正整数,所述第二哈希值为小于或等于所述列向量的长度的正整数; 生成包括所述二维矩阵和所述哈希函数集合的二维过滤器。
2. 如权利要求1所述的方法,其特征在于,所述行向量的长度和所述列向量的长度均 大于或等于 其中,Sr为所述所有键值元素组包括的所有键值元素的数量;或者,Sr为所述所有键 值元素组包括的所有键值元素经过查询条件过滤后得到的键值元素的数量。
3. 如权利要求1或2所述的方法,其特征在于,所述第一子键值元素包括所述任一键值 元素用二进制表示时的所有奇数位组成的键值元素,所述第二子键值元素包括所述任一键 值元素用二进制表示时的所有偶数位组成的键值元素;或者 所述第一子键值元素包括所述任一键值元素用二进制表示时的第1位至第K位组成的 键值元素,所述第二子键值元素包括所述任一键值元素用二进制表示时的第K+1位至第N 位组成的键值元素,N为所述任一键值元素用二进制表示时的位数,I<K<N,K为正整数。
4. 如权利要求1-3任一项所述的方法,其特征在于,还包括: 将所述二维矩阵中的任意一行向量和任意一列向量所确定的元素初始化为第一预设 标识。
5.-种利用权利要求1-4生成的二维过滤器查询键值元素的方法,其特征在于,包括: 从所述哈希函数集合中确定出每一组键值元素组分别对应的哈希函数子集合; 针对每一组键值元素组中的任一键值元素,根据该键值元素所属键值元素组对应的哈 希函数子集合计算出哈希值,将计算出的哈希值在所述二维矩阵中所处位置对应的元素设 置为第二预设标识; 针对待查询的键值元素,确定所述待查询的键值元素所属键值元素组对应的哈希函数 子集合,并根据所述对应的哈希函数子集合,计算所述待查询的键值元素的哈希值; 获取所述待查询的键值元素的哈希值在所述二维矩阵中所处位置对应的元素; 当所述获取的元素为所述待查询的键值元素的哈希值在所述二维矩阵中所处位置对 应的第二预设标识时,确定所述待查询的键值元素属于二维过滤器表示的键值元素集合。
6. 如权利要求5所述的方法,其特征在于,任意两个不相同的键值元素组分别对应的 哈希函数子集合中包括的哈希函数不同;或者 任意两个不相同的键值元素组分别对应的哈希函数子集合中包括的哈希函数相同,哈 希函数的排列方式不同。
7. 如权利要求5或6所述的方法,其特征在于,计算所述待查询的键值元素的哈希值, 具体包括: 基于所述待查询的键值元素所属键值元素组对应的哈希函数子集合,对所述待查询的 键值元素的第一子键值元素计算得到第一哈希值; 基于所述待查询的键值元素所属键值元素组对应的哈希函数子集合,对所述待查询的 键值元素的第二子键值元素计算得到第二哈希值。
8. 如权利要求7所述的方法,其特征在于,获取所述待查询的键值元素的哈希值在所 述二维矩阵中所处位置对应的元素,具体包括: 获取所述二维矩阵中以所述第一哈希值为行、所述第二哈希值为列的元素;或者,获取 所述二维矩阵中以所述第二哈希值为行、所述第一哈希值为列的元素。
9.一种二维过滤器的生成装置,其特征在于,包括: 建立单元,用于建立包括至少两个行向量和至少两个列向量的二维矩阵; 确定单元,用于确定哈希函数集合,其中,所述哈希函数集合中的每一个哈希函数与至 少一个键值元素组相对应,所述哈希函数集合中的任一哈希函数对对应的至少一个键值元 素组中的任一键值元素的第一子键值元素进行哈希运算得到第一哈希值、对所述任一键值 元素的第二子键值元素进行哈希运算得到第二哈希值,所述第一哈希值为小于或等于所述 行向量的长度的正整数,所述第二哈希值为小于或等于所述列向量的长度的正整数; 生成单元,用于生成包括所述二维矩阵和所述哈希函数集合的二维过滤器。
10. 如权利要求9所述的装置,其特征在于,所述建立单元生成的二维矩阵包括的行向 量的长度和所述列向量的长度均大于或等于#; 其中,Sr为所述所有键值元素组包括的所有键值元素的数量;或者,Sr为所述所有键 值元素组包括的所有键值元素经过查询条件过滤后得到的键值元素的数量。
11. 如权利要求9或10所述的装置,其特征在于,所述确定单元得到的第一子键值元素 包括所述任一键值元素用二进制表示时的所有奇数位组成的键值元素,所述确定单元得到 的第二子键值元素包括所述任一键值元素用二进制表示时的所有偶数位组成的键值元素; 或者 所述确定单元得到的第一子键值元素包括所述任一键值元素用二进制表示时的第1至位第K位组成的键值元素,所述确定单元得到的第二子键值元素包括所述任一键值元素 用二进制表示时的第K+1位至第N位组成的键值元素,N为所述任一键值元素用二进制表 示时的位数,1彡K彡N,K为正整数。
12. 如权利要求9-11任一项所述的装置,其特征在于,还包括初始化单元,用于将所述 二维矩阵中的任意一行向量和任意一列向量所确定的元素初始化为第一预设标识。
13. -种利用权利要求9-12生成的二维过滤器查询键值元素的装置,其特征在于,包 括: 确定单元,用于从所述哈希函数集合中确定出每一组键值元素组分别对应的哈希函数 子集合; 设置单元,用于针对每一组键值元素组中的任一键值元素,根据该键值元素所属键值 元素组对应的哈希函数子集合计算出哈希值,将计算出的哈希值在所述二维矩阵中所处位 置对应的元素设置为第二预设标识; 计算单元,用于针对待查询的键值元素,确定所述待查询的键值元素所属键值元素组 对应的哈希函数子集合,并根据所述对应的哈希函数子集合,计算所述待查询的键值元素 的哈希值; 获取单元,用于获取所述待查询的键值元素组的哈希值在所述二维矩阵中所处位置对 应的元素; 查询单元,用于当所述获取的元素为所述待查询的键值元素的哈希值在所述二维矩阵 中所处位置对应的所述第二预设标识,确定所述待查询的键值元素属于二维过滤器表示的 键值元素集合。
14. 如权利要求13所述的装置,其特征在于,所述确定单元确定出的任意两个不相同 的键值元素组分别对应的哈希函数子集合中包括的哈希函数不同;或者 所述确定单元确定出的任意两个不相同的键值元素组分别对应的哈希函数子集合中 包括的哈希函数相同,哈希函数的排列方式不同。
15. 如权利要求13或14所述的装置,其特征在于,所述计算单元具体用于: 基于所述待查询的键值元素所属键值元素组对应的哈希函数子集合,对所述待查询的 键值元素的第一子键值元素计算得到第一哈希值; 基于所述待查询的键值元素所属键值元素组对应的哈希函数子集合,对所述待查询的 键值元素的第二子键值元素计算得到第二哈希值。
16. 如权利要求15所述的装置,其特征在于,所述获取单元具体用于: 获取所述二维矩阵中以所述第一哈希值为行、所述第二哈希值为列的元素;或者,获取 所述二维矩阵中以所述第二哈希值为行、所述第一哈希值为列的元素。
【文档编号】G06F17/30GK104317795SQ201410431085
【公开日】2015年1月28日 申请日期:2014年8月28日 优先权日:2014年8月28日
【发明者】张延松, 陈红, 李翠平, 孙东旺 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1