路网中面向集合的空间关键词查询方法

文档序号:10512314阅读:176来源:国知局
路网中面向集合的空间关键词查询方法
【专利摘要】路网中面向集合的空间关键词查询方法,属于空间关键词查询技术领域。本发明的提出是为了实现对于用户的提出的空间关键词查询能够快速返回多条最佳路线供用户选择。技术要点:本发明所提出的路网中面向集合受查询方向约束的空间关键词查询给出了两种情况,即面向无主关键词的查询和主关键词优先的查询。无主关键词的查询即从查询点出发按照道路网在可查询范围内扩展查询。主关键词优先的查询,首先在可查询范围内以一种迭代替换的方式进行扩展查询直到查询到主关键词对象,若还有关键词没有被已查询到的空间对象所覆盖,则以面向无主关键词的查询方式继续进行扩展查询。分别对以上两种查询进行了实验,证明了所提方法的有效性。
【专利说明】
路网中面向集合的空间关键词查询方法
技术领域
[0001] 本发明涉及一种路网中面向集合的空间关键词查询方法,属于空间关键词查询技 术领域。
【背景技术】
[0002] 如今,定位技术的快速发展使得基于位置的服务得到了广大移动用户的青睐。随 之而来的,各种拥有定位技术的移动设备不断推陈出新,各种基于位置信息和文本信息的 查询被提出。为了满足这样的查询,学术界对于不同条件的查询需求分别提出了各种高效 的空间关键词查询算法。道路网是人们生活空间的抽象,研究道路网上的空间关键词查询 更有实际意义和使用价值。
[0003] 在现有的技术中,道路网空间关键词查询要么是全方位进行的,要么是受查询方 向约束面向单一对象的,而没有提出过受查询方向约束面向集合的查询方法。另外,现有的 技术中的欧式空间中面向集合查询结果的对象之间可能没路线。

【发明内容】

