一种大规模高维数据的分布式索引方法及系统与流程

文档序号:14554981阅读:234来源:国知局
一种大规模高维数据的分布式索引方法及系统与流程

本发明涉及大数据检索查询技术领域,更具体地,涉及一种大规模高维数据的分布式索引方法及系统。



背景技术:

在信息技术迅速发展的今天,非结构化数据如文本、图像、视频以及音频等都呈现出指数级的增长。如何从海量的互联网数据中快速、准确地获取用户想要的信息,是非结构化大数据管理与检索中的一个重要技术问题。谷歌、百度等互联网公司所提供的文本、图像等搜索服务为人们获取信息带来了极大的便利。而在这些搜索服务的背后,都需要近似近邻查询技术的支持。在大规模高维数据的应用场景下,精确的近邻查询需要耗费大量存储和计算资源,且查询时间太长、索引系统吞吐量过低,实际应用价值偏低。近似近邻查询技术可以大幅度缩短查询时间、降低存储和计算开销,同时保证查询结果与精确查询结果近似,因此具有更高的实用性。除了信息检索以外,相似检索技术被广泛应用于机器学习、数据挖掘、多媒体管理等领域。

在数据规模不断增长的今天,越来越多的应用都是基于存储在分布式系统中的大规模数据,例如互联网文本、图像、视频检索等。现有的很多索引算法都是在单机的环境下实现的,而在分布式环境下,现有大部分索引方法都要求将所有数据迁移到同一台机器中进行集中式处理,但这违背了数据的分布式存储方式,带来了很高的数据迁移代价,并且对单机的数据处理性能要求很高。



技术实现要素:

本发明提供一种克服上述问题或者至少部分地解决上述问题的一种大规模高维数据的分布式索引方法及系统。

根据本发明的一个方面,提供了一种大规模高维数据的分布式索引方法,包括:

将存储于每个子节点上的每个高维数据划分为m个低维数据,将每个高维数据对应的低维数据存储于对应的m个子空间中,其中,m为大于等于2的整数;

对于所有子节点上的同一子空间的低维数据,采用分布式聚类算法,得到每个子空间的k个聚类中心,将每一个聚类中心作为一个一维关键字,将每个子空间的k个关键字进行组合,得到km个m维关键字,其中,k为正整数;

在每个子节点上计算该子节点的每一个子空间中的低维数据隶属的聚类中心,进而得到每个高维数据隶属的m维关键字,以得到每一个m维关键字包括的所有的高维数据;

确定所述km个m维关键字中与所述查询数据匹配的多个m维关键字;

根据每一个m维关键字包括的所有的高维数据,确定每一个相近的m维关键字中的所有高维数据中与所述查询数据匹配的高维数据,找到与所述查询数据匹配的所有的高维数据,作为查询结果。

在上述技术方案的基础上,本发明还可以作如下改进。

进一步的,还包括:

将所有的高维数据存储于多个子节点组成的计算机集群中,从多个子节点中选取一个子节点作为所有子节点的主节点。

进一步的,所述将存储于每个子节点上的每个高维数据划分为m个低维数据,将每个高维数据对应的低维数据存储于对应的m个子空间中具体包括:

在每个子节点上将本节点上的每一个p维数据在维度上划分为m个p/m维数据,并将每个p维数据的每个p/m维数据存储于对应的子空间中,其中,p/m为整数,所述子空间的个数为m个。

进一步的,对于所有子节点上的同一子空间的低维数据,采用分布式聚类算法,得到每个子空间的k个聚类中心,将每一个聚类中心作为一个一维关键字,将每个子空间的k个关键字进行组合,得到km个m维关键字具体包括:

采用分布式k-means聚类算法对所有子节点上的第i个子空间的p/m维数据进行分布式聚类,得到每个子空间的k个聚类中心,分别记

u1=[u11,u12,...,u1k]

u2=[u21,u22,...,u2k]

....

为ui=[ui1,ui2,...,uik],其中,i=1,2,…m,m表示第m个子空间,k

....

um=[um1,um2,...,umk]

表示第k个聚类中心;

