一种分布式环境下基于社会感知的空间关键字查询方法与流程

文档序号:16146954发布日期:2018-12-05 16:36阅读:138来源:国知局

本发明涉及检索技术领域,尤其涉及一种分布式环境下基于社会感知的空间关键字查询方法。

背景技术

随着互联网的发展,各种社交网络服务产品应运而生,这些社交网络服务被普遍使用,已然成为最受用户欢迎的应用,基于位置的社交网络也因此包含着大量有价值有意义带有地理位置数据,空间数据逐渐成为学术研究重要的研究对象,所谓的空间数据就是包含地理位置和文本信息的数据,在空间中查询包含地理信息和文本信息成为频繁的操作,空间关键字查询就是在大量的空间目标中查询到符合地理相关,文本相关的数据。

近几年来,通信技术的发展和移动终端的广泛使用,基于位置的社会服务也层出不穷,空间关键字查询是以用户的地理位置信息和多个查询关键字作为参数,返回的是和这些参数有着空间和文本相关度的空间对象。在一个查询中,构建有效的索引结构,可以极大地提高查询效率。对于一个空间中的索引,是指将对象的位置信息,大小形状等按照一定结构排列的一种数据结构。

常见的基于二叉树的索引技术,这是较早版本的索引技术,适用于空间中点状常见的有kd树,lsd树,k-d-b树等相关索引结构,然而对于拓展对象却不适用。由于空间的对象形态各异(如点,线,面,体等),组织方式不同,也导致了处理空间中拓展对象的方式也不相同,主要分为对空间中对象映射,分割和界定三类,将空间中的对象分割,分别存储在不重叠相交的子空间中,这种类型的空间索引技术有r+树,四叉树,cell树等。对象的界定又被叫做区域重叠,也就是说它允许其子空间重叠,常见的有r树,r*树。

随着用户量越来越多,产生了大量的社交数据,空间数据还有社交数据呈指数增长,导致搜索空间越来越大,传统的数据处理技术在面对如此庞大的数据量时存在很多问题,处理数据成本很高,存在效率很低问题,空间数据的并行化处理难度较高,并行程序编写比较难。集中式环境下的查询处理效率面临着极大的挑战,传统的空间关键字查询已经不能解决现状。

虽然现在的搜索引擎技术已经很成熟,能够在短时间内给用户返回大量相关的数据,可是搜索引擎返回的结果并不一定跟查询用户相关,没有考虑查询用户的社交关系,返回的结果可能并不是用户关心的。传统的空间关键字查询查询参数包含查询,位置信息和文本信息,这并不能给用户返回个性化的结果,因而将社交数据加入到空间关键字查询中以提高查询结果的质量。



技术实现要素:

针对上述缺陷或不足,本发明的目的在于提供一种分布式环境下基于社会感知的空间关键字查询方法,提高查询速度。

为达到以上目的,本发明的技术方案为:

一种分布式环境下基于社会感知的空间关键字查询方法,包括:

第一步、加载sdpr树全局的索引,在sdpr树全局的索引树中获取查询点集中的查询点所在的分区;

第二步、在所获取的分区内分别指向sksk操作,查询找到距离该查询点最近的k个空间对象;

第三步、在k个空间对象中得到的预定个数最相关的空间对象,然后进行结果的排序,获取最终结果。

1)、获取空间数据,所述空间数据包括若干空间对象,每个空间对象包括对应的空间对象标示、空间对象的地理位置信息、空间中描述对象的关键字、以及空间对象的粉丝群体;

2)、利用空间层次分解的hilbert编码方式对空间数据进行数据划分,将空间的数据划分到数据分区;

3)、根据批量加载算法tgs,对数据分区后的每个区域的数据构建局部的r树索引,并对r树索引进行存储,r树索引的存储结构包括索引树的结构信息、节点信息、空间对象的粉丝群体、空间对象数据以及空间中描述对象的关键字;

4)、利用str算法构建全局索引,并对全局索引进行存储,全局索引的存储结构包括索引树的结构信息、节点信息、空间对象的粉丝群体;其中节点信息存放的是文件路径。

所述步骤2)具体包括:

2.1、通过hilbert对空间数据进行排序,并对排序后的数据进行编码;

2.2、根据编码将空间数据放入到存储节点中,如果空间数据超过节点所限定大小则停止,然后从上次的断点处用相同的方法将对象放入存储节点中。

所述步骤2.1具体为:根据mbr进行排序,然后构造hilbert空间曲线,并且分配对象的排序值,获取和vavg并初始化bj=0;所述vi表示第i个空间数据的大小,vavg表示每个节点平均存储容量,bj表示第j个节点中数据大小。