[0004] 本发明的目的是提供一种路网中面向集合受查询方向约束的空间关键词查询方 法,以实现对于用户提出的空间关键词查询能够快速返回多条最佳路线供用户选择。
[0005] 本发明为解决上述技术问题采取的技术方案是:
[0006] 技术方案一:一种路网中面向集合的空间关键词查询方法,所述方法为路网中面 向集合受查询方向约束的无主关键词的空间关键词查询,其实现过程为:
[0007] 步骤一、给定一个空间关键词查询q={(X,y);[α,β];(k1,k 2,...,kn);k,r},查询 返回k组空间对象,每组对象在一条满足方向约束和范围约束的线路上,且这k组的评分函 数值是所有满足查询要求的查询结果集中最小的k个;
[0008] 步骤二、根据Cost函数的定义,知道路网中面向集合受查询方向约束的无主关键 词的空间关键词查询查找的一组结果是在一条路线上,假设路线上满足查询条件的一组空 间对象为( 〇1,〇2, . . .,〇n),该条路线的评分函数在此定义为:
[0010] 在公式(2-1)中,sp(q,〇1)表示查询点q与空间对象〇1之间在路网中的最短路径,sp (〇1,〇1+1)(l<i<n)表示空间对象〇1和 〇1+1之间在路网中的最短路径,公式中除以r是为了归 一化评分,其中r是允许查询的最长路径长度;
[0011]步骤三、为了实现查询,首先需要定义一个数据结构,记录查询已经遍历到的路线 及空间对象、剩余未被覆盖的查询关键词和已经遍历的最短路径长度,伪码如下所示:
[0013] 上述代码中,〇1是一个列表,用来存储查询已经遍历到的满足查询条件的空间对 象及其路线上的边的顶点,kl是用来存储还未被覆盖的查询关键词的列表,spl是用来记录 查询已经遍历的最短路径长度;
[0014] 步骤四、查询过程为:
[0015] 给出一个查询q,会给出查询点的位置(q. X,q. y),查询所面向的方向角[α,β],查 询关键词集q. Κ,查询的路径长度约束r,查询结果数据集个数k;
[0016] 步骤四(一)、首先初始化一个队列U和一个列表L;U用来存储每条遍历路线,每条 路线需要存储的信息即为上述定义的一个结构体entry,在此称为一条记录,entry的〇1记 录当前已遍历到的点,〇 1包括查询点q、满足查询条件的空间对象和边的顶点;且所述当前 已遍历到的点按遍历顺序存储,entry的kl记录目前还没被已查询的空间对象所覆盖的查 询关键词,entry的spl记录目前已遍历到的点所在路线的最短路径长度;L用来存储满足查 询条件的记录,在每条记录中,〇1列表中的一组空间对象共同覆盖查询关键词且所有对象 所在的路线在查询方向角内,kl为空表明所有要查询的关键词已被查询到的空间对象所覆 盖,spl的值小于路径长度约束r的值;
[0017] 步骤四(二)、然后,创建一条记录,分三步进行处理查询点所在的边及边上的对 象,第一步,通过利用路网中局域网IR树能够定位到(9^,9.7)所在的边6^把9加入6111^7 的〇1列表中,查询关键词加入到entry的kl列表中,entry的spl初始化为0;第二步,判断顶 点^和^是否在查询方向角内,假设W在方向角内,则检查从q到巧的路段上是否包含满足 查询条件的空间对象,若存在满足查询条件的空间对象,则把相应的空间对象添加到entry 的〇1列表中,把相应的关键词从entry的kl列表中删除,把entry的spl相应的增加,否则,把 顶点vj加入到entry的〇1列表中即可,对于顶点Vi以同样的方法进行处理;第三步,若entry 的kl不为空,说明存在关键词没有被空间对象覆盖,则把顶点加入到entry的〇1列表中, 相应地更新entry的spl,把记录添加到队列U中,否则说明查询关键词已被全部覆盖,判断 此条记录的spl是否小于r,若是,则把此条记录加入L,否则放弃此条记录;
[0018] 步骤四(三)、最后,进行扩展遍历的搜索:
[0019] 通过从U中读取并删除一条条记录,并且检查每条记录entry的〇1列表中最后一个 元素(即已遍历到的最近的顶点)的邻接表,若邻接表中有多个邻接点,则为每一邻接点分 支建立一条虚拟记录,然后核查每个新记录对应的邻接边并更新虚拟记录,核查更新后的 虚拟记录,如果不满足查询条件则删除对应的该虚拟记录,然后为未终止的路线创建一条 新记录并添加到U中;
[0020] 循环地遍历U直到队列U为空,循环地遍历队列U,能够从(q.X,q.y)开始,遍历完方 向角[α,β]约束及路径长度约束q.r内的所有边,采用验证边相同的方式来查找满足查 询条件的空间对象;在整个搜索过程中,以一种扩展的方式进行遍历查询;搜索过程中,如 果顶点Vx不是局域网的边界点,则像上面处理顶点巧一样处理Vx,先是验证目前顶点到Vx的 路段上是否包含满足查询条件的空间对象,然后相应的更新此条查询路线的〇1列表,kl列 表及spl的值;否则,顶点vx的层次树;将会被遍历;顶点v x的层次树&将会被遍历的过程如 下:
[0021]首先,检查?;根结点的倒排文件,看看是否包含有可能满足查询条件的空间对象。 如果不包含有可能满足查询条件的空间对象,可以通过短割跳过整个局域网,而不进行其 内部边的核查;否则,进一步的核查它的孩子结点来检索渴望查询到的空间对象;
[0022]当队列U为空时,说明对路网的查询已经结束,从结果列表L中获取要查询的k组空 间对象:首先判断一下L中的记录个数,如果记录的个数小于等于k,则返回L中的所有记录, 否则,根据记录的spl值返回列表L中最小的的k条记录;每条记录中的〇1列表即为满足查询 输入的一条路线,存有满足查询输入的一组空间对象。
[0023]在步骤四(三)中,不满足查询条件则删除对应的该虚拟记录即为当从队列U中取 出一条记录进行扩展查询时终止一条遍历路线,终止一条遍历路线分以下情况:
[0024] 一,遍历到某顶点时,检测该顶点是否在该记录中已经遍历过,如该顶点在该记录 已经遍历过,则检查记录的〇1中最后一个顶点与该顶点间路线上的空间对象,记住满足查 询条件的空间对象,然后检查这些空间对象是否覆盖了 kl中的所有关键词且若更新了 spl 其是否仍小于等于q的r,若是,则此条路线是要查询的路线,创建一个与此条路线相对应的 新记录,把此条记录添加到L中,否则,不创建新的记录,放弃此路线的搜索;
[0025]二,若下一条要遍历的边与方向角边界线相交,则首先求出相应的交点,然后检查 记录的〇1中最后一个顶点到交点的路段上的空间对象,记住满足查询条件的空间对象,然 后检查这些空间对象是否覆盖了 kl中的所有关键词且若更新了 spl其是否仍小于等于q的 r,若是,则此条路线是要查询的路线,创建一个与此条路线相对应的新记录,把此条记录添 加到L中,否则,不创建新的记录,放弃此路线的搜索;
[0026]三,若搜索到达了某个空间对象时,此时的spl大于了q的r且当前记录的kl中的关 键词没有被完全覆盖或者遍历到到达了某个空间对象时恰好当前记录的kl中的关键词完 全被覆盖,但是此时的spl正好大于了q的r,则说明搜索已经扩展到了规定的范围外,需要 终止此条路线的搜索;
[0027] 四,若搜索到达了两个局域网的边界点,通过边界点的索引树知道下一个局域网 不包含渴望查询到的空间对象,且记录的spl加上下一个局域网的短割大于了 q的r,记录的 kl非空,则说明此条查询路线不可能满足查询要求,若越过一个局域网去查询另外一个局 域网绝对超出了查询的距离约束范围r,需要终止此条路线的搜索;
[0028] 五,若查询遍历完某个空间对象时,当前记录的kl中关键词完全被覆盖且此时的 spl小于等于q的r,则说明到此为止,此条查询路线已经满足的查询要求,此条路线上存在 一组空间对象联合起来共同满足所输入查询的关键词,此时应该终止此条路线的扩展,创 建一条相应的新记录或者更新当前的记录添加到L中。
[0029] 在步骤四(二)中,所述局域网IR树用倒排文件对R树的扩展,局域网IR树中的每一 个叶子结点对应道路网中最下层的一个局域网,此最下层的局域网中的每一个边都有一个 详细的描述此边的多段线组成,每一个多段线都被存储到多段线文件中,并且,在局域网IR 树的叶子节点上还有另外一个指针,指向包含此局域网内所有边的多段线信息的多段线文 件;在局域网IR树中每一个非叶子结点包含一条形式为(cp,rect,cp. id)的记录,其中cp是 局域网孩子结点的id,rect表示局域网的最小外接矩形,cp. id表示一个包含所有孩子结点 文本信息的倒排列表的id。
[0030] 在步骤四(二)中,利用路网中局域网IR树能够定位到(q. X,q. y)所在的边ei, j,需 要以下两个步骤:1)在局域网IR树上执行一个点位置查询查找所有包含查询位置的最小外 接矩形(最底层局域网);2)执行一次过滤程序选择精确的多段线。
[0031] 这里所述局域网IR树如图3.3所示,为了能够快速地找到用户提交的任意一个查 询位置所在的边,以及使用欧几里得启发式算法能够快速找出包含满足查询条件的空间对 象的局域网,本发明把不同层次的所有局域网组织成一个变体IR树,即局域网IR树。和一般 的IR树类似,本质上都是用倒排文件对R树的扩展,不同的是,在局域网IR树中,每一个叶子 结点对应道路网中最下层的一个局域网,此最下层的局域网中的每一个路段(边)都有一个 详细的描述此路段(边)的多段线组成,每一个多段线都被存储到多段线文件中,下表1显示 了多段线文件的格式。并且,在局域网IR树的叶子节点上还有另外一个指针,指向包含此局 域网内所有边的多段线信息的多段线文件。在局域网IR树中,每一个非叶子结点包含一条 形式为(cp,rect,cp. id)的记录,其中cp是局域网孩子结点的id,rect表示局域网的最小外 接矩形,cp. id表示一个包含所有孩子结点文本信息的倒排列表的id。查询的时候,定位查 询点所在的边需要两个步骤:1)在局域网IR树上执行一个点位置查询查找所有包含查询位 置的最小外接矩形(最底层局域网);2)执行一次过滤程序选择精确的多段线;另外,通过倒 排列表能够快速地找到此结点的哪些孩子结点包含了所要查询的空间对象,最终能够确定 在道路中哪些子区域进行详细的空间关键词查询。这个过程中,允许查找查询位置所在的 边,并从这个边的终点开始一个路网扩展查询。
[0032] 表 1
[0033] Polyline file
[0035] 技术方案二:一种路网中面向集合的空间关键词查询方法,所述方法为路网中面 向集合受查询方向约束的主关键词优先的空间关键词查询,其实现过程为:
[0036] 步骤一、给定一个空间关键词查询q=<(q.x,q.y); [α,β]; {ko,ki,k2, · · .kn} ;k,r >,查询返回k组空间对象,每组的对象在一条满足方向约束和范围约束的线路上,且此k组 的评分函数值是所有满足查询要求的查询结果集中最小的k个;
[0037] 步骤二、根据Cost函数的定义,知道路网中面向集合和方向的主关键词优先的空 间关键词查询查找的一组结果是在一条路线上,假设路线上满足查询条件的一组空间对象 为(〇〇, 〇1,〇2, . . .,〇n),而对象〇k(0<k<n)包含主查询关键词ko,这条路线的评分函数在此 定义为:
[0039] 在公式(2-2)中,Sp(q,〇Q)表示查询点q与空间对象〇〇之间在路网中的最短路径,sp (〇1,〇1+1)(l<i<n)表示空间对象〇1和 〇1+1之间在路网中的最短路径,公式中除以r是为了归 一化评分,其中r是允许查询的最长路径长度;
[0040] 步骤三、定义一个数据结构,记录查询已经遍历到的路线及空间对象、剩余未被覆 盖的查询关键词、已经被覆盖的查询关键词和已经遍历的最短路径长度,伪码如下所示:
[0042]上述代码中,〇1是一个列表,用来存储查询已经遍历到的满足查询条件的空间对 象及其路线上的边的顶点,kl是用来存储还未被覆盖的查询关键词的列表,cvl是用来存储 已经被覆盖的查询关键词的列表,spl是用来记录查询点q到主关键词对象之间的最短路径 长度加上已经查询到的空间对象所在路线的最短路径长度之和;如果还没有查找到主关键 词对象,则记录查询点q与目前路线已到达的顶点之间的最短路径长度;
[0043] 步骤四、查询过程为:
[0044] 给出一个查询q,用户提交的查询q会给出查询点的位置(q. X,q. y),查询所面向的 方向角[α,β],查询关键词集q.K,查询的路径长度约束r,查询结果数据集个数k;
[0045] 以迭代替换的方式进行扩展查询直到查询到主关键词对象,所述迭代替换为:如 果当前遍历到的空间对象包含的某个关键词在之前已经有空间对象覆盖,则把之前的空间 对象从〇1列表中删除,如果删除之后列表的头元素是边的顶点,则把顶点删除直到列表的 头元素为空间对象,之后把当前遍历到空间对象添加到〇1列表的后面;然后,若还有关键词 没有被已查询到的空间对象所覆盖,则以面向无主关键词的查询方式继续进行扩展查询。
[0046] 本发明的有益效果是:
[0047] 本发明基于道路网提出了面向集合受查询方向约束的空间关键词查询方法,包括 面向无主关键词的查询和主关键词优先的查询。无主关键词的查询即从查询点出发按照道 路网在可查询范围内扩展查询。主关键词优先的查询,首先在可查询范围内以一种迭代替 换的方式进行扩展查询直到查询到主关键词对象,若还有关键词没有被已查询到的空间对 象所覆盖,则以面向无主关键词的查询方式继续进行扩展查询。本发明对这两种查询分别 给出了查询算法。最后,分别对以上两种查询进行了实验,证明了所提算法的有效性。
【附图说明】
[0048]图1是本发明的查询结构示意图;图2是局域网IR树的原理示意图(图中的英文 Polyline file为多段线文件);
[0049]图3是针对本发明方法的实验结果图,包括图3.1~3.9;
[0050] 图3.1表示不同查询方向角下查询的响应时间图,图3.2表示不同查询距离约束下 的响应时间图,图3.3表示不同查询关键词个数对响应时间的影响图,图3.4表示不同数据 集下查询的响应时间图,图3.5表示不同数据集下查询扩展的边数图,图3.6表示不同分割 方法下面向无主关键词查询的响应时间图,图3.7表示不同分割方法下面向无主关键词查 询扩展的边数图,图3.8表示不同分割方法下面向主关键词优先查询的响应时间图,图3.9 表示不同分割方法下面向主关键词优先查询扩展的边数图。
【具体实施方式】
【具体实施方式】 [0051] 一:结合图1详细说明本实施方式所述的路网中面向集合的空间关 键词查询方法:
[0052] 1、针对路网中面向集合的空间关键词查询方法中的提到相关参数进行定义如下:
[0053] -个道路网被表示为一个无向图G=(V,E),其中V和E分别表示道路网中的顶点集 和边集。每一个顶点v(eV)表示一个道路的交叉口或者一条道路的终点;每条边eu(eE,i 乒j)表示连接顶点%和%的路段,其长度表示为|eu|。两个顶点之间的距离dis(U,v) 表示这两个点之间的最短路径。
[0054] 定义1 · 1空间对象:对于一个空间对象集Ρ0Ι = (〇1,〇2, · · ·,on),〇i = (1,e,d,K) (i =1,2, . . .,n),其中〇i. 1表示〇i的空间位置,〇i.e表示〇i所在的边,〇i.d表示〇i. 1到〇i.e起始 点的距离,〇1.K是描述〇1详细信息的一组关键词。
[0055] 定义1.2用户查询:用户提交的查询q会给出查询点的位置(q.x,q.y),查询所面向 的方向角[α,β],查询关键词集q.K,查询的路径长度约束r,查询结果数据集个数k。
[0056] 定义1.3主关键词:查询关键词集q.K中的关键词ko。
[0057] 定义1.4主关键词对象:包含主关键词ko的对象。
[0058] 定义1.5Cost函数:给定一个查询q和一个空间对象集Ρ0Ι,其Cost函数为Cost(q, Ρ0Ι) = SP,SP为满足查询条件的空间对象集所在的一条最短路径的长度。
[0059] 定义1.6方向角边界线:从查询点发出的两条射线,如图1中的两条射线1#P12,与 横轴分别成α和β度角。
[0060] 定义1.7方向角内的点:对于路网中的顶点ν(或者对象〇),若ν(或者〇)与查询点q 连线的方向角9v,q(或者Θ。,。)满足α<θν>(1<β(或者,则称顶点 v(或者对象〇)是方 向角内的点,或者说顶点ν(或者对象〇)在方向角内。
[0061] 定义1.8方向角边界线与路网中边的交点:如图1所示,Α为方向边界线12与边e8,9 的交点。
[0062] 由于知道方向边界线h的方向角为β和查询点q的坐标(9.1^.7),由此可以求出12 所对应的直线方程为
[0063] y = tanP(χ-q.x)+q.y (1-1)
[0064] 又知道顶点vs和V9的坐标分别为(V8.x,V8.y)和(V9.x,V9.y),则可以求出边e8,9所 对应的直线方程为
[0066] 联立方程1-1和方程1-2,能够求出A的坐标(XA,yA)。
[0067] 2、分别给出两种路网中面向集合的空间关键词查询方法:
[0068] 针对所提出的路网中面向集合受查询方向约束的空间关键词查询给出了两种情 况,即面向无主关键词的查询和主关键词优先的查询,并陈述了这两种查询的算法详细的 描述。
[0069] 2.1面向无主关键词的查询方法
[0070] 2.1.1算法思想
[0071] 定义2.1路网中面向集合受查询方向约束的无主关键词的空间关键词查询:给定 一个空间关键词查询q= {(x,y); [α,β]; (ki,k2, . . .,kn) ;k,r},查询返回k组空间对象,每组 对象在一条满足方向约束和范围约束的线路上,且这k组的评分函数值是所有满足查询要 求的查询结果集中最小的k个。
[0072] 根据Cost函数的定义,知道路网中面向集合受查询方向约束的无主关键词的空间 关键词查询查找的一组结果是在一条路线上,假设路线上满足查询条件的一组空间对象为 ( 〇1,〇2,. . .,〇n),这条路线的评分函数在此定义为:
[0074] 在公式(2-1)中,sp(q,〇1)表示查询点q与空间对象〇1之间在路网中的最短路径,sp (〇1,〇1+1)(l<i<n)表示空间对象〇1和 〇1+1之间在路网中的最短路径,公式中除以r是为了归 一化评分,其中r是允许查询的最长路径长度。
[0075] 为了实现查询,首先需要定义一个数据结构,记录查询已经遍历到的路线及空间 对象、剩余未被覆盖的查询关键词和已经遍历的最短路径长度,伪码如下所示。
[0077]上述代码中,ο 1是一个列表,用来存储查询已经遍历到的满足查询条件的空间对 象及其路线上的边的顶点,kl是用来存储还未被覆盖的查询关键词的列表,spl是用来记录 查询已经遍历的最短路径长度。
[0078]给出一个查询q,首先初始化一个队列U和一个列表LW用来存储每条遍历路线,每 条路线需要存储的信息即为上述定义的一个结构体entry,在此称为一条记录,entry的〇1 记录当前已遍历到的点(包括查询点q,满足查询条件的空间对象和边的顶点)且这些点按 遍历顺序存储,entry的kl记录目前还没被已查询的空间对象所覆盖的查询关键词,entry 的spl记录目前已遍历到的点所在路线的最短路径长度。L用来存储满足查询条件的记录, 在每条记录中,〇1列表中的一组空间对象共同覆盖查询关键词且所有对象所在的路线在查 询方向角内,kl为空,表明所有要查询的关键词已被查询到的空间对象所覆盖,spl的值小 于路径长度约束r的值。
[0079]然后,创建一条记录,分三步进行处理查询点所在的边及边上的对象,第一步,通 过利用路网中边的索引if树能够定位到(q · X,q · y)所在的边ei, j,把q加入entry的ο 1列表 中,查询关键词加入到entry的kl列表中,entry的spl初始化为0;第二步,判断顶点Vi和vj是 否在查询方向角内,假设W在方向角内,则检查从q到W的路段上是否包含满足查询条件的 空间对象,若存在满足查询条件的空间对象,则把相应的空间对象添加到entry的ο 1列表 中,把相应的关键词从entry的k 1列表中删除,把entry的sp 1相应的增加,否则,把顶点vj加 入到entry的ol列表中即可,对于顶点Vi以同样的方法进行处理;第三步,若entry的kl不为 空,说明存在关键词没有被空间对象覆盖,则把顶点vj加入到entry的ο 1列表中,相应地更 新entry的spl,把记录添加到队列U中,否则说明查询关键词已被全部覆盖,判断此条记录 的spl是否小于r,若是,则把此条记录加入L,否则放弃它。
[0080]最后,通过从U中读取并删除一条条记录,并且检查每条记录entry的〇1列表中最 后一个元素(即已遍历到的最近的顶点)的邻接表,若邻接表中有多个邻接点,则为每一邻 接点分支建立一条虚拟记录,然后核查每个新记录对应的邻接边并更新虚拟记录,然后为 未终止的路线创建一条新记录并添加到U中,像这样循环地遍历U直到队列U为空。循环地遍 历队列U,能够从(9.1,9.7)开始,遍历完方向角|>,0]约束及路径长度约束9.1'内的所有边, 像验证边-样的方式来查找满足查询条件的空间对象。在整个搜索过程中,以一种扩展 的方式进行遍历查询。搜索过程中,如果顶点v x不是局域网的边界点,则像上面处理顶点 一样处理vx,先是验证目前顶点到vx的路段上是否包含满足查询条件的空间对象,然后相应 的更新此条查询路线的〇1列表,kl列表及spl的值;否则,顶点v x的层次树&将会被遍历。首 先,检查?;根结点的倒排文件,看看是否包含有可能满足查询条件的空间对象。如果不包含 有可能满足查询条件的空间对象,可以通过短割跳过整个局域网,而不进行其内部边的核 查;否则,进一步的核查它的孩子结点来检索渴望查询到的空间对象。
[0081] 当队列U为空时,说明对路网的查询已经结束,此时,应该考虑如何从结果列表L中 获取要查询的k组空间对象。首先判断一下L中的记录个数,如果记录的个数小于等于k,则 返回L中的所有记录,否则,根据记录的spl值返回列表L中最小的的k条记录。每条记录中的 〇1列表即为满足查询输入的一条路线,存有满足查询输入的一组空间对象。
[0082] 整个扩展遍历的搜索过程中,需要终止一些不可能满足查询要求的路线。当从队 列U中取出一条记录进行扩展查询时,终止一条遍历路线分多种情况,一,遍历到某顶点时, 检测该顶点是否在该记录中已经遍历过,如该顶点在该记录已经遍历过,则检查记录的〇1 中最后一个顶点与该顶点间路线上的空间对象,记住满足查询条件的空间对象,然后检查 这些空间对象是否覆盖了 kl中的所有关键词且若更新了 spl其是否仍小于等于q的r,若是, 则此条路线是要查询的路线,创建一个与此条路线相对应的新记录,把此条记录添加到L 中,否则,不创建新的记录,放弃此路线的搜索;二,若下一条要遍历的边与方向角边界线相 交,则首先求出相应的交点,然后检查记录的〇1中最后一个顶点到交点的路段上的空间对 象,记住满足查询条件的空间对象,然后检查这些空间对象是否覆盖了 kl中的所有关键词 且若更新了 spl其是否仍小于等于q的r,若是,则此条路线是要查询的路线,创建一个与此 条路线相对应的新记录,把此条记录添加到L中,否则,不创建新的记录,放弃此路线的搜 索;三,若搜索到达了某个空间对象时,此时的spl大于了 q的r且当前记录的kl中的关键词 没有被完全覆盖或者遍历到到达了某个空间对象时恰好当前记录的kl中的关键词完全被 覆盖,但是此时的spl正好大于了q的r,则说明搜索已经扩展到了规定的范围外,需要终止 此条路线的搜索;四,若搜索到达了两个局域网的边界点,通过边界点的索引树知道下一个 局域网不包含渴望查询到的空间对象,且记录的spl加上下一个局域网的短割大于了 q的r, 记录的kl非空,则说明此条查询路线不可能满足查询要求,若越过一个局域网去查询另外 一个局域网绝对超出了查询的距离约束范围r,需要终止此条路线的搜索;五,若查询遍历 完某个空间对象时,当前记录的kl中关键词完全被覆盖且此时的spl小于等于q的r,则说明 到此为止,此条查询路线已经满足的查询要求,此条路线上存在一组空间对象联合起来共 同满足所输入查询的关键词,此时应该终止此条路线的扩展,创建一条相应的新记录或者 更新当前的记录添加到L中。
[0083] 2.1.2算法描述
[0084] 下面用伪码给出了上一小节算法思想的具体描述。
[0085] 算法2.1 :findP0ISet (查找候选集)
[0086] 输入:9={(叉,7);|>,0];(1^1,1?,...,1^);1^,1·}
[0087]输出:候选集列表L