将每一个聚类中心作为一个关键字,在主节点上对m个子空间的k个聚类中心进行组合,得到km个m维关键字,记为u=[u1x,u2y,...,umw],其中,0<x、y、w≤k,且x、y、w均为整数,u表示m维关键字,x表示从u1=[u11,u12,...,u1k]中选取的第x个聚类中心,y表示从u2=[u21,u22,...,u2k]中选取的第y个聚类中心,w表示从um=[um1,um2,...,umk]中选取的第w个聚类中心。

进一步的,所述在每个子节点上计算该子节点的每一个子空间中的低维数据隶属的聚类中心,进而得到每个高维数据隶属的m维关键字,以得到每一个m维关键字包括的所有的高维数据具体包括:

在每一个子节点上计算该子节点的每一个子空间中的每一个p/m维数据与该子空间的k个聚类中心的欧氏距离,将距离最近的聚类中心作为该p/m维数据隶属的聚类中心,进而得到该子节点的每一个子空间的每一个p/m维数据隶属的聚类中心;

对于每一个子节点上的每一个p维数据,将其对应的m个p/m维数据隶属的聚类中心合并,得到该p维数据对应的m维关键字,进而得到每一个m维关键字所包含的所有的p维数据。

进一步的,所述确定所述km个m维关键字中与所述查询数据匹配的多个m维关键字具体包括:

在主节点上,将p维查询数据划分为m个p/m维数据,计算p维查询数据与km个m维关键字中的每一个m维关键字之间的欧氏距离;

将与所述查询数据的欧氏距离最近的前a个m维关键字作为匹配的m维关键字;或者,将与所述查询数据的欧氏距离小于预设距离的b个m维关键字作为匹配的m维关键字,其中,a,b均为正整数;

主节点将所述查询数据以及与所述查询数据匹配的所有m维关键字分发给每一个子节点。

进一步的,所述根据每一个m维关键字包括的所有的高维数据,确定每一个相近的m维关键字中的所有高维数据中与所述查询数据匹配的高维数据,找到与所述查询数据匹配的所有的高维数据,作为查询结果具体包括:

在每一个子节点上,计算所述查询数据与匹配的每一个m维关键字所包含的每一个高维数据的欧氏距离;

将与所述查询数据的欧氏距离最近的前e个高维数据作为与所述查询数据匹配的高维数据;或者,将与所述查询数据的欧氏距离小于预设距离的g个高维数据作为匹配的高维数据,其中,e,g均为正整数;

在主节点上汇总所有子节点上找到的与所述查询数据匹配的高维数据,将汇总的所有高维数据作为查询结果返回。

进一步的,所述m的取值为2。

根据本发明的另一个方面,提供了一种大规模高维数据的分布式索引系统,包括:

划分模块,用于将存储于每个子节点上的每个高维数据划分为m个低维数据,将每个高维数据对应的低维数据存储于对应的m个子空间中,其中,m为大于等于2的整数;

聚类模块,用于对于所有子节点上的同一子空间的低维数据,采用分布式聚类算法,得到每个子空间的k个聚类中心,将每一个聚类中心作为一个一维关键字,将每个子空间的k个关键字进行组合,得到km个m维关键字;

计算模块,用于在每个子节点上计算该子节点的每一个子空间中的低维数据隶属的聚类中心,进而得到每个高维数据隶属的m维关键字,以得到每一个m维关键字包括的所有的高维数据;

第一确定模块,用于确定所述km个m维关键字中与所述查询数据匹配的多个m维关键字;

第二确定模块,用于根据每一个m维关键字包括的所有的高维数据,确定每一个相近的m维关键字中的所有高维数据中与所述查询数据匹配的高维数据,找到与所述查询数据匹配的所有的高维数据,作为查询结果。

根据本发明的又一个方面,提供了一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行大规模高维数据的分布式索引方法。

本发明提供了一种大规模高维数据的分布式索引方法及系统,将所有的高维数据分布式存储于集群上,将每一个高维数据划分为多个低维数据,每一个子空间中存储有所有高维数据的一个低维数据,采用分布式聚类算法得到每一个子空间的所有低维数据的多个聚类中心,对每个子空间的多个聚类中心进行组合,得到所有高维数据的多个多维关键字,并计算每一个多维关键字包含的高维数据,在查询时,先查询与查询数据匹配的多维关键字,再查询每一个关键字包含的高维数据。本发明将分布式聚类、分布式查询以及多个子空间的倒排索引结合起来,保证了检索查询准确度的前提下,提高检索查询的效率,该方法可以应用于大规模分布式数据的检索之中,具有较好的可扩展性。