所述步骤2.2具体为:比较bj与平均的容量,如果小则i和k均自增,否则j自增;若k=i,则重复该操作,直到i和k都为n-1并且j=n-1为止;最后算出bj,在将每个节点机的bj划分到各个磁盘中;所述k表示空间数据个数,n表示待划分的空间对象总数量,n表示各个节点机的数量。

所述根据批量加载算法tgs,对数据分区后的每个区域的数据构建局部的r树索引就具体为:通过坐标轴方向分割数据,给定代价函数cost(r1,r2):

cost(r1,r2)=sr1+sr2

每个被子集中含有多个矩形,所述矩形由每个子树的最大矩形个数和小于该节点的个数乘积来获得,该构造过程在两个子集上递归地生成整个r树;其中,所述r1和r2分别是两个被分割的数据的mbr,s为选取的扫描线。

所述索引树的结构信息包括该索引树的大小,即整个树节点区域的大小、索引树的高度、容量、以及空间对象的个数信息。

所述空间中描述对象的关键字为倒排文件方式存储。

与现有技术比较,本发明的有益效果为:

本发明提供了一种分布式环境下基于社会感知的空间关键字查询方法,通过利用关键字的检索特点,在sdpr分布式索引结构的基础上提出基于的社会感知的top-k查询算法,通过输入查询参数,结果是数据集中满足特定排序函数排名最高的前k个对象,通过带有权重的空间关键字查询,使得查询更加精准,能够得到更加准确的结果。

进一步的,利用分布式环境下基于社会感知的空间索引,对空间数据进行有效的划分,构建了局部索引以及全局索引,利用构建有效的索引结构,该索引结构是基于hdfs的分布式的索引结构并且融合了空间中的社交数据,能够很有效地支持分布式环境下的查询,使得查询结果更加满足用户的要求。在现有的基于r树的并行空间索引基础上融入lbsn中的社交数据,构成了全新的带有社交数据的空间索引,便于提高查询速度,提高搜索效率。

附图说明

图1是本发明的流程框图;

图2是本发明的索引构建流程框图;

图3是本发明的社交网络关系图;

图4是本发明的局部索引存储图;

图5是本发明的局部索引结构图;

图6是本发明的倒排索引图;

图7是本发明的全局索引存储图。

具体实施方式

下面将结合附图对本发明做详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。

lbsn(位置的社交网络)在以往的社交网络之上添加了空间位置属性,而且地理信息既包括用户在指定时间的位置又包含用户在特定时间内签到或者访问记录,社交网络服务提供了评论,粉丝数量,点赞记录,和访问记录等功能。在现实社会中,具有相似爱好的人往往会相互分享或是点赞,根据用户的签到地点,lbsn在传统的社交网络上加入位置属性,这样用户就可以签到时分享自己的位置信息。从用户的签到信息,按照时间构成了用户的移动轨迹。

在空间关键字查询中,对于空间操作,其本身的特点相比集中式环境下的sql来说,有着比较多并且比较复杂的操作,针对分布式环境下带有社交数据的空间索引的构建后,为了提高空间中各种查询操作的效率,提出空间并行查询分布式环境下基于社会感知的top-k空间关键字查询算法。如图1所示,本发明提供了一种分布式环境下基于社会感知的空间关键字查询方法,包括:

第一步、加载sdpr树全局的索引,在sdpr树全局的索引树中获取查询点集中的查询点所在的分区;

假设查询点集q中的一个查询点qi所在的分区是pti。在空间关键字查询中,所谓的top-k查询是指给定空间中的一个坐标作为参考点,查询最优的前k个空间实体对象,比如说经常使用定位导航工具(如百度地图,高德地图等)来查询附近离我们最近的有多少家旅馆,这时是根据给出的空间对象综合评价公式来查询空间中最优的对象,这个就是top-k空间关键字查询。

对于分布式环境下基于社会感知的top-k空间关键字查询算法(sksk)的描述是:给定一个空间中的数据集s,用户的查询位置等信息q,整数k(表示返回结果的数量),最后返回的结果集包含k个空间结果对象,返回的结果是跟查询用户有着空间距离相关、文本相关,且具有一定社交相关度的空间对象。这里不满足查询的结果满足空间相关度,如果不在该距离范围内则排除该结果。这里的距离指的是欧式距离。

第二步、在所获取的分区内分别指向sksk操作,查询找到距离该查询点最近的k个空间对象;

