CN106777131A - 一种高维空间数据的查询方法、装置及计算机可读介质 - Google Patents
一种高维空间数据的查询方法、装置及计算机可读介质 Download PDFInfo
- Publication number
- CN106777131A CN106777131A CN201611170584.2A CN201611170584A CN106777131A CN 106777131 A CN106777131 A CN 106777131A CN 201611170584 A CN201611170584 A CN 201611170584A CN 106777131 A CN106777131 A CN 106777131A
- Authority
- CN
- China
- Prior art keywords
- page
- disk page
- point
- query
- disk
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 239000002131 composite material Substances 0.000 claims description 43
- 230000006870 function Effects 0.000 claims description 32
- 239000002184 metal Substances 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/40—Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
- G06F16/41—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/40—Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
- G06F16/43—Querying
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种高维空间数据的查询方法、装置及计算机可读介质,包括:针对高维空间的每一个数据点,确定相应的Z值;将各个数据点按照相应Z值的大小顺序,依次存储到磁盘中的磁盘页面上;根据每一个数据点相应的Z值和存储有数据点的各个磁盘页面,建立索引表;确定查询点,并计算所述索引表中每一个磁盘页面与所述查询点的距离;根据所述索引表中每一个磁盘页面与所述查询点的距离,进行数据查询。本方案可以提高查询效率。
Description
技术领域
本发明涉及查询技术领域,特别涉及一种高维空间数据的查询方法、装置及计算机可读介质。
背景技术
随着多媒体数据爆炸性的增长,海量信息的检索也遇到了前所未有的挑战。由于多媒体数据多为非结构化数据,包括图像、视频和音频等,其语义信息无法直接由底层特征表达,使得传统信息检索不再适用,迫切需要发展面向多媒体数据的检索方法。
通常的做法是为多媒体数据元提取特征向量,把海量多媒体数据库上的相似性检索转化为大规模高维特征向量间的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、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种高维空间数据的查询方法,其特征在于,包括:
针对高维空间的每一个数据点,确定相应的Z值;
将各个数据点按照相应Z值的大小顺序,依次存储到磁盘中的磁盘页面上;
根据每一个数据点相应的Z值和存储有数据点的各个磁盘页面,建立索引表;
确定查询点,并计算所述索引表中每一个磁盘页面与所述查询点的距离;
根据所述索引表中每一个磁盘页面与所述查询点的距离,进行数据查询。
2.根据权利要求1所述的方法,其特征在于,所述针对高维空间的每一个数据点,确定相应的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值。
3.根据权利要求1所述的方法,其特征在于,所述根据每一个数据点相应的Z值和存储有数据点的各个磁盘页面,建立索引表,包括:
在每一个磁盘页面上选择第一设定个数的数据点作为相应磁盘页面的代表数据点;
根据每一个代表数据点对应的Z值,构建B+树索引;
将所述B+树索引和存储有数据点的各个磁盘页面,构建为索引表。
4.根据权利要求3所述的方法,其特征在于,
所述第一设定个数为2;
所述计算所述索引表中每一个磁盘页面与所述查询点的距离,包括:
利用第一公式计算所述索引表中当前磁盘页面与所述查询点q的距离DistPage:
所述第一公式:
其中,Zq用于表征所述查询点q对应的Z值,L和U分别为在该当前磁盘页面上选择的两个代表数据点分别对应的Z值;dist(Zq,L)用于表征Zq与L之间的距离,dist(Zq,U)用于表征Zq与U之间的距离。
5.根据权利要求1-4中任一所述的方法,其特征在于,
进一步包括:建立第二设定个数的索引表,以根据所述第二设定个数的索引表执行所述根据所述索引表中每一个磁盘页面与所述查询点的距离,进行数据查询的操作;
所述根据所述索引表中每一个磁盘页面与所述查询点的距离,进行数据查询,包括:
S1:将每一个索引表中距离所述查询点最近的磁盘页面,以及该磁盘页面相邻的一个磁盘页面加载到页面集中;
S2:在所述页面集中计算距离所述查询点最近的目标磁盘页面,将所述目标磁盘页面从所述页面集中取出;
S3:针对取出的所述目标磁盘页面上的各个数据点进行查询,并将所述目标磁盘页面所属索引表中与所述目标磁盘页面相邻的且未加载到所述页面集中的磁盘页面加载到所述页面集中,并继续执行S2-S3,直到S3中进行查询的目标磁盘页面为从所述页面集中取出的第NP个磁盘页面为止,其中,NP为预先设置的第三设定个数。
6.一种高维空间数据的查询装置,其特征在于,包括:
确定单元,用于针对高维空间的每一个数据点,确定相应的Z值;
放置单元,用于将各个数据点按照相应Z值的大小顺序,依次存储到磁盘中的磁盘页面上;
建立单元,用于根据每一个数据点相应的Z值和存储有数据点的各个磁盘页面,建立索引表;
计算单元,用于确定查询点,并计算所述索引表中每一个磁盘页面与所述查询点的距离;
查询单元,用于根据所述索引表中每一个磁盘页面与所述查询点的距离,进行数据查询。
7.根据权利要求6所述的高维空间数据的查询装置,其特征在于,
所述确定单元,具体用于利用下述方式确定高维空间中当前数据点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+树索引和存储有数据点的各个磁盘页面,构建为索引表。
8.根据权利要求7所述的高维空间数据的查询装置,其特征在于,
所述第一设定个数为2;
所述计算单元,具体用于利用第一公式计算所述索引表中当前磁盘页面与所述查询点q的距离DistPage:
所述第一公式:
其中,Zq用于表征所述查询点q对应的Z值,L和U分别为在该当前磁盘页面上选择的两个代表数据点分别对应的Z值;dist(Zq,L)用于表征Zq与L之间的距离,dist(Zq,U)用于表征Zq与U之间的距离。
9.根据权利要求6-8中任一所述的高维空间数据的查询装置,其特征在于,
所述建立单元,进一步用于建立第二设定个数的索引表,以根据所述第二设定个数的索引表执行所述根据所述索引表中每一个磁盘页面与所述查询点的距离,进行数据查询的操作;
所述查询单元,具体用于执行如下步骤:
S1:将每一个索引表中距离所述查询点最近的磁盘页面,以及该磁盘页面相邻的一个磁盘页面加载到页面集中;
S2:在所述页面集中计算距离所述查询点最近的目标磁盘页面,将所述目标磁盘页面从所述页面集中取出;
S3:针对取出的所述目标磁盘页面上的各个数据点进行查询,并将所述目标磁盘页面所属索引表中与所述目标磁盘页面相邻的且未加载到所述页面集中的磁盘页面加载到所述页面集中,并继续执行S2-S3,直到S3中进行查询的目标磁盘页面为从所述页面集中取出的第NP个磁盘页面为止,其中,NP为预先设置的第三设定个数。
10.一种计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行权利要求1至5中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611170584.2A CN106777131A (zh) | 2016-12-16 | 2016-12-16 | 一种高维空间数据的查询方法、装置及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611170584.2A CN106777131A (zh) | 2016-12-16 | 2016-12-16 | 一种高维空间数据的查询方法、装置及计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106777131A true CN106777131A (zh) | 2017-05-31 |
Family
ID=58892447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611170584.2A Pending CN106777131A (zh) | 2016-12-16 | 2016-12-16 | 一种高维空间数据的查询方法、装置及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106777131A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019985A (zh) * | 2017-12-29 | 2019-07-16 | 上海全土豆文化传播有限公司 | 索引文件的建立、查询方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070288526A1 (en) * | 2006-06-08 | 2007-12-13 | Emc Corporation | Method and apparatus for processing a database replica |
CN104199827A (zh) * | 2014-07-24 | 2014-12-10 | 北京大学 | 基于局部敏感哈希的大规模多媒体数据的高维索引方法 |
CN105574212A (zh) * | 2016-02-24 | 2016-05-11 | 北京大学 | 一种多索引磁盘哈希结构的图像检索方法 |
CN105740428A (zh) * | 2016-01-29 | 2016-07-06 | 北京大学 | 一种基于b+树的高维磁盘索引结构和图像检索方法 |
-
2016
- 2016-12-16 CN CN201611170584.2A patent/CN106777131A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070288526A1 (en) * | 2006-06-08 | 2007-12-13 | Emc Corporation | Method and apparatus for processing a database replica |
CN104199827A (zh) * | 2014-07-24 | 2014-12-10 | 北京大学 | 基于局部敏感哈希的大规模多媒体数据的高维索引方法 |
CN105740428A (zh) * | 2016-01-29 | 2016-07-06 | 北京大学 | 一种基于b+树的高维磁盘索引结构和图像检索方法 |
CN105574212A (zh) * | 2016-02-24 | 2016-05-11 | 北京大学 | 一种多索引磁盘哈希结构的图像检索方法 |
Non-Patent Citations (2)
Title |
---|
YINGFAN LIU 等: "SK-LSH: an efficient index structure for approximate nearest neighbor search", 《PROCEEDINGS OF THE VLDB ENDOWMENT》 * |
原玥: "高维数据最近邻查询算法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019985A (zh) * | 2017-12-29 | 2019-07-16 | 上海全土豆文化传播有限公司 | 索引文件的建立、查询方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11048966B2 (en) | Method and device for comparing similarities of high dimensional features of images | |
JP6028567B2 (ja) | データ格納プログラム、データ検索プログラム、データ格納装置、データ検索装置、データ格納方法及びデータ検索方法 | |
CN104199827B (zh) | 基于局部敏感哈希的大规模多媒体数据的高维索引方法 | |
CN107391554B (zh) | 高效分布式局部敏感哈希方法 | |
US11604834B2 (en) | Technologies for performing stochastic similarity searches in an online clustering space | |
US10521441B2 (en) | System and method for approximate searching very large data | |
Song et al. | Solutions for processing k nearest neighbor joins for massive data on mapreduce | |
KR100903961B1 (ko) | 시그니처 파일을 이용한 고차원 데이터 색인 및 검색방법과 그 시스템 | |
CN111324750B (zh) | 一种大规模文本相似度计算及文本查重方法 | |
US10191998B1 (en) | Methods of data reduction for parallel breadth-first search over graphs of connected data elements | |
US12013899B2 (en) | Building a graph index and searching a corresponding dataset | |
US11853279B2 (en) | Data storage using vectors of vectors | |
CN105488176A (zh) | 数据处理方法和装置 | |
CN111221813B (zh) | 数据库索引以及数据库查询的处理方法、装置及设备 | |
CN114691721A (zh) | 图数据的查询方法、装置、电子设备及存储介质 | |
CN110889424B (zh) | 向量索引建立方法及装置和向量检索方法及装置 | |
CN113918807A (zh) | 数据推荐方法、装置、计算设备及计算机可读存储介质 | |
CN106777131A (zh) | 一种高维空间数据的查询方法、装置及计算机可读介质 | |
CN110020001A (zh) | 字符串数据的存储、查询方法以及相应的设备 | |
Yammahi et al. | An efficient technique for searching very large files with fuzzy criteria using the pigeonhole principle | |
JP2004046612A (ja) | データマッチング方法、データマッチング装置、データマッチングプログラムおよびコンピュータで読み取り可能な記録媒体 | |
CN110866088B (zh) | 一种语料库之间的快速全文检索方法及系统 | |
JP2000112973A (ja) | 空間インデックス方法及び空間インデックス処理プログラムを格納した媒体 | |
CN110880005B (zh) | 向量索引建立方法及装置和向量检索方法及装置 | |
JP3639480B2 (ja) | 類似データ検索方法,類似データ検索装置,および類似データ検索用プログラム記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170531 |