附图说明

图1为本发明一个实施例的大规模高维数据的分布式索引方法流程图;

图2为本发明一个实施例中构建的二维聚类中心的示意图;

图3为本发明一个实施例中根据查询数据找到匹配的二维聚类中心的示意图;

图4为本发明一个实施例的大规模高维数据的分布式索引系统连接框图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

参见图1,提供了本发明一个实施例的大规模高维数据的分布式索引方法,将分布式应用和多重索引结合起来,保证数据检索精准度的前提下,还能够提高数据检索的效率。该方法包括:将存储于每个子节点上的每个高维数据划分为m个低维数据,将每个高维数据对应的低维数据存储于对应的m个子空间中,其中,m为大于等于2的整数;对于所有子节点上的同一子空间的低维数据,采用分布式聚类算法,得到每个子空间的k个聚类中心,将每一个聚类中心作为一个一维关键字,将每个子空间的k个关键字进行组合,得到km个m维关键字;在每个子节点上计算该子节点的每一个子空间中的低维数据隶属的聚类中心,进而得到每个高维数据隶属的m维关键字,以得到每一个m维关键字包括的所有的高维数据;确定所述km个m维关键字中与所述查询数据匹配的多个m维关键字;根据每一个m维关键字包括的所有的高维数据,确定每一个相近的m维关键字中的所有高维数据中与所述查询数据匹配的高维数据,找到与所述查询数据匹配的所有的高维数据,作为查询结果。

本实施例主要适用于大规模高维数据的检索查询,由于高维数据的规模比较大,因此,在本实施例中,先将所有的高维数据分布式存储于由多个子节点构成的计算机集群中,从多个子节点中选取一个子节点作为所有子节点的主节点,用来管理所有的子节点,以及负责所有子节点上的数据的收集和分发。为了实现大规模高维数据的检索查询,将每一个子节点上的高维数据进行降维,一个高维数据通过降维形成多个低维数据。将每一个高维数据的每一个低维数据存储于对应的子空间中,即每一个子空间对应存储每一个高维数据降维后的某一个低维数据,所有子节点上的高维数据均进行相同的处理。

对于所有子节点上的同一子空间中的低维数据,由于所有高维数据的同一子空间中对应的低维数据存储于不同的子节点上,为了提高聚类处理的速度和效率,本实施例中采用分布式聚类算法来对所有子节点上的同一子空间中的低维数据进行聚类,得到每一个子空间的k个聚类中心,将每一个子空间中的一个聚类中心作为一个一维关键字。对每一个子空间的聚类中心进行组合,得到高维数据所有可能的多维关键字。通过在每一个子节点上计算每一个子空间的低维数据隶属的聚类中心,进而组合得到每一个高维数据隶属的多维关键字,以便最终得到每一个多维关键字所包含的所有高维数据。

在进行查询时,先在主节点上从所有可能的多维关键字中找到与查询数据匹配的多个多维关键字,然后根据与查询数据匹配的多个多维关键字,在各个子节点上相应的多维关键字所包括的所有的高维数据中查找与查询数据匹配的高维数据,将所有子节点上查找得到的与查询数据匹配的高维数据进行汇总,得到最终查询数据的查询结果。

本实施例将分布式聚类、分布式查询以及多个子空间的多重索引结合起来,保证了检索查询准确度的前提下,提高检索查询的效率,该方法可以应用于大规模分布式数据的检索之中,具有较好的可扩展性。

在上述实施例的基础上,本发明的一个实施例中,所述将存储于每个子节点上的每个高维数据划分为m个低维数据,将每个高维数据对应的低维数据存储于对应的m个子空间中具体包括:在每个子节点上将本节点上的每一个p维数据在维度上划分为m个p/m维数据,并将每个p维数据的每个p/m维数据存储于对应的子空间中,其中,p/m为整数,所述子空间的个数为m个。

