CN102663030A - 一种区间持久性top-k查询的双哈希表关联方法 - Google Patents

一种区间持久性top-k查询的双哈希表关联方法 Download PDF

Info

Publication number
CN102663030A
CN102663030A CN2012100802499A CN201210080249A CN102663030A CN 102663030 A CN102663030 A CN 102663030A CN 2012100802499 A CN2012100802499 A CN 2012100802499A CN 201210080249 A CN201210080249 A CN 201210080249A CN 102663030 A CN102663030 A CN 102663030A
Authority
CN
China
Prior art keywords
document
hash table
score
interval
time
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.)
Granted
Application number
CN2012100802499A
Other languages
English (en)
Other versions
CN102663030B (zh
Inventor
张勇
明华
邢春晓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN2012100802499A priority Critical patent/CN102663030B/zh
Publication of CN102663030A publication Critical patent/CN102663030A/zh
Application granted granted Critical
Publication of CN102663030B publication Critical patent/CN102663030B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种区间持久性top-k查询的双哈希表关联方法,包括:输入关键词和查询时间范围;创建倒排表,将查询时间分拆为多个间隔时间,并根据倒排表和间隔时间建立第一哈希表和第二哈希表;如果第二哈希表各倒排表中最后被查询记录的总得分小于当前被查询记录对应ID在第一哈希表中具有有效时间间隔的文档版本对应的被查询的相同文档ID在不同倒排表中的总得分,则按降序排列第二哈希表中各倒排表中最后被查询记录的总得分并输出前k个总得分对应的文档ID及其间隔时间;将具有相同文档ID对应的时间间隔相加,将相加的结果降序排列并输出前k个结果对应的文档ID。本发明实现了查询时间范围内文档版本的得分处于top-k结果集的时间长度满足阀值的方法。

Description

一种区间持久性top-k查询的双哈希表关联方法
技术领域
本发明涉及数据库以及查询领域,尤其涉及一种区间持久性top-k查询的双哈希表关联方法。
背景技术
随着互联网的迅猛发展以及信息量的爆炸性增长,精确搜索用户所需信息的难度越来越大,如何从海量数据中查找到用户最关心的信息已成为业界普遍关注的问题。因此,出现了top-k查询技术,即根据评分函数在潜在的数据空间中返回k个最重要的结果。此技术非常有效而且已经非常成熟,广泛应用于各个领域。有效地解决了从海量数据中精确查询的排名问题,与全文检索技术一起为数据库查询领域作出了巨大的贡献,深受用户欢迎。文档是记录各类信息的重要载体,其重要性不言而喻。企业特别是大中型企业,文档数据呈现一些新的特点:类型多样、数量日益剧增,版本更新频繁等等。大量的文档数据以及文档产生的不同版本对关键词的查询检索提出了新的难题:随着时间的推移,电子文档(包括企业文档、各类网站电子文档等)的内容不断地被更新或修改逐渐形成各种不同的版本,每个版本具有一个有效的时间间隔。一般而言,在此时间间隔内文档与关键词的匹配度恒定,而在此时间间隔外每个版本的内容与查询关键字的相关性(匹配度)不尽相同,正是由于这种相关性(匹配度)在查询条件的时间范围内存在不同,致使传统查询(如:top-k查询、全文检索等)方法都无法返回精确的结果。因此,引入了区间持久性top-k查询技术。此技术能返回长期处于top-k结果中表现主题一致的文档对象。弥补了top-k查询技术只能返回某一时间点的、(查询关键字与文档内容匹配度)得分不变的、前k个最重要结果的缺陷。区间持久性top-k查询能有效地查找到长期反映某一主题的文档对象,为文档的版本管理和涉及时间序列的版本查询等领域提供了一种有效的技术。
区间持久性top-k查询技术是针对文档的不同版本,查询关键字与文档内容的相关性得分随时间不同而不同的一种新型的查询技术。返回处于top-k结果列表中时间长度最长的k个记录。定义:假如一个文档集D由n个文档{d1,...,dn}组成,每个文档di∈D存在多个不同的版本
Figure BDA0000146336910000021
,每个版本vd∈d有一个有效的时间间隔[vd.tb,vd.te],假如同一文档的不同版本的时间间隔不重叠。设q为一查询(关键字集qW和时间间隔[q.tb,q.te])。给定一个整数k(0<k<n)和一个实数r(0<r≤1,r表示松弛因子,是一个可调整大小的变量),区间持久性top-k问题是为了找到所有的d∈D使得每一个文档d出现在top-k结果集中的时间总长度不于r×[q.te-q.tb]。
目前,国内基本还没有相关的研究,国外对区间持久性top-k查询技术研究尚处于初级阶段。相关的研究有一致top-k查询技术,但这种技术需要预先定义对象的排名,解决不了非预先定义(ad-hoc)的、查询关键字与文档内容匹配权重不同的查询问题。区间持久性top-k查询是关于文档版本的查询问题。算法包括:穷举法、贪婪法、动态自适应算法DDA(Dynamic Adaptive Algorithm)、BBA(Band based Algorithm)算法以及物化思想等。
穷举法和贪婪法需要将所有记录从头到尾检索一遍,时间效率极低。DDA是对究举法和贪婪法的改进,设置阀值以尽快结果查询,但是需要为每个元组记录上边界和下边界,将占据大量的存储空间,BBA算法是前几种算法的优化,同样需要大量的存储空间来保存候选带以及top-k带的记录段。这些算法能够实现区间持久性top-k查询,但存在某些方面的缺陷。
发明内容
针对现有技术中存在的上述问题,本发明提供了一种区间持久性top-k查询的双哈希表关联方法。
本发明提供了一种区间持久性top-k查询的双哈希表关联方法,包括:
步骤10,输入关键词和查询时间范围;
步骤11,创建倒排表,将查询时间分拆为多个间隔时间,并根据倒排表和间隔时间建立第一哈希表和第二哈希表;倒排表中记录文档ID、该文档ID的得分以及属于该文档ID的文档版本的有效间隔时间;第一哈希表记录具有有效时间间隔的文档版本对应的文档ID、各倒排表中最后被查询的记录的得分以及具有有效时间间隔的文档版本对应的被查询的相同文档ID在不同倒排表中的总得分,第二哈希表记录具有有效时间间隔的文档版本对应的文档ID、文档ID对应的倒排表ID和各倒排表中最后被查询记录的总得分;各倒排表中最后被查询记录的总得分为当前被查询记录的得分与其余倒排表中最后被查询记录得分之和,各倒排表中最后被查询的记录的得分对应于当前被查询的记录对应的文档ID;
步骤12,如果第二哈希表中各倒排表中最后被查询记录的总得分小于当前被查询记录对应ID在第一哈希表中具有有效时间间隔的文档版本对应的被查询的相同文档ID在不同倒排表中的总得分,则按降序排列第二倒排表中各倒排表中最后被查询记录的总得分并输出前k个总得分对应的文档ID及其间隔时间;
步骤13,将具有相同文档ID对应的时间间隔相加,将相加的结果降序排列并输出前k个结果对应的文档ID。
在一个示例中,文档的分值根据下述公式计算:
Figure BDA0000146336910000031
其中wik为具有该文档ID的文档的分值, w 1 ik = 0 , freq ik = 0 1 , freq ik ≥ 0 ,
Figure BDA0000146336910000033
freqik为关键字在文档中出现的频率,n为文档的总数,doctotalk为出现关键字的文档数量,p为关键字的权重。
在一个示例中,步骤11中,如果文档版本的有效时间未完全落入查询时间范围内,则对该文档进行时间裁剪。
在一个示例中,步骤11中,利用拉链法、多哈希法或开放地址法解决建立第一哈希表或第二哈希表的冲突。
在一个示例中,步骤11中,根据直接定址法、平方取中法、折叠法或除留余数法建立第一哈希表或第二哈希表。
在一个示例中,文档ID对应的最大得分为文档在倒排表中的原始得分与该文档在其它倒排表中最后读取记录的得分之和。
本发明实现了一个包含时间裁剪、时间间隔划分及整形化、阀值设置、双哈希表关联检索以及哈希冲突解决方案的区间持久性top-k查询技术的优化方案,针对文档版本更新频繁、关键词与文档内容相关性在时间序列中不一致的查询问题,实现了一种在查询时间范围内文档版本的得分处于top-k结果集的时间长度满足阀值的查询方法。
附图说明
下面结合附图来对本发明作进一步详细说明,其中:
图1为本发明的体系架构框图;
图2为本发明的区间持久性top-k查询示例图;
图3为本发明有效时间与查询时间剪切示例图;
图4为本发明的双哈希表结构示例图;
图5为本发明的双哈希表关联方法示例图。
具体实施方式
本发明提供一种双哈希表关联方法,可以实现对区间持久性top-k查询的有效优化,从而更好的服务于用户。
本发明为了更好地描述该方法,引入了许多符号,图中用字母来表示。查询条件用到的符号有:q表示一个查询条件,包含关键字集q.W和查询时间范围[q.tb,q.te]。前期准备工作用到的符号有:文档集D={d1,d2,...,dn}表示包含n个文档的文档集,w1 ik,w2 ik分别表示布尔型文本特征函数,TF-IDF文本特征函数。freqik表示绝对词频即关键词在文档中出现的频率(次数)。n表示文档集中文档的总数,doctotalk表示出现关键词k的文档数。p(0≤p≤1)表示权重变量,wik为文档di相对于关键词k的得分。倒排表创建部分用到的符号有:docID表示文档标识,score表示得分,文档版本的有效时间间隔[vd.tb,vd.te]。双哈希表关联方法部分用到的符号有:u表示文档在倒排表中的原始得分与该文档在其它倒排表中最后读取记录的得分之和。
下面分别介绍各种符号的含义。
(1)查询条件符号:q表示一个具体的查询条件,q.W表示关键字集,[q.tb,q.te]表示时间范围。如:“黑洞形成的原因,[2001-03-01,2010-03-01]”。q.W包括三个关键字“黑洞”和“形成”和“原因”,[q.tb,q.te]为[2001-03-01,2010-03-01]。
(2)前期工作符号:D={d1,d2,...,dn}表示文档集,
Figure BDA0000146336910000051
表示每个文档的不同版本,如:文档集由四个文档组成D={d1,d2,d3,d4},d1包含三个不同版本
(3)文本内容与关键字的相关性得分所涉及到的几个符号和公式:
布尔函数:
w 1 ik = 0 , freq ik = 0 1 , freq ik ≥ 0
TF-IDF函数:
其中,freqik表示关键词k在文档di中出现的次数。n表示文档集中文档总数,doctotalk表示出现关键词k的文档数。w1 ik,w2 ik分别表示布尔型文本特征函数,TF-IDF文本特征函数,w1 ik表示文档di标题是否包含关键字k,如果包含则为1,不包含为0。如:一个文档的标题为“黑洞形成原因的最权威解释“,关键字为”黑洞形成的原因“,w1 ik=1。
(4)倒排表创建部分的符号:docID表示文档标识,比如:“0001”。score代表得分,如”0.9“表示某个文档内容对应于某个关键字的得分为0.9。文档版本的有效时间间隔[vd.tb,vd.te],如:[2003-03-01 12:58:34,2004-09-1813:24:58]表示某文档的有效时间,有效时间整型化是指将具体格式的时间化为天数,与一个参照时间(也化为天数),两个天数之差(粒度可以为天、小时等)的整数或实数。如:选择参照时间为1970年1月1日,化为天数为1970*365+1=719051。文档版本的时间为2003-03-01化为天数2003*365+2*30+1=731156,然后将两个天数相减731156-719051=12105。化为整数后就可以进行比较了。
(5)双哈希表关联方法部分中的符号:u表示文档在倒排表中的原始得分与该文档在其它倒排表中最后读取记录的得分之和,经过处理假设倒排表中的得分都处于[0,1]之间。如:两个关键字分别对应两个倒排表IL1和IL2,IL1中第一个记录为{d1,0.8,[1,3)},第二条记录为{d3,0.5,[1,5)},IL2中第一条记录为{d2,0.9,[3,8)},第二条记录为{d1,0.8,[1,3)},我们称当前读取的记录为当前记录,其余尚未读取的记录称为未读取记录。当读取IL1中第一条记录d1时,当前记录d1的u值为u=0.8+1=1.8,因为,IL2中一条记录都还没有读取,所以,它在IL2中最大得分为1,因此,d1的最大得分为1.8。u值的大小不是固定的,随着依次读取倒排表记录而不断地减小。当读取IL2中第一条记录d2时,d2的u值为u=0.8+0.9=1.7,此时,d1的u值也同样为1.7。接着读取IL1中的第二条记录d3,d3的u值为d3在IL1中的原始得分0.5与其它倒排表即IL2最后读取记录(IL2第一条记录)的得分0.9之和,0.5+0.9=1.4。此时,已读取记录为{d1,d3,d2},d1对应的u值为原始得分0.8与其它倒排表最后读取记录(即IL2中的第一条记录)的得分0.5之和0.5+0.8=1.3。d2对应的u值为原始得分0.9+0.5=1.4。继续读取倒排表IL2中的第二条记录{d1,0.8,[1,3)},记录{d1,0.8,[1,3)}为当前记录,已读取记录为{d1,d3,d2,d1},此时,d1已重复,d1的u值为0.8+0.8=1.6,d2的u值为0.9+0.8=1.7,d3的u值为0.5+0.9=1.4。
下面结合附图对本发明进行详细说明。
步骤(1)查询条件设置,包括关键词集q.w和查询时间范围[q.tb,q.te];
步骤(2)倒排表设计。该步骤主要分为得分计算、有效时间获取两个部分。
(2.1)关键词与文档内容的相关性(得分)wik的计算:
为了衡量关键词与文档内容的相关性(得分),通常需要引用一些特定的属性,根据各属性对相关性贡献的大小分配一个适当的权重,通过给定函数对各属性权重进行加权计算出一个综合得分,并根据得分的高低来评估相关性。得分越高表示相关性越大,说明查找到的文档越符合用户查询的要求,得分越低则相反。常见的文本特征值相关性(得分)计算函数主要有:布尔函数、绝对词频函数、相对词频函数、TF-IDF函数等。本发明涉及到布尔函数、TF-IDF函数,这几个函数都将用到符号freqik,freqik表示绝对词频,绝对词频是指关键词在文档中出现的频率(次数)。
1)布尔函数
w 1 ik = 0 , freq ik = 0 1 , freq ik ≥ 0
其中,freqik表示关键词在文档中出现的次数,w1 ik的上标1用于区别下面将介绍的TF-IDF函数,如TF-IDF函数用w2 ik表示。如果关键词在文档中没有出现,那么匹配度w1 ik为0;否则,w1 ik为1。
2)TF-IDF函数
TF-IDF方法是信息检索领域常用的一种方法,也常作为文档特征加权函数,它根据关键词的绝对词频及其文档总数与出现过该关键词的文档数的比值的对数来计算该关键词在整个文档集中的权重,其中TF代表绝对词频,即关键词在文档中出现的次数。IDF代表关键词区分文档的相似能力,用于计算关键词区分文档的力度。可以这样来理解TF-IDF的含义,关键词在文档中出现的次数越多,就越能代表该文档的内容;关键词在越多文档中出现过,说明其区分能力越差。用公式表示如下:
其中,freqik表示关键词k在文档di中出现的次数。n表示文档集中文档总数,doctotalk表示出现关键词k的文档数。
一般认为,除(词频)属性能够反映关键词与文档内容的相关性外,(位置)属性即关键词在文档中出现的位置(标题、摘要,正文)对相关性也存在一定的影响。比如,一篇文章的标题很大程度上反映了该文章的内容。如果标题中包含了我们查询的关键词,那么,在一定程度上说明此文档的内容与我们查询结果的相关性,至少比标题中不包含查询关键词的文档相关性更大。因此,我们引入一个权重变量p(0≤p≤1),将关键词与文档内容的相关性分为两部分(词频和位置),用公式
Figure BDA0000146336910000073
来计算关键词与文档内容的相关性(匹配度)wik,其中,
Figure BDA0000146336910000074
表示(位置)布尔型函数值,w2 ik表示(词频)由TF-IDF函数计算得出的函数值,p的值可以根据实验或经验来确定,比如:p=0.1表示标题所占的权重,1-p=0.9代表词频所占的权重,通过(考虑词频、位置等)这种加权更能反映关键词与文档的匹配度。
(2.2)获取文档版本的有效时间间隔[vd.tb,vd.te]。维基百科、互联网档案馆等都对电子文档的各种版本进行归档,在查看历史项中,记录了每个版本的历史档案信息(包括修改的内容、时间、大小等)。随着时间的推移,文档将产生许多不同的版本,每个版本包含一个有效时间[vd.tb,vd.te],在此有效时间之内,文档内容保持不变,关键词与文档内容的相关性得分保持不变。有效时间间隔[vd.tb,vd.te]中vd.tb表示产生该文档版本的时间,vd.te表示下一个版本的产生时间。通过这种方式可以计算出每个版本的有效时间间隔。
时间裁剪是指裁剪到未落入查询时间范围之内的版本有效时间,利用时间间隔整型化计算将时间间隔化为整数,通过比较得出文档版本的有效时间间隔与查询查询时间范围的关系。
(2.3)倒排表结构
根据各属性对相关性贡献的大小作加权处理,得出一个综合得分,按照得分高低排序来创建倒排表。由于查询关键字是随机(Ad-hoc)的,在一定程序上增加了查询的难度。查询条件中关键词集包含几个关键词就会产生几个张倒排表,倒排表的结构为:
Figure BDA0000146336910000081
其中,score(得分)由步骤(2.1)给出的加权函数来计算
Figure BDA0000146336910000082
Figure BDA0000146336910000083
表示(位置)布尔型函数值,w2 ik表示(词频)由TF-IDF函数计算得出的函数值,p(0≤p≤1)代表词频和位置所占的权重。有效时间间隔[vd.tb,vd.te]由步骤(2.2)获取。
步骤(3)双哈希表关联方法设计。步骤如下:
本发明解决的是一种区间持久性top-k查询方法。下面以区间持久性top-2为例(如图2所示)说明区间持久性top-k的定义及原理。
首先,引入一个松驰变量r,r是(0,1]之间用于调节时间长度(从用户角度看就是查询结果的多少)的一个实数。查询结果要求文档对象满足top-k条件的时间长度不小于r×(q.te-q.tb)即可。r的取值由用户定义,当用户认为查询结果太少,可以适当地将r值减小,r值减小代表在查询的时间范围内要求满足top-k的时间长度缩小,当然,返回的结果就越多。当用户认为查询结果太多需要进一步增大其精确性时,可以适当地放大r值。当r=1时,表示查询结果在整个查询时间范围内都必须满足top-k条件,时间长度为整个查询时间的起止时间差。
其次,如图2所示为例进行详细说明。将查询时间分为许多的时间间隔子区间,计算出每个子区间中满足top-2条件的文档对象的时间长度:
[0,1]区间中top-2结果为d4,d2,时间长度为length(d4)=1,length(d2)=1;
[1,3]区间中top-2结果为d2,d4,时间长度为length(d2)=2,length(d4)=2;
[3,4]区间中top-2结果为d2,d5,时间长度为length(d2)=1,length(d2)=1;
[4,6]区间中top-2结果为d2,d5,时间长度为length(d2)=2,length(d5)=2;
[6,8]区间中top-2结果为d2,d5,时间长度为length(d2)=2,length(d5)=2;
最后统计每个文档对象在整个查询时间范围[0,8]之间的时间长度length(d2)=1+2+1+2+2=8;length(d5)=2+2=4;length(d4)=1+2=3;如果取r=1,那么查询结果为d2(因为只有d2的时间长度为r×(q.te-q.tb)=1*(8-0)=8。如果取r=0.5,那么,查询结果为{d2,d5}(因为d2、d5的时间长度都大于等于r×(q.te-q.tb)=0.5*(8-0)=4).
步骤(3.1)双哈希表的建立,步骤如下:
(3.1.1)哈希函数的构造
哈希函数是指把关键字K与存储位置进行一一对应,查找时通过这种对应关系找到给定关键字K的像f(K),达到快速查找的目的。构造哈希表最理想的情况是希望不经过任何比较,一次存取便能获得所查记录。构造一个合适的哈希函数能够有效地减少地址发生冲突的概率。典型的哈希表构造方法有直接定址法、平方取中法、折叠法、除留余数法等。本发明所涉及的第一哈希表需要将文档docID与有效时间[tb,te]绑定形成的docID_[tb,te]作为文档标识与该文档对应的得分一一对应起来,另外,还记录每个倒排表最后被处理的文档得分,比如(
Figure BDA0000146336910000101
,0.9)表示第一哈希表最后被处理的文档得分为0.9,第二哈希表需要将文档docID、有效时间[tb,te]以及该记录来源于哪个倒排表的标记绑定形成docID_[tb,te]
Figure BDA0000146336910000102
作为文档标识与该文档的最大可能得分一一对应,因此可采用除留余数法来处理,除留余数法是利用模运算Addr=H(key)=key%m,其中m为小于哈希表长度p的质数,我们假设哈希表的长度p=15,m=13。当发生冲突时采用拉链法进行解决。
(3.1.2)解决哈希冲突
哈希冲突是指不同的关键字值对应到同一个存储位置的现象即Key1≠Key2,H(Key1)=H(Key2)。无论什么哈希函数,都会产生散列冲突现象,因此,必须对冲突做相应的处理。常用的解决冲突的方法有:拉链法、多哈希法、开放地址法等。本发明中,我们采用拉链法来解决哈希冲突。所谓拉链法,就是拉出一条动态链表来存储具有相同哈希地址的记录。利用拉链法来解决哈希冲突的具体做法如下:将所有关键字为同义词的结点链接到同一个单链表中。假定散列表长度为15,则可将散列表定义为一个由15个头指针组成的指针数组P[0...14]。凡是散列地址为i的结点,均插入到P[i]为头指针的单链表中。
(3.2)双哈希表关联方法结构的设计,步骤如下:
(3.2.1)、u值的计算方法
u值是一个阀值,代表文档在所有倒排表中的最大得分。我们以两个关键词为例来说明u值的计算,假如有两个查询关键词,分别对应两张倒排表,倒排表按得分降序排列。因此,文档docID的顺序是被打乱的,当读取第一个记录时,u值应该为第一个记录的得分+1(假设得分被归一化为[0,1]之间的某个实数,当读取第一个倒排表中的第一个记录时,第二个倒排表中的第一个记录权值可能为1,所以倒排表中未被检测到的最大可能得分应该为当前记录的权值+1之和)。然后,读取第二个倒排表中的第一个记录,这时的u值应该为当前得分+前一个记录的得分之和。依此类推就能计算出每个u值。
(3.2.2)双哈希表键值对设计
为了更好地说明附图,哈希表A即第一哈希表,哈希表B即第二哈希表。
第一哈希表维护一个关键字为文档docID_[tb,te],value为该文档对应的得分(从倒排表中获取)的哈希表。第二哈希表维护一个关键字为文档docID_[tb,te]
Figure BDA0000146336910000111
,value为u值的哈希表,其中u代表遍历倒排表后检测到文档的最大可能得分。从倒排表中顺序并行地读取记录,如果该记录的文档标识在第一哈希表中不存在,则将其对应的得分插入到第一哈希表.value中。同时,计算u值并插入到第二哈希表.value中。如果当前记录的文档标识已经在哈希表中存在,则修改其对应的得分。
第一哈希表和第二哈希表的创建
Figure BDA0000146336910000112
构造出哈希函数并确定解决哈希冲突的方法后,开始建立哈希表,哈希表的建立步骤如下:
步骤1:从倒排表中顺序读取一个记录,对于第一哈希表而言,维护一个关键字key为该记录的文档标识docID_[tb,te],value为其得分。通过哈希函数H(key)计算出该记录的哈希地址,若存储地址所指的地址空间没有被占用,则将该docID_[tb,te]对应的得分作为value值存储在此位置,否则发生冲突,执行步骤2。对于第二哈希表而言,维护关键字为该记录docID_[tb,te]
Figure BDA0000146336910000121
(表示文档的docID和有效时间间隔以及该记录属予第i个倒排表的文档标识信息),value为对应的u值。通过哈希函数计算出关键字的哈希地址,若存储地址所指的地址空间没有被占用,则将u值存储在此位置,否则发生冲突,执行步骤2。
步骤2:根据给定的冲突处理方法,以发生冲突的结点为头结点,创建一个单链表来存储当前的碰撞结点,如果此结点再次发生冲突,则将发生冲突的结点保存到单链表所指向的下一个结点的存储空间,依次类推,直到不发生冲突为止。
(3.3)双哈希表关联方法具体步骤
依次并行地读取倒排表中的记录,首先,判断当前记录的有效时间间隔是否处于查询时间范围之内,如果不处于查询时间范围内则丢掉该记录,继续遍历倒排表,读取下一条记录。如果当前记录处于查询时间范围内则视为目标记录,以下步骤都是对目标记录进行处理的。
其次,将目标记录的文档标识用符号docID_[tb,te]来表示并插入到A.key,用符号docID_[tb,te]
Figure BDA0000146336910000122
表示的字符串插入到B.key,它们通过docID_[tb,te]标识能够建立关联,相互查找相对应的值,第二哈希表中的文档标识docID_[tb,te]的符号
Figure BDA0000146336910000124
,代表该记录是从哪一个倒排表中读取的,比如d1_[2005-03-12,2007-8-23]
Figure BDA0000146336910000125
表示文档的ID为d1,有效时间为[2005-03-12,2007-8-23],
Figure BDA0000146336910000126
表示此记录是从第一个倒排表IL1中读取的。检测当前记录的docID_[tb,te]是否在第一哈希表中已存在,如果不存在,则插入该记录,并将该记录的得分插入到第一哈希表value中,否则,不插入该记录而是更新其对应的得分为当前得分和原来得分之和。同时,用变量来记录每个倒排表中最后读取记录的信息(String
Figure BDA0000146336910000127
代表第i个倒排表,double lastScore表示第i个倒排表中最后读取记录的得分),并实时更新其值的大小。
然后,修改第二哈希表中的值。当检测到当前记录的docID_[tb,te]在第一哈希表中已存在时,搜索第二哈希表中包含docID_[tb,te]的docID_[tb,te]
Figure BDA0000146336910000131
文档标识相对应的记录,并修改其key值为docID_[tb,te],修改其value值为第一哈希表中标识为docID_[tb,te]所对应的得分。同时,更新第二哈希表中其它记录的value值,更新的方法如下:检查其key值是否含有字符
Figure BDA0000146336910000132
如果不含表明该记录已被处理过,跳过继续检查下一条记录,如果含有
Figure BDA0000146336910000134
符号时,更新该文档标识为docID_[tb,te]
Figure BDA0000146336910000135
的记录的最大得分为第一哈希表中key值为docID_[tb,te]的文档对应的得分与第一哈希表中非
Figure BDA0000146336910000136
的得分之和。
接着,比较大小。对更新后的第二哈希表按其value值降序排序,找出含有
Figure BDA0000146336910000137
标记的得分最大的前k个记录,用{d1(score1),d2(score2),...dk(scorek)}来表示,从这k个记录中找出其得分最小的记录,假如是di(scorei)。比较第二哈希表中文档标识不含
Figure BDA0000146336910000138
的记录得分与di(scorei)得分的大小,如果大于等于di(scorei)得分,则记录该记录的docID_[tb,te]文档标识信息,并用变量进行计数,表示[tb,te]这段时间间隔满足条件的个数,当个数大于或等于k时,对这个时间间隔作标记“确定”。如果小于di(scorei)得分,则不删除此记录继续按以上步骤进行操作。
最后,遍历具有“确定”标记的子区间。当整个查询区间都被“确定”所标记时,结束查询,输出文档的docID作为查询结果。
实际上,上述处理过程中,一旦检测到当前记录的文档标识已存在于第一哈希表时,更新该记录的得分。同时,更新第二哈希表中所有记录的总得分,并对第二哈希表中更新后的最大得分进行降序排序。比较第一哈希表中文档标识相同的记录更新后的得分与第二哈希表更新后得分中第k个得分的大小。如果第一哈希表文档标识相同的记录更新后的得分大,则保存该记录的相关信息,并对该记录对应的有效时间标记满足top-k条件的计数加1,继续按以上步骤读取倒排表中的记录,当某个有效时间区间的计数达到k时,则对此有效时间区间标记为“确定”。遍历整个查询时间区间,如果所有的子区间都被标记为“确定”,查询结束。累计每个文档对象的时间长度,输出时间长度最长的k个文档作为查询的结果。
以上所述仅为本发明的优选实施方式,但本发明保护范围并不局限于此。任何本领域的技术人员在本发明公开的技术范围内,均可对其进行适当的改变或变化,而这种改变或变化都应涵盖在本发明的保护范围之内。

Claims (6)

1.一种区间持久性top-k查询的双哈希表关联方法,其特征在于,包括:
步骤10,输入关键词和查询时间范围;
步骤11,创建倒排表,将查询时间分拆为多个间隔时间,并根据倒排表和间隔时间建立第一哈希表和第二哈希表;倒排表中记录文档ID、该文档ID的得分以及属于该文档ID的文档版本的有效间隔时间;第一哈希表记录具有有效时间间隔的文档版本对应的文档ID、各倒排表中最后被查询的记录的得分以及具有有效时间间隔的文档版本对应的被查询的相同文档ID在不同倒排表中的总得分,第二哈希表记录具有有效时间间隔的文档版本对应的文档ID、文档ID对应的倒排表ID和各倒排表中最后被查询记录的总得分;各倒排表中最后被查询记录的总得分为当前被查询记录的得分与其余倒排表中最后被查询记录得分之和,各倒排表中最后被查询的记录的得分对应于当前被查询的记录对应的文档ID;
步骤12,如果第二哈希表中各倒排表中最后被查询记录的总得分小于当前被查询记录对应ID在第一倒排表中具有有效时间间隔的文档版本对应的被查询的相同文档ID在不同倒排表中的总得分,则按降序排列第二哈希表中各倒排表中最后被查询记录的总得分并输出前k个总得分对应的文档ID及其间隔时间;
步骤13,将具有相同文档ID对应的时间间隔相加,将相加的结果降序排列并输出前k个结果对应的文档ID。
2.如权利要求1所述的双哈希表关联方法,其特征在于,文档的分值根据下述公式计算:其中wik为具有该文档ID的文档的分值, w 1 ik = 0 , freq ik = 0 1 , freq ik ≥ 0 ,
Figure FDA0000146336900000013
freqik为关键字在文档中出现的频率,n为文档的总数,面doctotalk为出现关键字的文档数量,p为关键字的权重。
3.如权利要求1所述的双哈希表关联方法,其特征在于,步骤11中,如果文档版本的有效时间未完全落入查询时间范围内,则对该文档进行时间裁剪。
4.如权利要求1所述的双哈希表关联方法,其特征在于,步骤11中,利用拉链法、多哈希法或开放地址法解决建立第一哈希表或第二哈希表的冲突。
5.如权利要求1所述的双哈希表关联方法,其特征在于,步骤11中,根据直接定址法、平方取中法、折叠法或除留余数法建立第一哈希表或第二哈希表。
6.如权利要求1所述的双哈希表关联方法,其特征在于,文档ID对应的最大得分为文档在倒排表中的原始得分与该文档在其它倒排表中最后读取记录的得分之和。
CN2012100802499A 2011-12-15 2012-03-23 一种区间持久性top-k查询的双哈希表关联检索方法 Active CN102663030B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2012100802499A CN102663030B (zh) 2011-12-15 2012-03-23 一种区间持久性top-k查询的双哈希表关联检索方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201110421358 2011-12-15
CN201110421358.8 2011-12-15
CN2012100802499A CN102663030B (zh) 2011-12-15 2012-03-23 一种区间持久性top-k查询的双哈希表关联检索方法

Publications (2)

Publication Number Publication Date
CN102663030A true CN102663030A (zh) 2012-09-12
CN102663030B CN102663030B (zh) 2013-12-04

Family

ID=46772521

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012100802499A Active CN102663030B (zh) 2011-12-15 2012-03-23 一种区间持久性top-k查询的双哈希表关联检索方法

Country Status (1)

Country Link
CN (1) CN102663030B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103647666A (zh) * 2013-12-13 2014-03-19 北京中创信测科技股份有限公司 一种统计呼叫详细记录报文并实时输出结果的方法及装置
CN104794238A (zh) * 2015-05-07 2015-07-22 中国人民大学 检索方法
CN107330057A (zh) * 2017-06-29 2017-11-07 哈尔滨工程大学科技园发展有限公司 一种ElasticSearch搜索相关度算法优化方法及系统
CN111581327A (zh) * 2020-04-08 2020-08-25 华迪计算机集团有限公司 一种行政执法辅助方法和装置
CN114726920A (zh) * 2022-06-07 2022-07-08 恒生电子股份有限公司 Tcp数据的处理方法及装置
CN117743338A (zh) * 2023-12-20 2024-03-22 无锡众星微系统技术有限公司 一种基于双哈希的关键字匹配方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070043714A1 (en) * 2005-08-19 2007-02-22 Daisy Stanton Combined title prefix and full-word content searching
CN101162469A (zh) * 2007-11-09 2008-04-16 清华大学 基于快照的细粒度文件与目录版本管理方法
CN101673307A (zh) * 2009-10-21 2010-03-17 中国农业大学 空间数据索引方法及系统
US20100125559A1 (en) * 2008-11-20 2010-05-20 At&T Intellectual Property I, L.P. Selectivity estimation of set similarity selection queries

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070043714A1 (en) * 2005-08-19 2007-02-22 Daisy Stanton Combined title prefix and full-word content searching
CN101162469A (zh) * 2007-11-09 2008-04-16 清华大学 基于快照的细粒度文件与目录版本管理方法
US20100125559A1 (en) * 2008-11-20 2010-05-20 At&T Intellectual Property I, L.P. Selectivity estimation of set similarity selection queries
CN101673307A (zh) * 2009-10-21 2010-03-17 中国农业大学 空间数据索引方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
吴恒山等: "《一种基于可扩展散列表的倒排索引更新策略》", 《计算机工程》 *
周力青等: "《专家系统中知识库的物理组织方法》", 《广西师范大学学报(自然科学版)》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103647666A (zh) * 2013-12-13 2014-03-19 北京中创信测科技股份有限公司 一种统计呼叫详细记录报文并实时输出结果的方法及装置
CN104794238A (zh) * 2015-05-07 2015-07-22 中国人民大学 检索方法
CN104794238B (zh) * 2015-05-07 2018-04-27 中国人民大学 检索方法
CN107330057A (zh) * 2017-06-29 2017-11-07 哈尔滨工程大学科技园发展有限公司 一种ElasticSearch搜索相关度算法优化方法及系统
CN107330057B (zh) * 2017-06-29 2020-08-07 哈尔滨工程大学科技园发展有限公司 一种ElasticSearch搜索相关度算法优化方法及系统
CN111581327A (zh) * 2020-04-08 2020-08-25 华迪计算机集团有限公司 一种行政执法辅助方法和装置
CN114726920A (zh) * 2022-06-07 2022-07-08 恒生电子股份有限公司 Tcp数据的处理方法及装置
CN117743338A (zh) * 2023-12-20 2024-03-22 无锡众星微系统技术有限公司 一种基于双哈希的关键字匹配方法和装置
CN117743338B (zh) * 2023-12-20 2024-05-10 无锡众星微系统技术有限公司 一种基于双哈希的关键字匹配方法和装置

Also Published As

Publication number Publication date
CN102663030B (zh) 2013-12-04

Similar Documents

Publication Publication Date Title
CN101133388B (zh) 基于多索引的信息检索系统
US7739277B2 (en) System and method for incorporating anchor text into ranking search results
CN101055585B (zh) 文档聚类系统和方法
CN102084363B (zh) 一种用于在结构化数据上高效地支持交互式模糊搜索的方法
CN102663030B (zh) 一种区间持久性top-k查询的双哈希表关联检索方法
US8019758B2 (en) Generation of a blended classification model
CN104598647B (zh) 一种树图搜索和匹配物品的方法
US9529908B2 (en) Tiering of posting lists in search engine index
Tao et al. Multi-Dimensional, Phrase-Based Summarization in Text Cubes.
Hadjieleftheriou et al. Incremental maintenance of length normalized indexes for approximate string matching
Maniu et al. Network-aware search in social tagging applications: Instance optimality versus efficiency
CN102819601A (zh) 信息检索方法和信息检索设备
CN102456016A (zh) 一种对搜索结果进行排序的方法及装置
US20100169324A1 (en) Ranking documents with social tags
US7809745B2 (en) Method for generating structured query results using lexical clustering
CN102270201A (zh) 用于网络文件的多维索引的方法和设备
Wong et al. Online skyline analysis with dynamic preferences on nominal attributes
Maniu et al. Efficient top-k retrieval in online social tagging networks
CN114911826A (zh) 一种关联数据检索方法和系统
Balamurugan et al. A Trend Analysis of Information Retrieval Models.
CN107992565B (zh) 一种优化搜索引擎的方法及系统
CN105868406A (zh) 基于多数据库的专利检索系统
Clare et al. Scalable multi-relational association mining
Wang et al. Efficient group-by reverse skyline computation
Fakhraee et al. Effective Keyword Search over Relational Databases Considering keywords proximity and keywords N-grams

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant