1.一种并行的高维近邻查询方法,其特征在于:该方法的步骤如下:
步骤1)对所有数据对象,根据每一个维度i的坐标值建立一棵名为BDi-tree的B+树索引,再建立一个名为PID的B+树索引;
步骤2)根据查询对象q维度i的坐标值q[i],并行地获得其在每个维度的初始访问位置,即与q[i]坐标值最接近的BDi-tree上的坐标值位置;这里访问位置根据它们的距离远近决定,距离越近其位置编号越小,而访问顺序根据访问位置编号升序进行;
步骤3)并行地从BDi-tree的初始位置根据节点距离q[i]的远近访问节点,计算最好位置bpi、最好位置门限值Tb和当前的第k个近邻对象距离best_kdist;
步骤4)并行维护维度j上的BVj-tree索引,该索引的关键字为当前已访问的所有数据对象在第j维上的坐标值;
步骤5)比较当前位置Pos上索引BDi-tree和最好位置bpi上BVi-tree的坐标值,从而移动最好位置指针,并确定是否终止查询;
步骤6)直到第k个近邻对象与q的最好距离best_kdist小于最好位置门限值Tb,结果列表中的数据对象就是并行得到的k个高维近邻。
2.根据权利要求1所述的一种并行的高维近邻查询方法,其特征在于:所述的步骤1)中两种B+树索引节点关键字和叶子节点内容是不同的,分两种情况考虑:
1)对于BDi-tree树,其关键字key为每个对象的第i维度坐标值转换的固定长度字符串,如:距离为0.1101的串为‘00001101’,叶子节点的内容为第i维度坐标值和对象标识;
2)对于PID树,其关键字key为每个数据对象固定长度的标识字符串,如:‘00001000’,而叶子节点内容为数据对象所有维度的坐标值和对象标识。
3.根据权利要求1所述的一种并行的高维近邻查询方法,其特征在于:所述的步骤2)中的第i维的访问位置是指该维度查询对象的坐标值q[i]与数据对象o的坐标值o[i]的绝对值|q[i]-o[i]|大小所对应的编号,编号依据B+树中升序访问节点的顺序生成,距离越近编号越小。
4.根据权利要求1所述的一种并行的高维近邻查询方法,其特征在于:所述的步骤3)中的最好位置bpi,最好位置门限值Tb和当前的第k个近邻对象距离best_kdist的含义如下:
1)第i维的最好位置bpi是指所有已访问的数据对象在BDi-tree索引中的位置列表中连续位置的最大位置;
2)最好位置门限值Tb是指在每个维度最好位置bpi的坐标值之和;
3)第k个近邻对象距离best_kdist指当前的第k个近邻对象与查询对象q的距离,包括两种情形:a)当获得的近邻对象数少于k时,best_kdist为所有获得的近邻对象中距离q的最大值;
b)当获得的近邻对象数等于k时,best_kdist为当前第k个近邻与q之间的距离。
5.根据权利要求1所述的一种并行的高维近邻查询方法,其特征在于:所述的步骤4)中的BVj-tree为由各个维度已访问数据对象的第j维坐标值所创建的B+树,其关键字为坐标值转换成的固定长度字符串,叶子节点为坐标值和对象标识。
6.根据权利要求1所述的一种并行的高维近邻查询方法,其特征在于:所述的步骤5)中并行地维护维度j上的BVj-tree索引,分为以下五步:
1)并行地移到BDi-tree下一个节点位置,让位置指针Pos指向当前位置,获得节点的坐标值和数据对象标识;
2)并行地比较当前维度i当前位置的数据对象p的坐标值和BVi-tree索引最好位置的下一个位置的节点坐标值是否相等;如果不等,则通过PID索引搜索数据对象p在剩余其它维度的坐标值,再依次插入剩余维度的BVj-tree(j≠i)索引中;
3)并行地更新最好位置bpi、最好位置门限值Tb、最好距离best_kdist,以及k个近邻数据对象集合;
4)当最好距离best_kdist小于最好位置门限值Tb时,终止近邻查询;
5)当任意维度上的BDi-tree上的当前位置Pos的下一节点和BVi-tree上最好位置bpi的下一节点相等时,并行地移动最好位置到下一位置、更新最好位置门限值,直到结束;同时,在最好距离best_kdist小于最好位置门限值Tb时,终止近邻查询。