在具体对每一个高维数据进行降维的过程中,假设所有的高维数据均为p维数据,p大于等于2。在每一个子节点上,将本节点上的每一个p维数据划分为m个p/m维的低维数据,其中,p/m为整数,即p是m的整数倍,m为正整数。将每一个p维的高维数据划分为m个p/m维的低维数据后,将每一个低维数据存储于对应的子空间中,子空间的个数为m个。比如,对于子节点上的4维的高维数据,划分为2个2维的低维数据,分别将2个2维的低维数据存储于对应的两个子空间中。对于所有子节点上的p维的高维数据,均进行相同的降维处理,并将降维后的各个低维数据存储到对应的子空间中。

在上述各实施例的基础上,本发明的一个实施例中,所述对于所有子节点上的同一子空间的低维数据,采用分布式聚类算法,得到每个子空间的k个聚类中心,将每一个聚类中心作为一个一维关键字,将每个子空间的k个关键字进行组合,得到km个m维关键字具体包括:采用分布式k-means聚类算法对所有子节点上的第i个子空间的p/m维数据进行分布式聚类,得到每个子空间的k个聚类中心,分别记为

u1=[u11,u12,...,u1k]

u2=[u21,u22,...,u2k]

....

ui=[ui1,ui2,...,uik],其中,i=1,2,…m,m表示第m个子空间,k表示

....

um=[um1,um2,...,umk]

第k个聚类中心;将每一个聚类中心作为一个关键字,在主节点上对m个子空间的k个聚类中心进行组合,得到km个m维关键字,记为u=[u1x,u2y,...,umw],其中,0<x、y、w≤k,且x、y、w均为整数,u表示m维关键字,x表示从u1=[u11,u12,...,u1k]中选取的第x个聚类中心,y表示从u2=[u21,u22,...,u2k]中选取的第y个聚类中心,w表示从um=[um1,um2,...,umk]中选取的第w个聚类中心。

上述实施例中对每一个子节点上的p维的高维数据进行了降维,形成了m个p/m维的低维数据,并将每一个低维数据存储于对应的子空间中。在本实施例中,对于所有子节点上的同一子空间的低维数据,由于同一子空间的低维数据存储于不同的子节点上,为了提高聚类处理的速度和效率,本实施例采用分布式k-means聚类算法,得到所有子节点的同一个子空间的低维数据的k个聚类中心,即对于m个子空间,每一个子空间都对应有k个聚类中心。其中,分布式k-means聚类算法采用的是现有的分布式聚类算法,在此不再赘述。随后在主节点上将所有子空间的k个聚类中心进行组合,得到所有可能的多维关键字,总共得到km个多维关键字。

在上述各实施例的基础上,本发明的另一个实施例中,所述在每个子节点上计算该子节点的每一个子空间中的低维数据隶属的聚类中心,进而得到每个高维数据隶属的m维关键字,以得到每一个m维关键字包括的所有的高维数据具体包括:在每一个子节点上计算该子节点的每一个子空间中的每一个p/m维数据与该子空间的k个聚类中心的欧氏距离,将距离最近的聚类中心作为该p/m维数据隶属的聚类中心,进而得到该子节点的每一个子空间的每一个p/m维数据隶属的聚类中心;对于每一个子节点上的每一个p维数据,将其对应的m个p/m维数据隶属的聚类中心合并,得到该p维数据对应的m维关键字,进而得到每一个m维关键字所包含的所有的p维数据。

上述实施例中,通过分布式k-means聚类算法计算出所有子节点的同一个子空间的低维数据的k个聚类中心,本实施例在每一个子节点上,计算每个子空间中的低维数据隶属的聚类中心。在具体计算隶属的聚类中心的过程中,通过计算子空间中的低维数据与k个聚类中心的欧氏距离,将与低维数据的欧氏距离最近的聚类中心作为该低维数据隶属的聚类中心,将子空间中每一个低维数据隶属的聚类中心均计算出来。由于一个高维数据被分配到多个子空间中,将多个子空间中与高维数据对应的低维数据隶属的聚类中心进行组合,得到高维数据隶属的m维关键字。对每一个子节点中的数据均进行相同的处理,得到每一个子节点上每一个高维数据隶属的m维关键字,进而可以统计出每一个m维关键字包含的所有的高维数据。