[0091]算法2.1进行路网中面向集合和方向的无主关键词的空间关键词查询,返回所有 满足查询条件的候选结果集。第1到3行创建了一些存储对象并进行了初始化。第4行,确定 了查询点q所在的边。第5到19行检查了 q到其所在边上的顶点之间路段上的空间对象。第20 到38行用while循环不断的处理非空队列U中的每条记录,以扩展的方式实现在路网上面向 集合和方向的空间关键词查询。第39行,返回存有候选结果集的列表L,退出程序。
[0092] 算法2.2:findCandidate (从候选集查找结果集)
[0093]输入:算法2.1得到的候选集列表L和用户输入的k值 [0094]输出:从候选集查找到的结果集RES
[0096]算法4.2实现从算法1得到的候选结果集中选取spl最小的k个记录返回给用户。第 一行,获取候选结果集列表的大小。第2到4行,实现若候选结果集列表的大小小于用户输入 的k值,则返回L中的所有记录。第5行,用排序算法对候选结果集进行排序。第6行,返回排序 后的前k个元素。第7行,返回结果集RES,退出程序。
[0097] 2.2面向主关键词优先的查询算法
[0098] 2.2.1算法思想
[0099] 定义2.2路网中面向集合和方向的主关键词优先的空间关键词查询:给定一个空 间关键词查询q=<(q.x,q.y); [α,β]; {ko,ki,k2, . . .kn} ;k,r>,查询返回k组空间对象,每 组的对象在一条满足方向约束和范围约束的线路上,且此k组的评分函数值是所有满足查 询要求的查询结果集中最小的k个。
[0100]根据Cost函数的定义,知道路网中面向集合和方向的主关键词优先的空间关键词 查询查找的一组结果是在一条路线上,假设路线上满足查询条件的一组空间对象为(〇〇,〇1, 〇2,. . .,〇n),而对象〇k(0<k<n)包含主查询关键词ko,这条路线的评分函数在此定义为:
[0102] 在公式2-2中,Sp(q,〇Q)表示查询点q与空间对象〇〇之间在路网中的最短路径,sp (〇1,〇1+1)(l<i<n)表示空间对象〇1和 〇1+1之间在路网中的最短路径,公式中除以r是为了归 一化评分,其中r是允许查询的最长路径长度。
[0103] 面向主关键词优先的查询是在面向无主关键词查询的基础上进行的改进,是为了 满足一种新的查询要求而提出的查询算法。此查询算法大部分思想及查询过程和面向无主 关键词查询是一样的,在此不再赘述,接下来给出改进的部分。给出一个查询q,同样从查询 点q开始,但是扩展查询方式不同,路线的评分函数也不同。在扩展查询过程中,会以一种迭 代替换的方式进行扩展查询直到查询到主关键词对象,这里的迭代替换的意思是,如果当 前遍历到的空间对象包含的某个关键词在之前已经有空间对象覆盖了,则把之前的空间对 象从〇1列表中删除,如果删除之后列表的头元素是边的顶点,则把顶点删除直到列表的头 元素为空间对象,之后把当前遍历到空间对象添加到〇1列表的后面。然后,若还有关键词没 有被已查询到的空间对象所覆盖,则以面向无主关键词的查询方式继续进行扩展查询。如 上面的公式4-4,每条路线的评分函数主要包含两部分,第一部分sp(q, 〇k)表示查询点q到 主关键词对象〇1<之间的最短路径长度,第二部分8口(0(),01)+8口(01,02)+...+8口(0 11-1,011)表示 所有满足查询条件的一组空间对象所在的路线的最短路径长度,另外,除以r仍然是为了归 一化评分。
[0104] 同样,为了实现查询,需要定义一个数据结构,记录查询已经遍历到的路线及空间 对象、剩余未被覆盖的查询关键词、已经被覆盖的查询关键词和已经遍历的最短路径长度, 伪码如下所示。
[0106] 上述代码中,〇1是一个列表,用来存储查询已经遍历到的满足查询条件的空间对 象及其路线上的边的顶点,kl是用来存储还未被覆盖的查询关键词的列表,cvl是用来存储 已经被覆盖的查询关键词的列表,spl是用来记录查询点q到主关键词对象之间的最短路径 长度(如果还没有查找到主关键词对象,则记录查询点q与目前路线已到达的顶点之间的最 短路径长度)加上已经查询到的空间对象所在路线的最短路径长度之和。
[0107] 2.2.2算法描述
[0108] 下面用伪码给出了上一小节算法思想的具体描述。
[0109] 算法2.3:findP0ISet(查找候选集)
[0110] 输入:9={(叉,7);|>,0];(1^,1^1,1?,...,1^);1^,1·}
[0111]输出:候选集列表L

