交通网络中带数字属性的近似空间关键字查询方法及系统
技术领域
本发明涉及空间关键字查询技术领域,具体涉及一种交通网络中带数字属性的近似空间关键字查询方法及系统。
背景技术
空间关键字查询(Spatial keyword query,SKQ)是一种利用一组关键字和一个空间约束来表示用户的兴趣,从而挖掘有用信息的经典问题,该问题已经被研究了多年。以前的一些工作侧重于完全匹配的SKQ,它要求精确的关键字匹配。由于文本表达式的多样性,查询通常返回的结果数太少。近年来,开始出现了可以处理拼写错误和传统的拼写差异(例如,color与colour)的近似空间关键字查询(ASKQ)。由于实际应用中经常出现拼写错误和传统拼写差异,因此ASKQ查询比SKQ查询更具有现实意义。
已有的SKQ查询处理的相关工作也可以分为以下两类:欧氏空间中的SKQ和交通网络(简称路网)中的SKQ。对于欧氏空间中的SKQ,使用一组关键字表示对象和查询的文本信息,将欧氏距离作为空间约束度量。但在现实生活中,查询用户和空间文本对象分布在交通网络的道路边上,查询用户与对象之间的距离为路网距离,即连接查询用户和对象的最短路径的长度。近年来,交通网络上的SKQ处理也被考虑,其使用的是真实的交通网络距离,而不是欧式距离,能够更好地满足实际应用的需求。
在许多应用程序(如电子商务)中,会生成各种类型的数据,每种数据都具有文本描述、不同的属性和空间位置。相应地,用户的需求可能包括一组关键字、一组属性-值对、距离限制或所期望的结果数,例如,“oxford”,“dictionary”,发布年份=2018&价格=1000,k=5(意味着需要前5个结果)。
为了满足为用户的需求,需要一种新的、包含数字属性的近似空间关键字搜索的技术方案。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种交通网络中带数字属性的近似空间关键字查询方法及系统,解决大型交通网络中具有数字属性的近似空间关键字查询问题。
为达到以上目的,本发明采取的技术方案是:
本发明提供一种交通网络中带数字属性的近似空间关键字查询方法,包括以下步骤:
构建交通网络模型;
输入若干个带数字属性的空间关键字对象o;
输入带数字属性的近似空间关键字查询q;
计算近似空间关键字查询q和每个空间关键字对象o之间的文本-数字-空间距离,输出文本-数字-空间距离值最小的前k个空间关键字对象o。
在上述方案的基础上,所述构建交通网络模型具体包括以下步骤:将交通网络建模为一个无向加权图G=(V,E),其中V是一个顶点的集合,E是一个边的集合。
在上述方案的基础上,所述空间关键字对象o定义为:o=(o.tags,o.V,o.L),
其中,o.tags是描述性标签,o.V是一组属性-值对,o.L是位于交通网络道路边的空间点。
在上述方案的基础上,所述近似空间关键字查询q定义为:q=(q.W,q.W,Q.L),
其中,q.W是描述关键字,q.V是一组用户指定的属性-值对,q.L是一个位于交通网络边上的空间点。
在上述方案的基础上,所述计算近似空间关键字查询q和每个空间关键字对象o之间的文本-数字-空间距离,具体包括以下步骤:
计算q和o之间的文本距离Dtd(q,o);
计算q和o之间的数值距离Dnd(q,o);
计算从q到o的旅行距离Dtr(q,o);
根据计算出的文本距离Dtd(q,o)、数值距离Dnd(q,o)和旅行距离Dtr(q,o),计算出q和o之间的文本-数字-空间距离Dtns(q,o)。
在上述方案的基础上,所述计算q和o之间的文本距离,具体包括以下步骤:
建立从q到o的关键字映射q.KM(o),q.KM(o)中的每一个关键字wi是o所包含的所有关键字中与qi∈q.W的文本编辑距离最小的关键字,即:
其中,de(qi,wj)为qi和wj之间的文本编辑距离,定义为从qi转换到wj所需要的编辑操作的最小数目;
计算每个关键字wi∈q.KM(o)与对应的qi∈q.W之间的文本编辑距离之和:
在上述方案的基础上,所述计算q和o之间的数值距离,具体包括以下步骤:
对于q和o,计算每个查询属性Aj之间的数值距离dj:
将每个非无穷大的dj归一化到范围[0,1];
对每个查询属性Aj∈q.V,令其中Max(Aj)和Min(Aj)分别是对象集O中所有对象关于属性Aj的最大值和最小值,1.0≤βj≤10.0,令ej=cj+1≥1,计算q和o之间的数值距离:
在上述方案的基础上,所述计算从q到o的旅行距离,具体包括以下步骤:
计算从q到o的旅行距离的公式为:
其中,DN(q.L,o.L)是q到o的路网距离,0≤ρ≤1是距离调节参数,
使用Sigmoid函数对Dtr(q,o)进行归一化到范围[0,1]。
在上述方案的基础上,所述根据计算出的文本距离、数值距离和旅行距离,计算出q和o之间的文本-数字-空间距离,具体包括以下步骤:
q和o之间的文本-数字-空间距离Dtns(q,o)的计算公式为:
Dtns(q,o)=α×Dtd(q,o)+β×Dnd(q,o)+γ×Dtr(q,o) 公式(5),
其中,α、β、γ≥0,且α+β+γ=1。
在上述方案的基础上,所述方法还包括以下步骤:
计算近似空间关键字查询q和每个空间关键字对象o之间的文本-数字-空间距离之前,使用多级划分算法将交通网络递归划分为近似等大小的子图,并最小化边界顶点的数量;
使用G-树保存划分的结果;
预计算包含边界点到边界点最短路网距离的距离矩阵DM;
采用距离矩阵DM计算DN(q.L,o.L),进而计算从q到o的旅行距离Dtr(q,o)。
在上述方案的基础上,所述方法还包括以下步骤:
计算近似空间关键字查询q和每个空间关键字对象o之间的文本-数字-空间距离之前,构建签名-文本-数字索引STA,使用签名-文本-数字索引STA计算子图中对象的文本距离和数值距离,具体包括以下过程:
将每个非叶子子图Gi保存为子图Gi的id、子图Gi的STA部分和指向Gi子图的条目,子图Gi的STA部分包含Gi中保存的所有对象的关键字签名,以及每个数字属性Ak的min(Ak)和max(Ak)。其中,min(Ak)和max(Ak)分别是Gi中对象关于每个数字属性Ak的值的最小值和最大值;如果子图中没有对象包含属性Ak,则max(Ak)=Min(Ak)=+∞;
将每个叶子子图Gi保存为子图Gi的id、子图Gi的STA部分;子图Gi的STA部分包含Gi中保存的所有对象的关键字签名,以及每个数字属性Ak的min(Ak)和max(Ak),还包括文本-数字索引TA-ref;其中,min(Ak)和max(Ak)分别是Gi中对象关于每个数字属性Ak的值的最小值和最大值;如果子图中没有对象包含属性Ak,则max(Ak)=Min(Ak)=+∞;所述文本-数字索引TA-ref用于计算子图中对象的文本距离和数值距离。
在上述方案的基础上,所述文本-数字索引TA-ref包括T-ref索引和A-ref的索引,其中:
T-ref索引为:
将Gi中所有对象包含的关键字划分为N个簇,为每个簇选择一个参照关键字计算每个簇的编辑距离下限和上限
为对象oj的第i关键字,根据关键字与参照关键字之间的文本距离计算得出键即其中C等于该簇的参照关键字与该簇中各对象的相关关键字之间的文本距离的最大值加1;
将键作为Gi中的每个对象的文本距离的索引;
A-ref的索引为:
对系统的每个数字属性Ak(1≤k≤n),使用[k-1,k)表示属性Ak的属性值的范围;
键根据Ak的属性值计算而得,即其中oi.Vk是对象oi关于Ak的属性值,Mk=Max(Ak)-Min(Ak),Max(Ak)和Min(Ak)是空间关键字对象集O中所有的对象关于数字属性Ak的值的最大值和最小值;
将键作为Gi中的每个对象的数值属性的索引。
在上述方案的基础上,所述方法还包括以下步骤,计算近似空间关键字查询q和每个空间关键字对象o之间的文本-数字-空间距离之前,采用设定的剪枝策略削减无关子图。
在上述方案的基础上,所述设定的剪枝策略为:
给定一个Top-k近似空间关键字查询q=(q.w,q.V,q.L,k)和一个子图Gi,
如果则Gi可以被安全的削减,
其中,ok是q的第k近邻,Dtns(q,ok)是ok与q的文本-数字-空间距离。
在上述方案的基础上,所述设定的剪枝策略为:
给定一个Top-k近似空间关键字查询q=(q.w,q.V,q.L,k)和一个子图Gi,
如果则Gi可以被安全的削减。
在上述方案的基础上,所述设定的剪枝策略为:
给定一个Top-k近似空间关键字查询q=(q.w,q.V,q.L,k)和一个子图Gi,
如果使得Gi.STA的Max(Aj)或Min(Aj)等于则Gi可以被安全的削减。
在上述方案的基础上,所述设定的剪枝策略为:
给定一个Top-k近似空间关键字查询q=(q.w,q.V,q.L,k)和一个子图Gi,
如果其中ok是q的k近邻对象,是Gi中对象o与q之间的文本-数字-空间距离值的下界,则Gi可以被安全的削减。
在上述方案的基础上,若Gi为非叶子子图,计算的方法为:
通过假设Dtd(q,Gi)=0缩小的值;
对每个查询属性Ak,比较q关于Ak的值q.Ak.v和Gi关于Ak的取值范围[Min(Ak),Max(Ak)];如果q.Ak.v落在[Min(Ak),Max(Ak)]范围内,则假设dk=0;否则dk=min{|q.Ak.v-Min(Ak)|,|q.Ak.v-Max(Ak)|},由公式(3)计算得到
使用q到Gi的边界点的路网距离的最小值计算
计算
在上述方案的基础上,若Gi为叶子子图,计算的方法为:
对每个查询属性Ak,比较q关于Ak的值q.Ak.v和Gi关于Ak的取值范围[Min(Ak),Max(Ak)];如果q.Ak.v落在[Min(Ak),Max(Ak)]范围内,则假设dk=0;否则dk=min{|q.Ak.v-Min(Ak)|,|q.Ak.v-Max(Ak)|},由公式(3)计算得到
使用q到Gi的边界点的路网距离的最小值计算
采用子图的TA-ref索引计算为每个查询关键字qi∈q.W,计算qi与Gi中对象关于qi的最匹配关键字wi之间的编辑距离的下限,即
计算的方法为:
首先计算qi与每个参照关键字之间的编辑距离,即
如果令关于qi的处理结束;
否则,选择和它的两个边界值DL和令等于
通过使用所有由公式(1)得到的值;
计算
本发明还提供一种交通网络中带数字属性的近似空间关键字查询系统,包括:
模型构建模块,其用于:构建交通网络模型;
输入模块,其用于:输入若干个带数字属性的空间关键字对象o;输入带数字属性的近似空间关键字查询q;
距离计算模块,其用于:计算近似空间关键字查询q和每个空间关键字对象o之间的文本-数字-空间距离,输出文本-数字-空间距离最短的前k个空间关键字对象o。
在上述方案的基础上,所述距离计算模块计算近似空间关键字查询q和每个空间关键字对象o之间的文本-数字-空间距离,具体包括以下步骤:
计算q和o之间的文本距离Dtd(q,o);
计算q和o之间的数值距离Dnd(q,o);
计算从q到o的旅行距离Dtr(q,o);
根据计算出的文本距离Dtd(q,o)、数值距离Dnd(q,o)和旅行距离Dtr(q,o),计算出q和o之间的文本-数字-空间距离Dtns(q,o)。
与现有技术相比,本发明的优点在于:
本发明提供的查询方法综合考虑空间文本对象的位置、文本描述、数字属性,解决大型交通网络中具有数字属性的近似空间关键字查询问题。同时,采用包含签名文件、文本组件、数字组件和G树的混合索引STAG-tree,有效提升交通网络中具有数字属性的近似空间关键字查询效率。还提供了基于混合索引STAG-tree的剪枝策略,有效削减无关的子图及空间文本对象,提升查询效率。
附图说明
图1为本发明实施例的交通网络中带数字属性的近似空间关键字查询方法的流程示意图;
图2为本发明实施例的交通网络中带数字属性的近似空间关键字查询方法的STAG-树的结构示意图;
图3为本发明实施例的交通网络中带数字属性的近似空间关键字查询方法的签名-文本-数字索引STA的结构示意图;
图4为本发明实施例的交通网络中带数字属性的近似空间关键字查询方法的TA-ref索引的结构示意图。
具体实施方式
以下结合附图对本发明的实施例作进一步详细说明。
本发明实施例提供一种交通网络中带数字属性的近似空间关键字查询方法,包括以下步骤:
构建交通网络模型;
输入若干个带数字属性的空间关键字对象o;
输入带数字属性的近似空间关键字查询q;
计算近似空间关键字查询q和每个空间关键字对象o之间的文本-数字-空间距离,输出文本-数字-空间距离最短的前k个空间关键字对象o。
作为优选的实施方式,一个交通网络通常被建模为一个无向加权图G=(V,E),其中V是一个顶点的集合、E是一个边的集合。一个顶点v∈V表示交通网络的一个十字路口或终点。一条边e(vi,vj,l),代表了两个顶点vi和vj中间的路段(i≠j)和l表示道路段的长度。
交通网络模型可以扩展为支持代表单向交通的有向加权图,简单地说,将e(vi,vj)和e(vj,vi)的长度设置为不同的取值。
定义1:具有数字属性的空间关键字对象。交通道路网络中的具有数字属性的空间关键字对象o(简称为对象)被定义为:o=(o.tags,o.V,o.L),其中o.tags是相关的描述性标签(包括一组关键字),o.V是一组属性-值对,o.L是对象的位置,表现为一个位于交通网络道路边的空间点。o.V的大小是属性-值对的数量,用n表示。因此,对象o可以表示如下:
o={o.tags,A1=v1∩A2=v2…∩An=vn,o.L}
定义2:具有数字属性的近似空间关键字查询(A2SKT)。一个交通网络中的具有数字属性的近似空间关键字查询q被定义为:q=(q.W,q.W,Q.L),其中q.W是相关的描述关键字,q.V是一组用户指定的、属性-值对,q.L是一个位于交通网络边上的空间点。因此,一个A2SKT查询q可以表示为如下:
q={q.W,A1=v1∩A2=v2…∩Am=vm,q.L}
给定一个A2SKT查询q和一个对象o,为了度量q和o之间的相关性,需要考虑以下三个因素,即q和o之间的文本距离、数字属性距离和交通网络距离。
定义3:关键字映射。对于A2SKT查询q和对象o,一个从q到o的关键字映射,即:q.KM(o),就是一组关键字,其中的每一个关键wi是o所包含的所有关键字中与qi∈q.W的文本编辑距离最小的关键字,即,
其中,串s1和s2之间的编辑距离de(s1,s2),可以定义为从s1转换到s2所需要的编辑操作(即,插入、删除或替换)的最小数目。
定义4:文本距离。对于A2SKT查询q和对象o,首先计算每个关键字wi∈q.KM(o)与对应的qi∈q.W之间的文本编辑距离之和。为了将计算的文本编辑距离之和规范化到范围[0,1],max{|qi|,|wi|},即|qi|和|wi|中的较大者也需要考虑,具体如下:
接下来,计算出查询q=(q.W,q.V,q.L)和对象o=(o.tags,o.V,o.L)之间的数值距离。数值距离指的是在同样的数字属性下、查询q和对象o的属性值之间的差异程度。
查询q和对象o,对于每个查询属性Aj,它们之间的数值距离dj可以表示如下:
然后,将每个非无穷大的数值距离规范化到范围[0,1],全面考虑每个非无穷大的数值距离来计算q和o之间综合的数值距离。
定义5:数值距离。
对每个查询属性Aj∈q.V,令其中Max(Aj)和Min(Aj)分别是对象集O中所有对象关于属性Aj的最大值和最小值,1.0≤βj≤10.0。令ej=cj+1≥1,q和o之间的数值距离可以定义如下:
如果有任意查询属性不存在于o.V中,Dnd(q,o)=+∞。
定义6:旅行距离。旅行距离是衡量查询代价的另一个方面,它是从查询q到对象o之间的最短路径的长度,即DN(q.L,o.L).
由于在小变量情况下Sigmoid函数的值变化迅速,这与以下直觉一致,即在距离较短的情况下,用户满意度通常对出行距离更为敏感。因此,使用Sigmoid函数对旅行距离归一化至范围[0,1]:
其中,0≤ρ≤1是距离调节参数。
最后,采用文本-数字-空间距离的概念,通过简单的线性插值,将查询q与对象o之间的空间、文本和数字相关性的度量组合起来。
定义7:文本-数字-空间距离。给定查询q和对象o,它们之间的文本-数字-空间距离记为Dtns(q,o),定义如下:
Dtns(q,o)=α×Dtd(q,o)+β×Dnd(q,o)+γ×Dtr(q,o) 公式(5)
其中,α、β、γ≥0,且α+β+γ=1。
定义8:利用文本-数字-空间距离Dtns(q,o)度量查询q与对象o的组合邻近度,可以正式定义Top-k、A2SKT查询如下:
给定空间关键字对象集O,一个Top-k、A2SKT查询q=(q.W,q.V,q.L,k)获取一组对象满足:|O’|=k且对于和o’∈O-O’,则Dtns(q,o)<Dtns(q,o’)。
参见图1所示,其为一个Top-k、A2SKT查询的实例,图中空间关键字对象集O有10个空间关键字对象o,1个A2SKT查询q位于交通网络的各道路边上。
图1中,Border vertex表示边界结点,Vertex表示结点,Object表示对象o,Query表示查询q。
Top-k、A2SKT查询q包含四个组成部分:一组查询关键词(如{Theater,coffee}),一组属性-值对(如“A1=4.4&A2=45”),一个空间点(如qL指示查询q位于交通网络道路边的空间点),和一个k值(如k=1指示想要获取Top-1相关对象)。注意A1=“rating(等级)”,A2=“pcc(人均消费额)”。首先考虑o5、o6、o7和o9,它们与查询q之间的路网距离是O中所有对象中最近的四个。
假设M1=Max(A1)-Min(A1)=5-0=5,M2=Max(A2)-Min(A2)=200-0=200,e1=1,e2=3,ρ=0.1,和α=β=γ=1/3,可以计算得到:
同样地,可以得到dtns(q,o5)=0.1649,dtns(q,o7)=0.1682,和dtns(q,o9)=+∞。注意,因为o9没有查询属性A2,Dnd(q,o9)=+∞,则Dtns(q,o9)=+∞。因此,对象o6是q当前的Top-1结果对象。其他对象也可以进行类似的处理。
为了高效地处理A2SKT查询,本发明实施例还提供一种新颖的混合索引结构STAG-tree,具体如图2所示。STAG-tree被设计为双层混合机构,它考虑到了网络拓扑结构的基本不变性和对象的的动态性。
第一层:交通网络的G树。G树是一种基于组合的索引,可以有效地支持交通网络上的位置相关查询。具体来说,使用多级划分算法将交通网络递归划分为近似等大小的子图,同时最小化边界顶点的数量(如图1所示),然后使用G树保持划分的结果,如图2所示。然后,预计算并保留包含边界点到边界点(或顶点)最短路网距离的距离矩阵(DM),以加快查询处理过程中的路网距离计算。如图2所示,每个子图(或图)的DM在其旁边给出。
第二层:签名-文本-数字索引STA。其次,构建索引的动态部分(第二层),即,关于签名-文本-数字索引STA。对于每个非叶子子图(节点)Gi,保留以下项目:
1)子图Gi的id;
2)子图的STA部分,如图3所示,包含Gi中保存的所有对象的关键字签名,以及每个数字属性Ak的min(Ak)和max(Ak)。其中,min(Ak)和max(Ak)分别是Gi中对象关于每个数字属性Ak的值的最小值和最大值。如果子图中没有对象包含属性Ak,则max(Ak)=Min(Ak)=+∞;
3)指向Gi子图的条目。
对于每个叶子子图(结点)Gi,与非叶子子图类似,也保持前两项,即
1)Gi的id;
2)Gi的STA部分。除了用于非叶子子图的STA部分中包含的项之外,用于叶子子图的STA还包括TA-ref索引,具体如下。
TA-ref索引。TA-ref索引,如图4所示,用于组织各叶子子图上对象的文本信息和数值信息,以方便子图中对象的文本距离和数值距离的计算。TA-ref索引由两部分组成:T-ref和A-ref,将对此进行详细讨论。
T-ref部件。据所知,直接使用瓦格纳-费雪算法(Wagner-fisher算法)来计算查询过程中的文本编辑距离是不可行的。因此,对于每个叶子子图Gi,构造T-ref部分来索引Gi中对象的文本编辑距离。对于Gi,选择一组参照关键字来索引Gi内对象中包含的关键字与R(Gi)之间的文本编辑距离。
为了构建Gi的T-ref部分,需要将Gi中所有对象包含的关键字划分为N个簇,并为每个簇选择一个参照关键字从而最小化每个簇中编辑距离的数学期望。为了达到这个目的,使用k-means聚类算法来获得每个簇及其对应的参照关键字。因此,Gi中的每个对象oi通过键在一棵B+树中被索引。
键可以根据关键字与参照关键字之间的编辑距离计算得出,即其中C等于该簇的参照关键字与该簇中各对象的相关关键字之间的编辑距离的最大值加1。为了方便查询处理中的编辑距离计算,还计算并保持了每个簇的编辑距离下限和上限
图4给出了图1中子图G12的T-ref,其中将G12中对象的关键字划分为三个簇,各簇的参照关键字分别为“Theater”、“coffee”、“bread”。
A-ref的部件。A-ref部件是为了方便子图中对象的数值距离的计算。对系统的每个数字属性Ak(1≤k≤n),使用[k-1,k)表示属性Ak的属性值的范围。要将对象的属性值映射到属性的值范围,Gi中的每个对象oi都按键在B+树中进行索引。键根据它的属性值计算而得,即其中oi.Vk是对象oi关于Ak的属性值,Mk=Max(Ak)-Min(Ak)。注意,Max(Ak)和Min(Ak)是O中所有的对象关于属性Ak的值的最大值和最小值。
图4还给出了子图G12的A-ref,其中将G12内对象的属性值划分为三个簇,其值范围分别为[0,1)、[1,2)和[2,3]。例如,对象o6的属性A2的属性值为45,M2=100,因此
此外,对于子图中每条边e以及其上的对象,还保留了以下几项:
1)边e的id(e.id);
2)边e的起始顶点(e.s);
3)边e的结束顶点(e.e)。对于e边的两个顶点,假定id较小的顶点是起始顶点(e.s),id较大的顶点是结束顶点(e.e);
4)边e的权值(e.L)。这里边的权值是它的长度,权值可以是通过这条边的任何其他代价,例如,旅行时间;
5)保持位于边e的每个对象信息的对象列表,e.object-list。特别是,对于e边的每个对象o,还保持:a)其id,o.id;b)它在边e上的位置o.l,它表示为从e.s到该对象的距离;c)对象o的关键字签名,o.Signature。
6)边e的N-ref部件,e.N-ref。
N-ref部件。e.N-ref等于边e上对象的位置范围,例如边e(n8,n11)上有两个对象o6和o9分别位于边的位置4和6,因此e(n8,n11).N-ref=[4,6]。
为有效削减无关的子图及空间文本对象,本发明实施例还提供几种空间削减的方法。
本发明实施例涉及的空间削减的几个引理。
引理1:给定一个Top-k A2SKT查询q=(q.w,q.V,q.L,k)和一个子图Gi,如果则Gi可以被安全的削减。其中,ok是q的第k近邻,Dtns(q,ok)是ok与q的文本-数字-空间距离。
引理2:给定一个Top-k A2SKT查询q=(q.w,q.V,q.L,k)和一个子图Gi,如果则Gi可以被安全的削减。
引理3:给定一个Top-k A2SKT查询q=(q.w,q.V,q.L,k)和一个子图Gi,如果使得Gi.STA的Max(Aj)(或Min(Aj))等于+∞,则Gi可以被安全的削减。
上述三个引理的剪枝力度相对有限。为了进一步减少无关子图,对于任意子图Gi,提出引理4。
引理4:给定一个Top-k A2SKT查询q=(q.w,q.V,q.L,k)和一个子图Gi,如果其中ok是q的k近邻对象,是Gi中对象o与q之间的文本-数字-空间距离值的下界,则Gi可以被安全的削减。
其中,距离下界值的计算方法如下:
(1)Gi为非叶子子图。
如果子图Gi没有被引理1,2和3所修剪,通过假设Dtd(q,Gi)=0来缩小的值。
为计算对每个查询属性Ak,比较q关于Ak的值(即,q.Ak.v)和Gi关于Ak的取值范围[Min(Ak),Max(Ak)]。如果q.Ak.v落在[Min(Ak),Max(Ak)]范围内,则假设dk=0;否则dk=min{|q.Ak.v-Min(Ak)|,|q.Ak.v-Max(Ak)|}。然后由公式(3)计算得到
为计算使用q到Gi的边界顶点的路网距离的最小值。
最后有,
(2)Gi为叶子子图。
的计算与非叶子子图类似。
的计算与非叶子子图类似。
子图Gi的TA-ref索引将被用来计算其重点是为每个查询关键字qi∈q.W,计算qi与Gi中对象关于qi的最匹配关键字wi之间的编辑距离的下限,即下面将详细介绍如何确定wi及其对应的对象oi。
计算由于编辑距离遵循三角不等式规则,利用Gi的TA-ref索引中T-ref部件的qi与其参照关键字之间的编辑距离。
首先计算qi与每个参照关键字之间的编辑距离,即 如果令 关于qi的处理结束。
否则,选择和它的两个边界值 和令等于
然后,通过使用所有可以由公式(1)得到的值。
最后有,
本发明实施例还提供一种采用STAG-tree索引结构进行A2SKT查询处理的算法(称为A2S2KG)。它的输入是STAG-tree ST和一个A2SKT查询q=(q.W,q.V,q.L,k),并输出查询q的Top-k对象集。A2S2KG渐进地访问最近的子图并获取最相关的对象。最后,返回文本-数字-空间距离值Dtns(q,o)最小的前k个对象作为查询结果。
算法1给出了A2S2KG算法的伪代码。首先,初始化为空的最小堆HG用于组织要访问的结点(子图)或对象。此外,集合Sresult用来保持查询q的结果对象,初始化为+∞的变量Dtsk用来保持查询q的k最近邻的文本-数字-空间距离值。特别地,堆HG是有序结构,作为堆中结点(子图)Pnode在堆中的键。
算法1:A2S2KG算法如下
输入:STAG-tree SNG,A2SKT query q=(q.W,q.V,q.L,k)
输出:set Sresult
1float Dtsk=+∞;
2定位q所在的叶结点(子图)leaf(q);
3 for(每个对象o∈leaf(q))do
4…{if(Dtns(q,o)≥Dtsk)then
5……{HG.push(O,Dtns(q,o));//相应地更新Dtsk;}}
6 PNode=leaf(q);
7
8
9……..{Adjust(PNode,Pmin,HG);}
10….(c,dis)=HG.pop();
11….if(dis>PLB&Pnode≠R0)then
12……..{Adjust(PNode,Pmin,HG);}
13.…else
14……..{if(c是一个对象)then
15…………{将c插入结果集Sresult;}
16…..…else
17…………{if(c是非叶子结点子图)then
18……………..{for(每个未访问的子结点s∈c)do
19…………………{Gjudge(s);}}
20…………else
21…………….{for(每个对象o∈c)do
22…………………{Ojudge(o);}}}}}
A2S2KG算法首先定位q所在的叶结点(子图),即leaf(q)。对于leaf(q)中的每个对象o,将o及其Dtns(q,o)插入堆HG。同时,若Dtns(q,o)不大于Dtsk,则相应更新Dtsk的值(第2-5行)。
然后,使用指针Pnode保持ST中被访问的最上层结点(子图),使用变量PLB保持其与查询q的文本-数字-空间距离的下界,即 令Pnode指向leaf(q)、令PLB等于(第6行),然后按自底向上的方式访问ST(第7-22行)。如果HG为空,则调用Adjust函数将Pnode移动到其父结点,并相应地更新PLB(第9行)。Adjust函数还将处理新Pnode的每个未访问的子结点。Adjust函数的具体步骤见算法2。
接下来,元组(c,dis)从堆HG的堆顶弹出。注意,(c,dis)是HG的头元素,且HG中的元素是按照其与查询q的文本-数字-空间距离值(或距离值下限)递增的顺序排列的。如果dis(即头元素c与查询q的文本-数字-空间距离值(或距离值下限))大于PLB,则查询结果可能存在于Pnode的父结点中,因此调用Adjust函数将Pnode移动到其父结点,并相应地更新PLB(第12行)。否则(即,dis≤PLB),则有三种情形:1)c为对象,则c为Top-k结果对象,因为c为文本-数字-空间距离值最小的对象,将c插入结果集(第14-15行);2)c是一个非叶子子图,对于c的每个未访问的子图s,调用Gjudge函数(如算法3所示)对每个s进行处理;3)c是叶子子图,对于c的每个对象o,调用Ojudge函数来处理o。
算法2:Adjust函数
输入:PNode,PLB,HG
输出:PLB
1 PNode=PNode.Parent;
2 for(对PNode的每一个尚未访问的孩子结点s)do
3….{Dtms=Gjudge(s);
4.…if(Dtns<PLB)then
5…..…{PLB=Dtns;}}
算法2给出了Adjust函数的伪代码。它首先移动Pnode指向其父结点(第1行),然后对Pnode的每一个尚未访问的子结点s,调用Gjudge函数(见算法3)以检查s是否可能包含结果对象。如果s是一个有可能的子图,则计算其与查询q的文本-数字-空间距离值的下限,即最后,函数返回保存了Pnode所有子图s中值的最小值的PLB。
算法3:Gjudge函数
输入:STAG,A2SKT query q,node s
输出:
1
2…..…return 1;//s被引理1削减;
3
4…..…return 1;//s被引理2削减;
5….if(使得Gi.SGA中Max(Ak)(或Min(Ak))等于+∞)then
6…..…return 1;//s被引理3削减;
7
8…..…return 1;//s被引理4削减;
9….else
10…..…{HG.push(s,);//相应地更新Dtsk;;
11
算法3给出了Gjudge函数的伪代码。对于结点s,Gjudge函数分别使用引理1、2、3检验s是否是合格子图,否则s被安全修剪,返回值1(即Dtns(q,s)的上限值)。如果s没有被修剪,则1)计算2)若将s连同一起压入堆HG(相应更新Dtsk的值)。同时,返回否则,用引理4修剪s,并返回1。这是因为如果则s不可能包含任何结果对象。Ojudge函数的细节步骤与Gjudge相似,此处省略了。
基于同一发明构思,本申请实施例提供了一种交通网络中带数字属性的近似空间关键字查询系统,包括:
模型构建模块,其用于:构建交通网络模型;
输入模块,其用于:输入若干个带数字属性的空间关键字对象o;输入带数字属性的近似空间关键字查询q;
距离计算模块,其用于:计算近似空间关键字查询q和每个空间关键字对象o之间的文本-数字-空间距离,输出文本-数字-空间距离最小的前k个空间关键字对象o。
作为优选的实施方式,所述距离计算模块计算近似空间关键字查询q和每个空间关键字对象o之间的文本-数字-空间距离,具体包括以下步骤:
计算q和o之间的文本距离Dtd(q,o);
计算q和o之间的数值距离Dnd(q,o);
计算从q到o的旅行距离Dtr(q,o);
根据计算出的文本距离Dtd(q,o)、数值距离Dnd(q,o)和旅行距离Dtr(q,o),计算出q和o之间的文本-数字-空间距离Dtns(q,o)。
交通网络中带数字属性的近似空间关键字查询系统的具体实现方式与交通网络中带数字属性的近似空间关键字查询方法基于同一发明构思,在此不再重复。
基于同一发明构思,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现交通网络中带数字属性的近似空间关键字查询方法的所有方法步骤或部分方法步骤。
本发明实现上述交通网络中带数字属性的近似空间关键字查询方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
基于同一发明构思,本申请实施例还提供一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现交通网络中带数字属性的近似空间关键字查询方法中的所有方法步骤或部分方法步骤。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、服务器或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、服务器和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。