根据第一步得到的区域pti,在分区内分别指向sksk操作,查询找到距离该查询点最近的k个空间对象,其中所谓的最近的空间对象不仅要考虑空间距离,文本相关度,还融入了查询用户的社交关系,对每个查询对象的粉丝全体和查询用户进行社交相似度分析,然后综合考虑空间相关,文本相关,以及社交相关对空间中的实体对象进行实体排序,找到与qi最相关的k个空间对象。

第三步、在k个空间对象中得到的预定个数最相关的空间对象,然后进行结果的排序,获取最终结果。

sksk查询算法的伪代码如下表所示:

需要注意的是,在传统的k近邻查询中可能会根据空间距离来构造半径为最大的圆形区域,如果最大的点在该区域内,那么该分区内的点就是要查询的结果,如果与其它的局部索引相交,那么空间需要查询与之相交的空间索引结构所在的分区,期对该分区

内执行范围的查询,然后得到圆形区域内空间对象,分局圆形内的空间区域对其进行空间区域聚集查询,将分布在不同分区内的对象合并,最后得出k个和查询用户具有社交相关,文本相关和空间位置相关的对象,并且还满足如果在查询过程中,如果已经得到k个结果,那么将会进行合并工作,并不需要将所有的数据查询完成。

本发明中,所述sdpr树(社会感知的空间分布式并行r树)全局的索引具体构建方法为,如图2所示:

1)、获取空间数据,所述空间数据包括若干空间对象,每个空间对象包括对应的空间对象标示、空间对象的地理位置信息、空间中描述对象的关键字、以及空间对象的粉丝群体;

空间查询中,空间对象是一个四元组o=<id,l,w,f>,其中o.id代表了空间对象的独一无二的标识,l表示空间中的对象的地理信息,包括经度、纬度等信息,w表示空间中的对象的文本描述,f代表空间中的对象的粉丝群体,这些粉丝对此空间对象持有积极的态度,有经常签到行为或者与其他粉丝有很高的相似度,其中u用户集合。

如图3所示,在lbsn中,用户社交关系是一个二维无向图,可以被表示为g={u,w}。

其中对于图g中的各个属性定义如下所示:

(1)u是一组顶点的集合,其中一个顶点对应一个用户。

(2)w是两个用户之间的好友关系。

社交网络数据是比较复杂的,因为它不仅包含了用户个人的数据信息,也包含了与其他用户相关联的数据信息。在上述的数据定义中,将社交关系数据抽象成由顶点和顶点之间二维无向图,并且顶点是空间中的用户的集合,图中的边集表示社交网络中的好友关系,将社交网络关系抽象成简单的二维无向图的方式,可以有效地通过分析用户间的相似度来计算,用户和对象之间的社交相关度。

空间数据集合d={p1,…,pi,…,pn},公式中pi表示空间中的一个对象,且pi是由四元组构成<id,s,w,f>p.id表示空间对象,pi.l表示空间中对象的地理位置信息,pi.w表示空间中描述对象的关键字,f是一个集合,表示空间中对象的粉丝群体,粉丝群体内的用户对于空间对象持有好感,曾经将此空间对象推荐给其他人或者分享给其他人。要分析查询用户和空间对象之间的社交关系必须计算粉丝群体和查询用户之间的社交相似度。带有权值的社交相关度公式:

其中α是系数,且α∈[0,1)由以上公式可以看出社交相关度的取值不会等于0,并且关于指数衰减的应用也适用于其他方面。

2)、利用空间层次分解的hilbert编码方式对空间数据进行数据划分,将空间的数据划分到数据分区;

所谓的空间数据的划分是指将空间的数据划分到数据分区,这是空间数据在分布式环境下存储管理的首要步骤。空间数据的分割应该能够让这一个节点的数据具有空间相邻的特点。如果不同的分区之间,应该尽量保证数据平衡,存储容量尽量均衡,负载尽量均衡。

本发明采用的空间层次分解的hilbert编码方式,通过hilbert对空间中数据进行排序,然后依次从开始编码起,根据编码将空间数据放入到存储节点中,如果空间数据超过节点所限定大小则停止,然后从上次的断点处用相同的方法将对象放入存储节点中。

具体步骤包括:

第一步:根据mbr进行排序,然后构造hilbert空间曲线,并且分配对象的排序值,获取vii和vavg并初始化bj=0;

第二步:根据编码值排序。

第三步:将对象放入节点机中。

第四步:比较bj与平均的容量,如果小则i和k都要自增,否则j自增,若k=i重复该操作。直到i和k都为n-1并且j=n-1为止。