[0114]算法2.3进行路网中面向集合和方向的主关键词优先的空间关键词查询,返回所 有满足查询条件的候选结果集。第1到3行创建了一些存储对象并进行了初始化。第4行,确 定了查询点q所在的边。第5到19行检查了 q到其所在边上的顶点之间路段上的空间对象。第 20到38行用while循环不断的处理非空队列U中的每条记录,以扩展的方式实现在路网上面 向集合和方向的空间关键词查询。第39行,返回存有候选结果集的列表L,退出程序。
[0115]从算法2.3得到的候选集中查找结果集的方法同算法2.2,在此不再赘述。
[0116] 3实验结果与分析
[0117] 3.1数据集的选取
[0118]本实验使用的数据集是来自2012年EDBT(EDBT是国际数据库界交流数据管理方面 最新研究成果的国际学术会议)发布的四个真实数据集,分别是Dublin,London,Australia 和British Isles四个城市的道路网。表3.1给出了这四个数据集特征的统计数据。对每个 数据集,随机产生了 100个路网区域内的位置作为查询点位置和100组大小分别为1,2,3,4, 5的关键词集。
[0119]表3.1数据集特征
[0121] 表3.2列出了实验所需要的参数,并用粗体字标出了各参数的默认值。实验就每个 参数,分别在不同的参数值下进行了查询,并记录了每个参数值下查询的响应时间。验证一 个参数取不同值对查询性能的影响时,别的参数取预定义的默认值。
[0122] 表3.2实验参数
[0125] 3.2结果及分析
[0126] 在默认数据集上,对不同参数取不同值时,进行了面向集合和方向的无主关键词 的空间关键词查询和面向集合和方向的主关键词优先的空间关键词查询,并用图形的形式 对实验结果进行了形式化地表述。对于不同的数据集,各种查询参数取默认值的情况下,本 实验进行了这两种查询,根据实验数据给出了这两种查询算法在不同数据集上的响应时间 与数据集的关系图及扩展查找边的条数与数据集之间的关系图,并对关系图进行了文字说 明。对于不同的分割方法,本实验在不同数据集上进行了查询,根据实验数据给出了不同分 割方法下相应时间与数据集,扩展查找的边数与数据集之间的关系图,并对关系图进行了 文字说明。下面从不同的方面来阐述实验结果及其分析。
[0127] 查询方向角:如图3.1所示,研究了不同查询方向角对查询时间的影响。随着查询 方向角的增大,需要查询的边数增多,则查询的响应时间相应地也随之增加。通过图中线条 显示,很明显地能够看出,查询方向角增量不变的情况下,查询的响应时间增速加快,这说 明,查询方向越向外扩展,需要查询的范围增速越来越大,相应地,检查边的条数及空间对 象的个数的增速也越来越快。从图中还可以看出,查询方向角比较小时,查询方向角的增加 对查询响应时间的增速影响不大。这说明进行路网查询时,查询方向角较小,查询扩展到的 边很多都是因为方向角边界线的约束而终止查询路线的扩展。当查询方向角扩大到一定程 度时,路网中的边比较容易扩展开,可以查询的路线迅速增多。所以,查询响应时间的增速 也逐渐加快。
[0128] 查询距离:图3.2描述了不同的查询距离约束下,查询响应时间的变化。随着查询 距离的变大,查询的边数增多,则查询的时间相应地也随之增加。通过图中线条显示,很明 显地能够看出,查询距离增量不变的情况下,查询的响应时间增速加快,这说明,查询距离 越向外扩展,需要查询的范围增速越来越大,相应地,检查边的条数及空间对象的个数的增 速也越来越快。
[0129] 查询关键词个数:如图3.3所示,研究了不同的查询关键词个数对查询时间的影 响。随着查询关键词个数的增多,面向集合和方向的无主关键词的空间关键词查询和面向 集合和方向的主关键词优先的空间关键词查询都需要检查更多的空间对象,则查询的响应 时间相应地也随之增加。尽管这两种查询随着查询关键词个数的增加都需要更多的时间进 行路网中的扩展查询,但当关键词个数增加到一定程度时,查询响应时间的增加逐渐放缓, 这是因为受查询方向角和查询距离的约束,查询关键词增加到一定程度时,查询会遍历所 有能遍历的边,而再增加查询关键词个数也只是增加查询关键词与空间对象关键词匹配的 时间。所以查询响应时间的增速逐渐放缓。
[0130] 不同的数据集:图3.4显示了不同数据集下两种查询的响应时间。能够看出在澳大 利亚路网中查询的响应时间比伦敦路网中较小,这是因为伦敦的路网比澳大利亚的密集。 一般情况下,对于同一个查询距离,伦敦的道路网通常比澳大利亚道路网拥有更多的空间 对象和边。通过图3.5也能看出这种规律。图3.5描绘了不同数据集上查询处理期间所扩展 查找的边的条数。
[0131] 分割方法:如图3.6和图3.7所示,分别研究了不同分割方法对面向集合和方向的 无主关键词的空间关键词查询的响应时间及查找边数的影响。如图3.8和图3.9所示,分别 研究了不同分割方法对面向集合和方向的主关键词优先的空间关键词查询的响应时间及 查找边数的影响。与同等大小的分割方法相比,面向空间对象分布的方法效果更好。通过根 据空间对象的分布来分割道路网,一些局域网比其他的局域网拥有更多的空间对象,相应 地也拥有更多的关键词。除此之外,拥有少量空间对象的区域能够被分成较大的面积局域 网。因此,这种分割方法比同等大小的分割使得两种查询在查询过程中删减不相关的局域 网时更加高效。
[0132] 4结论
[0133] 空间关键词查询是数据库领域研究中的新课题,围绕这个课题,人们提出了各种 各样的空间关键词查询。研究的数据背景主要有基于欧几里得空间的数据和基于道路网空 间的数据。基于欧几里得空间数据,人们研究了 top-k空间关键词查询、面向集合的空间关 键词查询、基于密度的集合空间关键词查询、面向方向的空间关键词查询和面向集合方向 的空间关键词查询等。基于道路网中的空间数据,人们研究了 k近邻查询、连续的k近邻空间 关键词查询和具有范围约束的空间关键词查询等。
[0134] 本发明在前人的研究基础上,提出了一种面向集合的空间关键词高效查询方法, 即路网中面向集合受方向约束的空间关键词查询。针对这两种查询,本发明给出了相关的 定义,查询的算法思想及详细的算法描述。无论是面向无主关键词的查询还是面向主关键 词优先的查询,其基本思想都是给定一个空间关键词查询9={(1,7);1>,0] ;(1^1,1?,..., kn);k,r},查询返回k组空间对象,每组对象在一条满足方向约束和范围约束的线路上,且 这k组的评分函数值是所有满足查询要求的查询结果集中最小的k个,而不同的是两种查询 的评分函数。
[0135] 到目前为止,道路网中面向集合和方向的空间关键词查询的研究还比较少,本发 明所提出的算法仅仅是一个基础性研究,后期还可以在本发明的基础上做大量的改进工 作,例如:记录一条满足查询条件的路线上所有覆盖查询关键词的空间对象个数,这样返回 结果集时,可以考虑路线上空间对象的密度,把路线上所有覆盖查询关键词的空间对象的 路线密度作为评分的一个考虑因素;对于面向集合和方向的主关键词优先的查询,本发明 仅仅考虑了返回一条路线,而未考虑以主关键词对象为起始点,进行包围查询,这样查询出 的一组空间对象可能在以主关键词对象为起始点的多条路线上。
【主权项】
1. 一种路网中面向集合的空间关键词查询方法,其特征在于,所述方法为路网中面向 集合受查询方向约束的无主关键词的空间关键词查询,其实现过程为: 步骤一、给定一个空间关键词查询9={(1,7);|>,0];(1^1,1?,...,1^);1^,1'},查询返回1^ 组空间对象,每组对象在一条满足方向约束和范围约束的线路上,且这k组的评分函数值是 所有满足查询要求的查询结果集中最小的k个; 步骤二、根据Cost函数的定义,知道路网中面向集合受查询方向约束的无主关键词的 空间关键词查询查找的一组结果是在一条路线上,假设路线上满足查询条件的一组空间对 象为(01,02,. . .,0n),该条路线的评分函数在此定义为:(2-1) 在公式(2-1)中,sp(q,〇1)表示查询点q与空间对象〇1之间在路网中的最短路径,sp( 〇i, 〇1+1)(l<i<n)表示空间对象〇1和〇1+1之间在路网中的最短路径,公式中除以r是为了归一 化评分,其中r是允许查询的最长路径长度; 步骤三、为了实现查询,首先需要定义一个数据结构,记录查询已经遍历到的路线及空 间对象、剩余未被覆盖的查询关键词和已经遍历的最短路径长度,伪码如下所示:上述代码中,〇1是一个列表,用来存储查询已经遍历到的满足查询条件的空间对象及 其路线上的边的顶点,kl是用来存储还未被覆盖的查询关键词的列表,spl是用来记录查询 已经遍历的最短路径长度; 步骤四、查询过程为: 给出一个查询q,会给出查询点的位置(q. X,q. y),查询所面向的方向角[α,β],查询关 键词集q. Κ,查询的路径长度约束r,查询结果数据集个数k; 步骤四(一)、首先初始化一个队列U和一个列表L;U用来存储每条遍历路线,每条路线 需要存储的信息即为上述定义的一个结构体entry,在此称为一条记录,entry的〇1记录当 前已遍历到的点,〇 1包括查询点q、满足查询条件的空间对象和边的顶点;且所述当前已遍 历到的点按遍历顺序存储,entry的kl记录目前还没被已查询的空间对象所覆盖的查询关 键词,entry的spl记录目前已遍历到的点所在路线的最短路径长度;L用来存储满足查询条 件的记录,在每条记录中,〇1列表中的一组空间对象共同覆盖查询关键词且所有对象所在 的路线在查询方向角内,kl为空表明所有要查询的关键词已被查询到的空间对象所覆盖, sp 1的值小于路径长度约束r的值; 步骤四(二)、然后,创建一条记录,分三步进行处理查询点所在的边及边上的对象,第 一步,通过利用路网中局域网IR树能够定位到(9.1,9.7)所在的边6^,把9加入6111:^的〇1 列表中,查询关键词加入到entry的kl列表中,entry的spl初始化为0;第二步,判断顶点Vi 和W是否在查询方向角内,假设W在方向角内,则检查从q到W的路段上是否包含满足查询 条件的空间对象,若存在满足查询条件的空间对象,则把相应的空间对象添加到entry的〇1 列表中,把相应的关键词从entry的kl列表中删除,把entry的spl相应的增加,否则,把顶点 vj加入到entry的〇1列表中即可,对于顶点Vi以同样的方法进行处理;第三步,若entry的kl 不为空,说明存在关键词没有被空间对象覆盖,则把顶点W加入到entry的〇1列表中,相应 地更新entry的spl,把记录添加到队列U中,否则说明查询关键词已被全部覆盖,判断此条 记录的spl是否小于r,若是,则把此条记录加入L,否则放弃此条记录; 步骤四(三)、最后,进行扩展遍历的搜索: 通过从U中读取并删除一条条记录,并且检查每条记录entry的〇1列表中最后一个元素 (即已遍历到的最近的顶点)的邻接表,若邻接表中有多个邻接点,则为每一邻接点分支建 立一条虚拟记录,然后核查每个新记录对应的邻接边并更新虚拟记录,核查更新后的虚拟 记录,如果不满足查询条件则删除对应的该虚拟记录,然后为未终止的路线创建一条新记 录并添加到U中; 循环地遍历U直到队列U为空,循环地遍历队列U,能够从(q.x,q. y)开始,遍历完方向角 [α,β]约束及路径长度约束q.r内的所有边,采用验证边相同的方式来查找满足查询条 件的空间对象;在整个搜索过程中,以一种扩展的方式进行遍历查询;搜索过程中,如果顶 点v x不是局域网的边界点,则像上面处理顶点巧一样处理vx,先是验证目前顶点到vx的路段 上是否包含满足查询条件的空间对象,然后相应的更新此条查询路线的〇1列表,kl列表及 spl的值;否则,顶点vx的层次树?;将会被遍历;顶点^的层次树7;将会被遍历的过程如下: 首先,检查仏根结点的倒排文件,看看是否包含有可能满足查询条件的空间对象。如果 不包含有可能满足查询条件的空间对象,可以通过短割跳过整个局域网,而不进行其内部 边的核查;否则,进一步的核查它的孩子结点来检索渴望查询到的空间对象; 当队列U为空时,说明对路网的查询已经结束,从结果列表L中获取要查询的k组空间对 象:首先判断一下L中的记录个数,如果记录的个数小于等于k,则返回L中的所有记录,否 贝1J,根据记录的spl值返回列表L中最小的的k条记录;每条记录中的〇1列表即为满足查询输 入的一条路线,存有满足查询输入的一组空间对象。2.根据权利要求1所述的一种路网中面向集合的空间关键词查询方法,其特征在于,在 步骤四(三)中,不满足查询条件则删除对应的该虚拟记录即为当从队列U中取出一条记录 进行扩展查询时终止一条遍历路线,终止一条遍历路线分以下情况: 一,遍历到某顶点时,检测该顶点是否在该记录中已经遍历过,如该顶点在该记录已经 遍历过,则检查记录的〇1中最后一个顶点与该顶点间路线上的空间对象,记住满足查询条 件的空间对象,然后检查这些空间对象是否覆盖了 kl中的所有关键词且若更新了 spl其是 否仍小于等于q的r,若是,则此条路线是要查询的路线,创建一个与此条路线相对应的新记 录,把此条记录添加到L中,否则,不创建新的记录,放弃此路线的搜索; 二,若下一条要遍历的边与方向角边界线相交,则首先求出相应的交点,然后检查记录 的〇1中最后一个顶点到交点的路段上的空间对象,记住满足查询条件的空间对象,然后检 查这些空间对象是否覆盖了 kl中的所有关键词且若更新了 spl其是否仍小于等于q的r,若 是,则此条路线是要查询的路线,创建一个与此条路线相对应的新记录,把此条记录添加到 L中,否则,不创建新的记录,放弃此路线的搜索; 三,若搜索到达了某个空间对象时,此时的spl大于了 q的r且当前记录的kl中的关键词 没有被完全覆盖或者遍历到到达了某个空间对象时恰好当前记录的kl中的关键词完全被 覆盖,但是此时的spl正好大于了q的r,则说明搜索已经扩展到了规定的范围外,需要终止 此条路线的搜索; 四,若搜索到达了两个局域网的边界点,通过边界点的索引树知道下一个局域网不包 含渴望查询到的空间对象,且记录的spl加上下一个局域网的短割大于了 q的r,记录的kl非 空,则说明此条查询路线不可能满足查询要求,若越过一个局域网去查询另外一个局域网 绝对超出了查询的距离约束范围r,需要终止此条路线的搜索; 五,若查询遍历完某个空间对象时,当前记录的kl中关键词完全被覆盖且此时的spl小 于等于q的r,则说明到此为止,此条查询路线已经满足的查询要求,此条路线上存在一组空 间对象联合起来共同满足所输入查询的关键词,此时应该终止此条路线的扩展,创建一条 相应的新记录或者更新当前的记录添加到L中。3. 根据权利要求1或2所述的一种路网中面向集合的空间关键词查询方法,其特征在 于,在步骤四(二)中,所述局域网IR树用倒排文件对R树的扩展,局域网IR树中的每一个叶 子结点对应道路网中最下层的一个局域网,此最下层的局域网中的每一个边都有一个详细 的描述此边的多段线组成,每一个多段线都被存储到多段线文件中,并且,在局域网IR树的 叶子节点上还有另外一个指针,指向包含此局域网内所有边的多段线信息的多段线文件; 在局域网IR树中每一个非叶子结点包含一条形式为(cp,rect,cp. id)的记录,其中cp是局 域网孩子结点的id,rect表示局域网的最小外接矩形,cp. id表示一个包含所有孩子结点文 本信息的倒排列表的id。4. 根据权利要求3所述的一种路网中面向集合的空间关键词查询方法,其特征在于,在 步骤四(二)中,利用路网中局域网IR树能够定位到(q.x,q.y)所在的边e^,需要以下两个 步骤:1)在局域网IR树上执行一个点位置查询查找所有包含查询位置的最小外接矩形(最 底层局域网);2)执行一次过滤程序选择精确的多段线。5. -种路网中面向集合的空间关键词查询方法,其特征在于,所述方法为路网中面向 集合受查询方向约束的主关键词优先的空间关键词查询,其实现过程为: 步骤一、给定一个空间关键词查询q=<(q.x,q.y); [α,β]; {ko,ki,k2, . . .kn} ;k,r>,查 询返回k组空间对象,每组的对象在一条满足方向约束和范围约束的线路上,且此k组的评 分函数值是所有满足查询要求的查询结果集中最小的k个; 步骤二、根据Cost函数的定义,知道路网中面向集合和方向的主关键词优先的空间关 键词查询查找的一组结果是在一条路线上,假设路线上满足查询条件的一组空间对象为 (〇〇,〇1, 〇2,...,〇"),而对象〇1{(0^^<11)包含主查询关键词1?,这条路线的评分函数在此定 义为:(2-2) 在公式(2-2)中,Sp(q,〇Q)表示查询点q与空间对象〇〇之间在路网中的最短路径,sp( 〇i, 〇1+1)(l<i<n)表示空间对象〇1和〇1+1之间在路网中的最短路径,公式中除以r是为了归一 化评分,其中r是允许查询的最长路径长度; 步骤三、定义一个数据结构,记录查询已经遍历到的路线及空间对象、剩余未被覆盖的 查询关键词、已经被覆盖的查询关键词和已经遍历的最短路径长度,伪码如下所示:上述代码中,〇1是一个列表,用来存储查询已经遍历到的满足查询条件的空间对象及 其路线上的边的顶点,kl是用来存储还未被覆盖的查询关键词的列表,cvl是用来存储已经 被覆盖的查询关键词的列表,spl是用来记录查询点q到主关键词对象之间的最短路径长度 加上已经查询到的空间对象所在路线的最短路径长度之和;如果还没有查找到主关键词对 象,则记录查询点q与目前路线已到达的顶点之间的最短路径长度; 步骤四、查询过程为: 给出一个查询q,用户提交的查询q会给出查询点的位置(q. X,q. y),查询所面向的方向 角[α,β],查询关键词集q.K,查询的路径长度约束r,查询结果数据集个数k; 以迭代替换的方式进行扩展查询直到查询到主关键词对象,所述迭代替换为:如果当 前遍历到的空间对象包含的某个关键词在之前已经有空间对象覆盖,则把之前的空间对象 从〇1列表中删除,如果删除之后列表的头元素是边的顶点,则把顶点删除直到列表的头元 素为空间对象,之后把当前遍历到空间对象添加到〇1列表的后面;然后,若还有关键词没有 被已查询到的空间对象所覆盖,则以面向无主关键词的查询方式继续进行扩展查询。
【文档编号】G06F17/30GK105868336SQ201610182802
【公开日】2016年8月17日
【申请日】2016年3月28日
【发明人】周连科, 王念滨, 王红滨, 王卫兵, 王瑛琦, 何鸣, 宋奎勇
【申请人】哈尔滨工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1