在上述各实施例的基础上,本发明的一个实施例中,所述确定所述km个m维关键字中与所述查询数据匹配的多个m维关键字具体包括:在主节点上,将p维查询数据划分为m个p/m维数据,计算p维查询数据与km个m维关键字中的每一个m维关键字之间的欧氏距离;将与所述查询数据的欧氏距离最近的前a个m维关键字作为匹配的m维关键字;或者,将与所述查询数据的欧氏距离小于预设距离的b个m维关键字作为匹配的m维关键字;主节点将所述查询数据以及与所述查询数据匹配的所有m维关键字分发给每一个子节点。

在检索查询的过程中,主节点接收查询请求,主节点将p维的查询数据划分为m个p/m维的低维数据,并计算p维的查询数据与可能的km个m维关键字中每一个m维关键字之间的欧氏距离。在具体计算欧氏时,可以将p维查询数据看做m个低维数据的向量,每一个m维关键字看做m维的向量,计算两个向量之间的距离,即可得到查询数据与每一个m维关键字的欧氏距离。

根据查询数据与每一个m维关键字之间的欧氏距离的计算结果,将欧氏距离按照距离从小到大进行排序,将排列在前的a个聚类中心多维与查询数据匹配的m维关键字;或者设定欧氏距离的阈值,将与查询数据的欧氏距离小于设定阈值的b个聚类中心作为与查询数据匹配的m维关键字,至此在主节点上找到与查询数据相近的所有的m维关键字。随后,主节点将查询数据以及查找到的与查询数据相近的多个m维关键字分发给各个子节点。

在上述各实施例的基础上,本发明的另一个实施例中,根据每一个m维关键字包括的所有的高维数据,确定每一个相近的m维关键字中的所有高维数据中与所述查询数据匹配的高维数据,找到与所述查询数据匹配的所有的高维数据,作为查询结果具体包括:在每一个子节点上,计算所述查询数据与匹配的每一个m维关键字所包含的每一个高维数据的欧氏距离;将与所述查询数据的欧氏距离最近的前e个高维数据作为与所述查询数据匹配的高维数据;或者,将与所述查询数据的欧氏距离小于预设距离的g个高维数据作为匹配的高维数据;在主节点上收集汇总所有子节点上找到的与所述查询数据匹配的高维数据,将汇总的所有高维数据作为查询结果返回。

每一个子节点接收到主节点分发的查询数据以及与查询数据相近的多个m维关键字,由于前述在每一个子节点上已经计算出每一个m维关键字所包含的所有的高维数据,因此,可以在每一个子节点上找到与查询数据相近的每一个m维关键字所包含的高维数据。对于每一个m维关键字所包含的所有的高维数据,计算每一个高维数据与查询数据之间的欧氏距离,得到每一个高维数据与查询数据之间的欧氏距离,并按照欧氏距离从小到大的顺序进行排序,将与查询数据的欧氏距离最近的前e个高维数据作为与查询数据匹配的高维数据;或者,将与查询数据的欧氏距离小于预设距离的g个高维数据作为匹配的高维数据。

在每一个子节点中都找到与查询数据匹配的高维数据,将所有与查询数据匹配的高维数据都汇总到主节点上,作为查询结果进行返回,至此完成了整个的检索查询过程。

需要说明的是,通过大量的实验研究发现,其中,m取值为2是一个较优的选择,因此,下面以m=2,p=1024为例对本发明提供的分布式索引方法进行说明。

对于每一个子节点中的每一个1024维的高维数据,划分为2个512维的低维数据,并存储于对应的两个子空间中,因此,对于每一个子节点,均有两个子空间,一个子空间存储所有1024维数据的其中一个512维数据,另一个子空间存储所有1024维数据的另一个512维数据。每一个子节点中数据均分布在两个子空间中,可以理解为,每一个子节点中的两个子空间为相同的子空间,只是子空间中分布的数据不同。

参见图2,对于所有子节点上的两个子空间中的512维数据,采用分布式k-means聚类算法找到每一个子空间中所有512维数据的k个聚类中心,两个子空间中得到的k个聚类中心分别记为u=[u1,u2,…,uk]和v=[v1,v2,…,vk],其中,u1,u2,…,uk和v1,v2,…,vk分别为两个子空间中k个聚类中心。对u=[u1,u2,…,uk]和v=[v1,v2,…,vk]进行组合,能够得到k2个所有可能的关键字。