第五步:如果最后一个节点机添加数据,其存储量大于vavg,如果还有数据没有分配那么剩余的对象采用轮询法,按照节点机从后往前分配。

第六步:算出bj,在将每个节点机的bj按照以上方式划分到各个磁盘中。

其中,n为各个节点机的数量,n为待划分的空间对象总数量,vi为第i个空间数据的大小,vavg为每个节点平均存储容量,bj为第j个节点中数据大小。

3)、根据批量加载算法tgs,对数据分区后的每个区域的数据构建局部的r树索引,并对r树索引进行存储,r树索引的存储结构包括索引树的结构信息、节点信息、空间对象的粉丝群体、空间对象数据以及空间中描述对象的关键字;

批量加载是批量加载算法tgs又叫做自上而下的贪婪分裂算法,一个分裂的过程可以通过递归来实现。

对于空间中对象的矩形数据,该算法首先会通过一个坐标轴方向分割数据,给定代价函数,是的该函数的取值最小,即cost(r1,r2)最小。所述r1和r2分别是两个被分割的数据的mbr,除此之外,每个被子集中含有有多个矩形,可以由每个子树的最大矩形个数n和小于该节点的个数k乘积来获得,这个构造过程在两个子集上递归地生成整个r树。代价函数是根据选择扫描线来给出的公式,s为选取的扫描线:

cost(r1,r2)=sr1+sr2

其中,sr1表示被分割的第i部分的面积。

tsg局部r树索引构建代码:

该算法首先对s中的每个分割线,获取分割线的最小边界矩形,并得到对应的面积,然后将面积加入到集合中,然后获取第一级分割线,获取分割的两个分区,对每一个分区循环递归调用代价函数,直到r树构造完成。

完成了r树构造需要介绍索引的相关的存储信息。因为将社交数据加入到索引结构中,因此需要考虑社交数据的存储问题。局部索引的存储结构如图4所示,主要几个部分构成,包括索引树的结构信息,节点的信息,社交粉丝数据,空间对象数据。索引树的结构信息包括该索引树的大小,就是整个树节点区域的大小,索引树的高度,容量,以及空间对象的个数等信息。

树节点数据包括该节点的子节点信息,是子节点的位置所在,还有子节点的mbr,社交粉丝数据里面存放的是该节点内所有空间对象的粉丝集合,最后存放的是空间中的对象的矢量数据。

如图5所示,示例性的:局部的r树构每个节点都会和该区域的倒排文件相关联,假设下图所示的一棵局部的索引树,为了简便描述,该索引树省略了其它数据,并且在局部空间索引的节点中,倒排文件信息存放了倒排文件的存储路径,等到需要用到才会去加载实际的数据。该图中非叶子结点中的粉丝,是全部子结点的粉丝的并集,并且在倒排文件中,所有的关键字是子节点的并集。

如图6所示,图6为对于sdpr树局部索引中节点倒排文件图。图中节点r5的倒排索引文件,如图中可以看到,在结点r1中关键字有四个,在r2中的关键字个数是三个,两个并集的关键字个数是五个。每个关键字和空间中的对象都是有关联的,这个关联的文本就是在进行文本查询时关联的上界。为了能够在查询时同时进行空间文本和社交相关的剪枝操作,需要对文本的单调性进行定义。并且给出了社交相似度的单调性定理。

sdpr文本相关度的单调性:在一个查询中q中,给定一个非叶子结点e,其最小的边界矩形是e.λ。用trq(p)表示空间对象p的关键字信息,和查询用户给定的关键字相关度。则有trq(e)>trq(p)

下面给出社交相似度的单调性定义:

对于查询q,给定非叶子结点e,并且该节点有子节点,假设子节点中包含了空间n个对象,有e={ei,1≤i≤n},则有sdq(ei)≤sdq(e)这可以根据公式3.2轻易地推得。

4)、利用str算法构建全局索引,并对全局索引进行存储,全局索引的存储结构包括索引树的结构信息、节点信息、空间对象的粉丝群体;其中节点信息存放的是文件路径;

如图7所示,对于全局存储结构和局部存储结构相似,具有树的信息,节点信息,和社交粉丝信息,不同的是在全局索引中,叶子结点存放的是文件路径,这样才能找到对应的局部索引,还有根节点的mbr相关的信息,能够实现两个索引之间的联系,从而可以保证数据之间的关联关系。

对于本领域技术人员而言,显然能了解到上述具体事实例只是本发明的优选方案,因此本领域的技术人员对本发明中的某些部分所可能作出的改进、变动,体现的仍是本发明的原理,实现的仍是本发明的目的,均属于本发明所保护的范围。

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