一种高维空间数据的查询方法、装置及计算机可读介质技术领域
本发明涉及查询技术领域,特别涉及一种高维空间数据的查询方法、装置及计算
机可读介质。
背景技术
随着多媒体数据爆炸性的增长,海量信息的检索也遇到了前所未有的挑战。由于
多媒体数据多为非结构化数据,包括图像、视频和音频等,其语义信息无法直接由底层特征
表达,使得传统信息检索不再适用,迫切需要发展面向多媒体数据的检索方法。
通常的做法是为多媒体数据元提取特征向量,把海量多媒体数据库上的相似性检
索转化为大规模高维特征向量间的NN(Nearest Neighbor,最近邻)查询问题。给定一个查
询对象,在信息库数据集中运用指定度量标准衡量特征向量间的相似性,最终找到和查询
对象在特征上最接近的数据元。
然而现有技术在进行相似性查询时,是随机在存储有数据点的各个磁盘页面上进
行查询,查询效率较低。
发明内容
本发明实施例提供了一种高维空间数据的查询方法、装置及计算机可读介质,以
提高查询效率。
第一方面,本发明实施例提供了一种高维空间数据的查询方法,包括:
针对高维空间的每一个数据点,确定相应的Z值;
将各个数据点按照相应Z值的大小顺序,依次存储到磁盘中的磁盘页面上;
根据每一个数据点相应的Z值和存储有数据点的各个磁盘页面,建立索引表;
确定查询点,并计算所述索引表中每一个磁盘页面与所述查询点的距离;
根据所述索引表中每一个磁盘页面与所述查询点的距离,进行数据查询。
优选地,所述针对高维空间的每一个数据点,确定相应的Z值,包括:
利用下述方式确定高维空间中当前数据点p的Z值:
确定复合LSH函数G,其中,复合LSH函数G中包括m个哈希函数,m为不小于1的整数;
计算当前数据点p在复合LSH函数G下的复合哈希键K=G(p);其中,
ki用于表征复合哈希键K中第i个哈希值,每一个哈希值为二进制数;
针对复合哈希键K中包括的每一个哈希值进行位交叉操作,生成当前数据点p的Z
值Z(p);
利用上述确定当前数据点p的Z值的方式,确定高维空间中除当前数据点p以外的
其他每一个数据点相应的Z值。
优选地,所述根据每一个数据点相应的Z值和存储有数据点的各个磁盘页面,建立
索引表,包括:
在每一个磁盘页面上选择第一设定个数的数据点作为相应磁盘页面的代表数据
点;
根据每一个代表数据点对应的Z值,构建B+树索引;
将所述B+树索引和存储有数据点的各个磁盘页面,构建为索引表。
优选地,
所述第一设定个数为2;
所述计算所述索引表中每一个磁盘页面与所述查询点的距离,包括:
利用第一公式计算所述索引表中当前磁盘页面与所述查询点q的距离DistPage:
所述第一公式:
其中,Zq用于表征所述查询点q对应的Z值,L和U分别为在该当前磁盘页面上选择
的两个代表数据点分别对应的Z值;dist(Zq,L)用于表征Zq与L之间的距离,dist(Zq,U)用于
表征Zq与U之间的距离。
优选地,
进一步包括:建立第二设定个数的索引表,以根据所述第二设定个数的索引表执
行所述根据所述索引表中每一个磁盘页面与所述查询点的距离,进行数据查询的操作;
所述根据所述索引表中每一个磁盘页面与所述查询点的距离,进行数据查询,包
括:
S1:将每一个索引表中距离所述查询点最近的磁盘页面,以及该磁盘页面相邻的
一个磁盘页面加载到页面集中;
S2:在所述页面集中计算距离所述查询点最近的目标磁盘页面,将所述目标磁盘
页面从所述页面集中取出;
S3:针对取出的所述目标磁盘页面上的各个数据点进行查询,并将所述目标磁盘
页面所属索引表中与所述目标磁盘页面相邻的且未加载到所述页面集中的磁盘页面加载
到所述页面集中,并继续执行S2-S3,直到S3中进行查询的目标磁盘页面为从所述页面集中
取出的第NP个磁盘页面为止,其中,NP为预先设置的第三设定个数。
第二方面,本发明实施例提供了一种高维空间数据的查询装置,包括:
确定单元,用于针对高维空间的每一个数据点,确定相应的Z值;
放置单元,用于将各个数据点按照相应Z值的大小顺序,依次存储到磁盘中的磁盘
页面上;
建立单元,用于根据每一个数据点相应的Z值和存储有数据点的各个磁盘页面,建
立索引表;
计算单元,用于确定查询点,并计算所述索引表中每一个磁盘页面与所述查询点
的距离;
查询单元,用于根据所述索引表中每一个磁盘页面与所述查询点的距离,进行数
据查询。
优选地,
所述确定单元,具体用于利用下述方式确定高维空间中当前数据点p的Z值:
确定复合LSH函数G,其中,复合LSH函数G中包括m个哈希函数,m为不小于1的整数;
计算当前数据点p在复合LSH函数G下的复合哈希键K=G(p);其中,
ki用于表征复合哈希键K中第i个哈希值,每一个哈希值为二进制数;
针对复合哈希键K中包括的每一个哈希值进行位交叉操作,生成当前数据点p的Z
值Z(p);
利用上述确定当前数据点p的Z值的方式,确定高维空间中除当前数据点p以外的
其他每一个数据点相应的Z值;
和/或,
所述建立单元,具体用于:
在每一个磁盘页面上选择第一设定个数的数据点作为相应磁盘页面的代表数据
点;
根据每一个代表数据点对应的Z值,构建B+树索引;
将所述B+树索引和存储有数据点的各个磁盘页面,构建为索引表。
优选地,
所述第一设定个数为2;
所述计算单元,具体用于利用第一公式计算所述索引表中当前磁盘页面与所述查
询点q的距离DistPage:
所述第一公式:
其中,Zq用于表征所述查询点q对应的Z值,L和U分别为在该当前磁盘页面上选择
的两个代表数据点分别对应的Z值;dist(Zq,L)用于表征Zq与L之间的距离,dist(Zq,U)用于
表征Zq与U之间的距离。
优选地,
所述建立单元,进一步用于建立第二设定个数的索引表,以根据所述第二设定个
数的索引表执行所述根据所述索引表中每一个磁盘页面与所述查询点的距离,进行数据查
询的操作;
所述查询单元,具体用于执行如下步骤:
S1:将每一个索引表中距离所述查询点最近的磁盘页面,以及该磁盘页面相邻的
一个磁盘页面加载到页面集中;
S2:在所述页面集中计算距离所述查询点最近的目标磁盘页面,将所述目标磁盘
页面从所述页面集中取出;
S3:针对取出的所述目标磁盘页面上的各个数据点进行查询,并将所述目标磁盘
页面所属索引表中与所述目标磁盘页面相邻的且未加载到所述页面集中的磁盘页面加载
到所述页面集中,并继续执行S2-S3,直到S3中进行查询的目标磁盘页面为从所述页面集中
取出的第NP个磁盘页面为止,其中,NP为预先设置的第三设定个数。
第三方面,本发明实施例还提供了一种计算机可读介质,所述计算机可读介质上
存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述任一所述
的方法。
本发明实施例提供了一种高维空间数据的查询方法、装置及计算机可读介质,通
过确定高维空间中每一个数据点的Z值,按照各个数据点Z值的大小顺序,对数据点进行存
储,如此,相邻的两个磁盘页面上的数据点对应Z值具有一定的关系,例如当前磁盘页面上
各个数据点分别对应的Z值均比相邻磁盘页面上各个数据点分别对应的Z值大或小,因此,
磁盘页面上的数据点具有一定的聚敛性,因此,根据查询点与每一个磁盘页面的距离来进
行数据查询,可以提高查询效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明
的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
这些附图获得其他的附图。
图1是本发明一个实施例提供的一种方法流程图;
图2是本发明一个实施例提供的另一种方法流程图;
图3是本发明一个实施例提供的位交叉操作示意图;
图4是本发明一个实施例提供的排序示意图;
图5是本发明一个实施例提供的装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例
中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员
在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种高维空间数据的查询方法,该方法可以包括
以下步骤:
步骤101:针对高维空间的每一个数据点,确定相应的Z值;
步骤102:将各个数据点按照相应Z值的大小顺序,依次存储到磁盘中的磁盘页面
上;
步骤103:根据每一个数据点相应的Z值和存储有数据点的各个磁盘页面,建立索
引表;
步骤104:确定查询点,并计算所述索引表中每一个磁盘页面与所述查询点的距
离;
步骤105:根据所述索引表中每一个磁盘页面与所述查询点的距离,进行数据查
询。
根据本发明上述实施例,通过确定高维空间中每一个数据点的Z值,按照各个数据
点Z值的大小顺序,对数据点进行存储,如此,相邻的两个磁盘页面上的数据点对应Z值具有
一定的关系,例如当前磁盘页面上各个数据点分别对应的Z值均比相邻磁盘页面上各个数
据点分别对应的Z值大或小,因此,磁盘页面上的数据点具有一定的聚敛性,因此,根据查询
点与每一个磁盘页面的距离来进行数据查询,可以提高查询效率。
在一些常见的索引技术中,例如,SK-LSH(Locality-Sensitive Hashing,局部敏
感哈希),也会将高维空间的数据点构建为空间曲线,SK-LSH索引技术是将高维空间的数据
点构建为row-wise曲线,其中,row-wise曲线在高维空间中呈现的数据点聚敛性较差,因
此,在本发明一个实施例中,可以将高维空间的数据点构建为z-order曲线,以使数据点在
高维空间中呈现Z型,提高数据点的聚敛性,以进一步提高查询效率。在构建z-order曲线
时,需要确定出每一个数据点的Z值,可以通过如下方式确定高维空间中当前数据点p的Z
值:
确定复合LSH函数G,其中,复合LSH函数G中包括m个哈希函数,m为不小于1的整数;
计算当前数据点p在复合LSH函数G下的复合哈希键K=G(p);其中,
ki用于表征复合哈希键K中第i个哈希值,每一个哈希值为二进制数;
针对复合哈希键K中包括的每一个哈希值进行位交叉操作,生成当前数据点p的Z
值Z(p);
利用上述确定当前数据点p的Z值的方式,确定高维空间中除当前数据点p以外的
其他每一个数据点相应的Z值。
其中,该位交叉操作方式是首先从k1、k2、…、ki分别取第一个哈希值依次放置在Z
(p)中,然后从k1、k2、…、ki分别取第二个哈希值依次放置在Z(p)中,……,一直到从k1、
k2、…、ki分别取最后个哈希值依次放置在Z(p)中,此时的Z(p)即为当前数据点p的Z值。
由于i最大为m,若每一个哈希值为一个u位的二进制序列,那么Z(p)是一个长度为
um的二进制串。
通过将高维空间的数据点构建为z-order曲线,可以使数据点在高维空间中呈现Z
型,提高数据点的聚敛性,以进一步提高查询效率。
在本发明一个实施例中,在将数据点存储到磁盘上时,可以分别存储在磁盘页面
上,每一个磁盘页面可以存储的数据点个数为B,若在加载该磁盘页面上存储的数据点时,
由于一个磁盘页面上存储的数据点个数较多,若全部加载到内存中,可能会造成内存占用
不够的问题,给查询的准确率带来影响,因此,在建立索引表时,可以在每一个磁盘页面上
选择第一设定个数的数据点作为相应磁盘页面的代表数据点;根据每一个代表数据点对应
的Z值,构建B+树索引;将所述B+树索引和存储有数据点的各个磁盘页面,构建为索引表。
其中,该第一设定个数由具体的开发人员来设置,在不同磁盘页面上选择的数据
点的个数相同,也可以不相同,优选地,该第一设定个数为2,且都在每一个磁盘页面上选择
该磁盘页面存储的第一个数据点和最后一个数据点作为代表数据点。
如此,在将磁盘页面加载到内存上时,可以只加载这两个代表数据点,根据这两个
代表数据点即可以定位到磁盘页面,进而对该磁盘页面上的所有数据点进行查询,从而可
以降低内存的占用。
在进行数据查询时,可以采用近似最近邻查询方式,由于在索引表中包括多个磁
盘页面,需要查询距离查询点最近的磁盘页面,在第一设定个数为2时,在每一个磁盘页面
上分别取的代表数据点对应的Z值为L、U为例,那么可以通过如下方式计算所述索引表中每
一个磁盘页面与所述查询点的距离:利用第一公式计算所述索引表中当前磁盘页面与所述
查询点q的距离DistPage:
所述第一公式:
其中,Zq用于表征所述查询点q对应的Z值,L和U分别为在该当前磁盘页面上选择
的两个代表数据点分别对应的Z值;dist(Zq,L)用于表征Zq与L之间的距离,dist(Zq,U)用于
表征Zq与U之间的距离。
对于两个Z值之间的大小关系,以及两个Z值之间的距离,可以通过z-order曲线的
特性来确定,从而可以利用上述第一公式计算出查询点到磁盘页面的距离。
在本发明一个实施例中,由于利用一个索引表进行数据点的查询时,可能存在最
近邻候选点的漏报问题,从而给查询结果的准确率带来影响,因此,为了减少最近邻候选点
的漏报,可以建立第二设定个数的索引表,以根据所述第二设定个数的索引表执行所述根
据所述索引表中每一个磁盘页面与所述查询点的距离,进行数据查询的操作。
在根据所述索引表中每一个磁盘页面与所述查询点的距离,进行数据查询时,可
以通过如下策略进行查询:
S1:将每一个索引表中距离所述查询点最近的磁盘页面,以及该磁盘页面相邻的
一个磁盘页面加载到页面集中;
S2:在所述页面集中计算距离所述查询点最近的目标磁盘页面,将所述目标磁盘
页面从所述页面集中取出;
S3:针对取出的所述目标磁盘页面上的各个数据点进行查询,并将所述目标磁盘
页面所属索引表中与所述目标磁盘页面相邻的且未加载到所述页面集中的磁盘页面加载
到所述页面集中,并继续执行S2-S3,直到S3中进行查询的目标磁盘页面为从所述页面集中
取出的第NP个磁盘页面为止,其中,NP为预先设置的第三设定个数。
设置第三设定个数NP的目的是为了便于控制磁盘开销,因此,将NP作为查询终止条
件。
根据上述最近邻查询策略,可以保证每次从页面集中取出的目标磁盘页面是所有
索引表中距离查询点最近的磁盘页面,且由于磁盘页面中存储的数据点的Z值存在聚敛性,
从而可以提高查询效率。
下面结合附图并以一个具体的实施例对本发明进行进一步的描述。
如图2所示,本发明实施例提供了一种高维空间数据的查询方法,该方法可以包括
以下步骤:
步骤201:针对高维空间的每一个数据点,确定相应的Z值。
对于z-order曲线是指多为空间Rm到一维空间I的一种映射,记作Z:Rm→I。若点x∈
Rm,则x映射到z-order上的像Z(x)∈I,称Z(x)为x的Z值。
其中,Z值的计算过程如下:确定高维空间对应的复合LSH函数G,其中,复合LSH函
数G中包括m个哈希函数,m为不小于1的整数;给定高维空间中一个数据点p,该数据点p在复
合LSH函数G下的复合哈希键K=G(p);其中,ki用于表征复合哈希键K中第i个
哈希值,每一个哈希值为二进制数;可以将K看作m维空间中的坐标,并将坐标中每一位数值
表示成一个u位的二进制序列,针对复合哈希键K中包括的每一个哈希值进行位交叉操作,
生成当前数据点p的Z值Z(p);其中,Z(p)是字符串长度为um的二进制序列。
该位交叉操作是首先从k1、k2、…、ki分别取第一个哈希值依次放置在Z(p)中,然后
从k1、k2、…、ki分别取第二个哈希值依次放置在Z(p)中,……,一直到从k1、k2、…、ki分别取
最后个哈希值依次放置在Z(p)中,此时的Z(p)即为当前数据点p的Z值。
请参考图3,以ki和ki+1两个哈希值为例,每一个哈希值中包括三位二进制数,那么
对这两个哈希值进行位交叉操作之后,得到二进制序列长度为6的Z(ki,ki+1)。
步骤202:根据z-order曲线的特性,确定各个Z值之间的关系。
Z值的前缀:给定高维空间的一个数据点p,它的Z值为Z(p)=(z1,z2,…zM),其中,M
=um,表示z-order二进制串的长度。令l代表Z值的前缀长度,其前缀表示为pref(Z,l),那
么:
pref(Z,l)=(z1,z2,…zM)
Z值的非公共前缀长度:给定两个Z值序列Z1=(z1,,z1,,…z1,)和Z2=(z2,,z2,,…
z2,),若存在pref(Z1,l)=pref(Z2,l)成立,并且pref(Z1,l+1≠prefZ2,l+1,0<<l<<M,
那么定义Z1,Z2的非公共前缀长度KDZ1,Z2为:KD(Z1,Z2)=M-l。
如果Z1,Z2满足pref(Z1,M)=pref(Z2,M),那么KD(Z1,Z2)=0。Z值间的距离:给定两
个Z值序列Z1,Z2,定义它们之间的距离为:
dist(Z1,Z2)=KD(Z1,Z2)
Z值间的比较关系:给定两个Z值序列Z1,Z2,定义它们之间的比较关系如下:
步骤203:将高维空间中数据集D包括的每一个数据点对应的Z值按照升序排列,得
到排序后的Z',并按照该Z值升序的顺序重新将数据点进行排列,得到排序后的数据集D',
将数据集D'存储到磁盘上。
请参考图4,为排序示意图,最终得到排序后的数据集D'。
在数据集D'中的数据点存储到磁盘上时,可以存储为多个磁盘页面,每一个磁盘
页面的大小为B,表示一个磁盘页面可以容纳的数据点的个数,那么整个数据集D'将占据
个磁盘页面。
步骤204:在每一个磁盘页面上选择第一数据点和最后一个数据点作为代表数据
点,这两个代表数据点对应的Z值作为该磁盘页面的代表。
其中,在各个磁盘页面上选择的数据点个数可以相同也可以不同,且选择的数据
点也可以是随机选择,优选地,设定在每一个磁盘页面上选择数据点的个数为2,且选择第
一个数据点和最后一个数据点作为代表数据点。
可以记第i个磁盘页面上选取的代表为<Li,Ui>。
步骤205:将各个磁盘页面上选择的两个代表数据点对应的Z值构建为B+树索引,
该B+树索引和各个磁盘页面存储的数据点构成索引表T。
步骤206:根据索引表的构成方式建立N个索引表。
由于利用一个索引表进行数据点的查询时,可能存在最近邻候选点的漏报问题,
从而给查询结果的准确率带来影响,因此,为了减少最近邻候选点的漏报,可以建立多个索
引表,以根据多个索引表中每一个磁盘页面与查询点的距离,进行数据查询的操作。
由于D'的原因,每创建一个索引表就意味着多一份原始数据集的拷贝,对于大规
模高维数据集来说,这是一笔可观的空间开销。由于本实施例使用了聚敛性更高的z-order
曲线,因此在索引中邻近点的局部聚敛性得到进一步优化,使得在最近邻查询时同样的磁
盘访问能够加载到更多候选点,分担了多个索引表的任务。本实施例相对于现有技术可以
建立更少的索引表达到相同的搜索精度。
步骤207:确定查询点以及设置查询过程中能够加载的磁盘页面个数Np。
步骤208:针对每一个索引表,计算当前索引表中每一个磁盘页面与查询点之间的
距离。
其中,查询点q与一个磁盘页面之间的距离可以通过如下公式来计算:
其中,Zq用于表征所述查询点q对应的Z值,L和U分别为在该当前磁盘页面上选择
的两个代表数据点分别对应的Z值;dist(Zq,L)用于表征Zq与L之间的距离,dist(Zq,U)用于
表征Zq与U之间的距离。
对于两个Z值之间的大小关系,以及两个Z值之间的距离,可以根据步骤202来确
定。
步骤209:将每一个索引表中距离所述查询点最近的磁盘页面,以及该磁盘页面相
邻的一个磁盘页面加载到页面集Q中。
步骤210:在页面集Q中计算距离查询点最近的目标磁盘页面,将目标磁盘页面从
页面集Q中取出。
步骤211:针对取出的目标磁盘页面上的各个数据点进行查询,并将目标磁盘页面
所属索引表中与目标磁盘页面相邻的且未加载到页面集Q中的磁盘页面加载到页面集Q中,
并继续执行步骤210-211,直到步骤211中进行查询的目标磁盘页面为从所述页面集Q中取
出的第NP个磁盘页面为止。
针对步骤209-211,假设有三个索引表,N1、N2和N3,在N1索引表中确定距离查询点
最近的是磁盘页面B11,在N2索引表中确定距离查询点最近的是磁盘页面B25,在N3索引表
中确定距离查询点最近的是磁盘页面B32,那么将每一个索引表中距离查询点最近的磁盘
页面以及该磁盘页面的一个相邻磁盘页面加载到页面集Q中,本实施例以加载该最近距离
的磁盘页面的右侧磁盘页面为例进行说明,那么将磁盘页面B11、磁盘页面B12、磁盘页面
B25、磁盘页面B26、磁盘页面B32和磁盘页面B33加载到页面集Q中。
在页面集Q中包括的6个磁盘页面中进一步确定距离查询点q最近的磁盘页面,假
设该目标磁盘页面为磁盘页面B25,那么将磁盘页面B25从页面集Q中取出,以对磁盘页面
B25上存储的各个数据点进行相似性查询。
由于页面集Q中磁盘页面B25被取出,那么确定磁盘页面B25所属索引表为N2,且由
于磁盘页面B26已经被加载到了页面集Q中,那么将磁盘页面B24加载到页面集Q中,并继续
执行步骤210-211。
在本发明一个实施例中,若只使用一个索引表进行查询,那么无需建立页面集Q,
只需要在索引表中确定与查询点最近的磁盘页面,每确定出距离查询点最近的磁盘页面之
后则进行加载查询,在查询结束后继续在该索引表剩余的磁盘页面中确定距离查询点最近
的磁盘页面,直到加载到Np个磁盘页面为止。
请参考图5,本发明实施例还提供了一种高维空间数据的查询装置,包括:
确定单元501,用于针对高维空间的每一个数据点,确定相应的Z值;
放置单元502,用于将各个数据点按照相应Z值的大小顺序,依次存储到磁盘中的
磁盘页面上;
建立单元503,用于根据每一个数据点相应的Z值和存储有数据点的各个磁盘页
面,建立索引表;
计算单元504,用于确定查询点,并计算所述索引表中每一个磁盘页面与所述查询
点的距离;
查询单元505,用于根据所述索引表中每一个磁盘页面与所述查询点的距离,进行
数据查询。
在本发明一个实施例中,所述确定单元,具体用于利用下述方式确定高维空间中
当前数据点p的Z值:
确定复合LSH函数G,其中,复合LSH函数G中包括m个哈希函数,m为不小于1的整数;
计算当前数据点p在复合LSH函数G下的复合哈希键K=G(p);其中,
ki用于表征复合哈希键K中第i个哈希值,每一个哈希值为二进制数;
针对复合哈希键K中包括的每一个哈希值进行位交叉操作,生成当前数据点p的Z
值Z(p);
利用上述确定当前数据点p的Z值的方式,确定高维空间中除当前数据点p以外的
其他每一个数据点相应的Z值。
在本发明一个实施例中,所述建立单元,具体用于:
在每一个磁盘页面上选择第一设定个数的数据点作为相应磁盘页面的代表数据
点;
根据每一个代表数据点对应的Z值,构建B+树索引;
将所述B+树索引和存储有数据点的各个磁盘页面,构建为索引表。
在本发明一个实施例中,所述第一设定个数为2;
所述计算单元,具体用于利用第一公式计算所述索引表中当前磁盘页面与所述查
询点q的距离DistPage:
所述第一公式:
其中,Zq用于表征所述查询点q对应的Z值,L和U分别为在该当前磁盘页面上选择
的两个代表数据点分别对应的Z值;dist(Zq,L)用于表征Zq与L之间的距离,dist(Zq,U)用于
表征Zq与U之间的距离。
在本发明一个实施例中,所述建立单元,进一步用于建立第二设定个数的索引表,
以根据所述第二设定个数的索引表执行所述根据所述索引表中每一个磁盘页面与所述查
询点的距离,进行数据查询的操作;
所述查询单元,具体用于执行如下步骤:
S1:将每一个索引表中距离所述查询点最近的磁盘页面,以及该磁盘页面相邻的
一个磁盘页面加载到页面集中;
S2:在所述页面集中计算距离所述查询点最近的目标磁盘页面,将所述目标磁盘
页面从所述页面集中取出;
S3:针对取出的所述目标磁盘页面上的各个数据点进行查询,并将所述目标磁盘
页面所属索引表中与所述目标磁盘页面相邻的且未加载到所述页面集中的磁盘页面加载
到所述页面集中,并继续执行S2-S3,直到S3中进行查询的目标磁盘页面为从所述页面集中
取出的第NP个磁盘页面为止,其中,NP为预先设置的第三设定个数。
本发明还提供了一种计算机可读介质,存储用于使一机器执行如本文所述的程序
代码的查询方法的指令。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上
存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算
机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实
施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、
CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,
可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过
基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而
实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板
中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程
序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而
实现上述实施例中任一实施例的功能。
综上所述,本发明各个实施例至少可以实现如下有益效果:
1、在本发明实施例中,通过确定高维空间中每一个数据点的Z值,按照各个数据点
Z值的大小顺序,对数据点进行存储,如此,相邻的两个磁盘页面上的数据点对应Z值具有一
定的关系,例如当前磁盘页面上各个数据点分别对应的Z值均比相邻磁盘页面上各个数据
点分别对应的Z值大或小,因此,磁盘页面上的数据点具有一定的聚敛性,因此,根据查询点
与每一个磁盘页面的距离来进行数据查询,可以提高查询效率。
2、在本发明实施例中,通过将高维空间的数据点构建为z-order曲线,可以使数据
点在高维空间中呈现Z型,且z-order曲线具有局部空间优先遍历特性,可以改善最近邻候
选点在磁盘中的局部聚敛性,使得在更有限的磁盘访问次数下仍旧保持较高的查询精度。
3、在本发明实施例中,通过建立多个索引表,以根据多个索引表中包括的每一个
磁盘页面与所述查询点的距离,进行数据查询的操作,可以减少最近邻候选点的漏报问题。
4、在本发明实施例中,通过选取z-order曲线作为复合哈希键值的排序依据,进一
步优化候选点的局部聚敛性,从而改善磁盘访问效率,提升最近邻搜索的准确率。同时,准
确率的提升也减轻了对多索引表的依赖,可以减少索引表的个数,降低索引结构规模,节省
空间开销。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施
例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体
或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在
任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非
排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,
而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固
有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过
程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序
在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光
盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技
术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、
等同替换、改进等,均包含在本发明的保护范围内。