[发明专利]基于内存的散列表的构建方法、文本查找方法及相应装置在审
申请号: | 201410856681.1 | 申请日: | 2014-12-31 |
公开(公告)号: | CN104572983A | 公开(公告)日: | 2015-04-29 |
发明(设计)人: | 肖冰 | 申请(专利权)人: | 北京锐安科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F12/08 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 胡彬;路凯 |
地址: | 100044 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 内存 列表 构建 方法 文本 查找 相应 装置 | ||
技术领域
本发明实施例涉及计算机技术领域,尤其涉及基于内存的散列表的构建方法、文件查找方法及相应装置。
背景技术
散列函数是一种从任何一种数据中创建小的数字“指纹”的方法,可以把任何一种数据(例如消息)压缩成摘要。所述摘要,也即散列值,其基本特性包括:如果两个散列值是不同的,那么对应的两个原始数据也是不同的(同一散列函数),如果两个散列值相同,那么两个原始数据可能相同,也可能不同;典型的散列函数都是无限定义域和有限的值域,一般散列值的长度比原始值长度要小。
散列表技术是散列函数的一个主要应用,常用于数据的快速查找,其基本思想把数据在散列表中的存储位置和该数据的散列值之间建立一种映射关系,散列值在这种映射关系下的像,就是相应记录在散列表中的存储位置。
在通常情况下,散列函数是一个压缩映像,因此无论如何设计散列函数,也无法完全避免散列冲突(即不同数据的散列值相同)的问题。而链地址法(开散列法)是一种常见的解决冲突的方法,其做法是将所有冲突的数据链接在同一个单向链表中,并将散列表定义为由B(表长)个单表头指针组成的指针数据F[0,1,….,B-1]。
链地址法本身是内存利用率比较高的一种处理冲突方法。若选择的散列函数能使同义词(散列值相同的不同数据)的个数等于散列表的平均长度:n/B(n为数据的个数),则查找定位的时间将是一个小常数(与单向链表F[i]的最大长度相关)。
目前,海量数据处理中常用到文本的查找定位。采用上述链地址法,在内存中构建用于查找海量文本的散列表的方案,虽然在一定程度上提高了内存利用率,但其提高效果并不是十分显著,依然会占用较多内存。
发明内容
本发明实施例提供基于内存的散列表的构建方法、文件查找方法及相应装置,以更好的提高内存利用率,更加节约内存。
一方面,本发明实施例提供了一种基于内存的散列表的构建方法,该方法包括:
获取用于查找的文本数据;
使用预设的主散列函数,计算所述文本数据对应的主散列值,并根据设定的映射算法确定所述主散列值对应的散列表入口地址;
使用预设的至少一个从散列函数,计算所述文本数据对应的从散列值,并基于所述从散列值得到目标散列值;
将所述目标散列值存储至内存中与所述散列表入口地址对应的单向链表,以构建散列表。
另一方面,本发明实施例还提供了一种文件查找方法,该方法包括:
获取本次待查找的文本数据;
使用预设的主散列函数,计算所述文本数据对应的主散列值,并根据设定的映射算法确定所述主散列值对应的散列表入口地址;
使用预设的至少一个从散列函数,计算所述文本数据对应的从散列值,并基于所述从散列值得到目标散列值;
遍历内存中构建的散列表中与所述散列表入口地址对应的单向链表,查找所述单向链表中是否存在信息域包含有所述目标散列值的节点。
再一方面,本发明实施例还提供了一种基于内存的散列表的构建装置,该装置包括:
文本数据获取单元,用于获取用于查找的文本数据;
散列表入口地址确定单元,用于使用预设的主散列函数,计算所述文本数据对应的主散列值,并根据设定的映射算法确定所述主散列值对应的散列表入口地址;
目标散列值生成单元,用于使用预设的至少一个从散列函数,计算所述文本数据对应的从散列值,并基于所述从散列值得到目标散列值;
目标散列值存储单元,用于将所述目标散列值存储至内存中与所述散列表入口地址对应的单向链表,以构建散列表。再一方面,本发明实施例还提供了一种文件查找装置,该装置包括:
文本数据获取单元,用于获取本次待查找的文本数据;
散列表入口地址确定单元,用于使用预设的主散列函数,计算所述文本数据对应的主散列值,并根据设定的映射算法确定所述主散列值对应的散列表入口地址;
目标散列值生成单元,用于使用预设的至少一个从散列函数,计算所述文本数据对应的从散列值,并基于所述从散列值得到目标散列值;
目标散列值查找单元,用于遍历内存中构建的散列表中与所述散列表入口地址对应的单向链表,查找所述单向链表中是否存在信息域包含有所述目标散列值的节点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京锐安科技有限公司,未经北京锐安科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410856681.1/2.html,转载请声明来源钻瓜专利网。