通过聚类找到了每个子空间的k个聚类中心,在每个子节点上,计算每一个子空间中的每一个512维数据隶属的聚类中心,将两个子空间中计算出来的512维数据隶属的聚类中心合并,得到每一个1024维数据所隶属的关键字,记为[uivj],表示每一个1024维数据的其中一个512维数据隶属于第i个聚类中心,另一个512维数据隶属于第j个聚类中心,通过同样的方法得到所有1024维数据所隶属的关键字,进而也可以统计出每一个关键字所包含的所有的1024维数据。

在检索查询的过程中,在主节点上,将1024维的查询数据q划分为2个512维的数据,先进行查询数据与k2个关键字中的每一个关键字进行欧氏距离的计算,找到与查询数据相近的多个关键字,可参见图3。然后主节点将查询数据以及找到的与查询数据相近的多个512维关键字分发给每一个子节点。在每一个子节点上,找到与查询数据相近的每一个关键字包含的所有的1024维数据,将查询数据与每一个相近的关键字所包含的每一个1024维数据进行欧氏距离的计算,找到每一个关键字中的所有1024维数据中与查询数据相近的多个1024维数据,在一个子节点上找到与查询数据相近的所有的1024维数据,将所有子节点上找到的与查询数据相近的1024维数据进行汇总,作为查询结果进行返回。

参见图4,提供了本发明一个实施例的大规模高维数据的分布式索引系统,包括划分模块21、聚类模块22、计算模块23、第一计算模块24和第二计算模块25。

划分模块21,用于用于将存储于每个子节点上的每个高维数据划分为m个低维数据,将每个高维数据对应的低维数据存储于对应的m个子空间中,其中,m为大于等于2的整数。

聚类模块22,用于对所有子节点上的同一子空间的低维数据,采用分布式聚类算法,得到每个子空间的k个聚类中心,将每一个聚类中心作为一个一维关键字,将每个子空间的k个关键字进行组合,得到km个m维关键字。

计算模块23,用于在每个子节点上计算该子节点的每一个子空间中的低维数据隶属的聚类中心,进而得到每个高维数据隶属的m维关键字,以得到每一个m维关键字包括的所有的高维数据。

第一确定模块24,用于确定所述km个m维关键字中与所述查询数据匹配的多个m维关键字。

第二确定模块25,用于根据每一个m维关键字包括的所有的高维数据,确定每一个相近的m维关键字中的所有高维数据中与所述查询数据匹配的高维数据,找到与所述查询数据匹配的所有的高维数据,作为查询结果。

本发明还提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述对应实施例所提供的大规模高维数据的分布式索引方法,例如包括:将存储于每个子节点上的每个高维数据划分为m个低维数据,将每个高维数据对应的低维数据存储于对应的m个子空间中,其中,m为大于等于2的整数;对于所有子节点上的同一子空间的低维数据,采用分布式聚类算法,得到每个子空间的k个聚类中心,将每一个聚类中心作为一个一维关键字,将每个子空间的k个关键字进行组合,得到km个m维关键字;在每个子节点上计算该子节点的每一个子空间中的低维数据隶属的聚类中心,进而得到每个高维数据隶属的m维关键字,以得到每一个m维关键字包括的所有的高维数据;确定所述km个m维关键字中与所述查询数据匹配的多个m维关键字;根据每一个m维关键字包括的所有的高维数据,确定每一个相近的m维关键字中的所有高维数据中与所述查询数据匹配的高维数据,找到与所述查询数据匹配的所有的高维数据,作为查询结果。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的大规模高维数据的分布式索引方法的设备等实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。

本发明提供的一种大规模高维数据的分布式索引方法及系统,将所有的高维数据分布式存储于集群上,将每一个高维数据划分为多个低维数据,每一个子空间中存储有所有高维数据的一个低维数据,采用分布式聚类算法得到每一个子空间的所有低维数据的多个聚类中心,将每一个聚类中心作为一个一维的关键字,对每个子空间的多个一维关键字进行组合,得到所有高维数据的多个多维关键字,并计算每一个多维关键字包含的高维数据,在查询时,先查询与查询数据匹配的多维关键字,再查询每一个多维关键字中包含的高维数据。本发明将分布式聚类、分布式查询以及多个子空间的多维索引结合起来,保证了检索查询准确度的前提下,提高检索查询的效率,该方法可以应用于大规模分布式数据的检索之中,具有较好的可扩展性。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1