一种交通网络中提高时空关键字查询结果可用性的方法

文档序号:30520841发布日期:2022-06-25 04:52阅读:292来源:国知局
一种交通网络中提高时空关键字查询结果可用性的方法

1.本发明涉及交通网络中的时间感知空间关键字查询(tskqt)领域,具体来讲涉及一种交通网络中提高时空关键字查询结果可用性的方法。


背景技术:

2.近年来,随着基于位置的服务的日益普及和地理定位技术的快速发展,用户可以很容易地从各种移动终端设备上获取具有位置和文本描述的海量数据对象。空间关键字查询作为基于位置服务的核心技术,已经引起了学术界和工业界的广泛关注。随着信息采集技术的不断进步,web空间中位置文本数据的内容越来越丰富。例如,web空间中的兴趣点(poi)不仅包含位置文本信息,还包含时间信息、方向和其他数字属性信息,这无疑使空间关键字查询更加个性化。时间感知的空间关键字查询是个性化空间关键字查询的代表之一,它不仅考虑了查询和对象的位置和文本信息,还考虑了它们的时间信息。
3.在现实应用中,查询用户和对象位于交通网络的道路上,其中用户和对象之间的距离是连接它们的最短路径的长度,这由交通网络的连通性决定。交通网络中的时间感知空间关键字查询(tskqt)旨在根据同时考虑空间邻近性、文本相关性和时间相似性的排名函数检索排名靠前的对象。但是,由于查询参数设置不当,可能会在查询结果集中出现用户不期望的一个或多个对象,称为why对象,这将使客户感到困惑,并导致客户对查询结果产生疑问,使得时空关键字查询结果可用性不够高。
4.目前,对why问题的研究相对较少,并且还没有相关的研究成果来解决空间关键字查询的why问题。因此,亟需一种方法来解决交通网络中的时间感知空间关键字查询的why问题(whytskqt),从而将why对象从查询结果中排除,提高时空关键字查询结果可用性。


技术实现要素:

5.针对现有技术中存在的缺陷,本发明的目的在于提供一种交通网络中提高时空关键字查询结果可用性的方法,将why对象从查询结果中排除,提高查询结果的可用性。
6.为达到以上目的,一方面,采取一种交通网络中提高时空关键字查询结果可用性的方法,包括步骤:
7.建立一个高效混合索引akwq树,包括使用加权四叉树将道路网络及其对象划分为多个网格单元,且每个网格单元在存储空间中的大小大致相等,为每个网格单元构造一个文本和时间部件;
8.基于所述akwq树,从原始结果对象中顺序提取新关键字添加到原始关键字集中,并从关键字集中删除why对象的关键字;通过why对象的时间间隔与查询时间间隔之间的关系,获得精炼查询的时间间隔,从而形成精炼查询;对各个精炼查询进行处理后得到最佳精炼查询。
9.优选的,使用加权四叉树将道路网络及其对象划分为多个网格单元包括:
10.使用加权四叉树的根结点网格单元来表示整个网络空间,如果当前网格单元中的
加权对象数量n
wo
超过预定义阈值λ
wqt
,则根结点网格单元将被拆分为大小相等的四个网格单元,并作为根结点的子结点;
11.对于拆分后的每个网格单元,如果其中的加权对象数量n
wo
大于预定义阈值λ
wqt
,则该网格单元再次被分为四个大小相等的网格单元,直至每个网格单元的加权对象数量n
wo
不大于预定义阈值λ
wqt
时,不再拆分。
12.优选的,所述建立一个高效混合索引akwq树还包括:
13.计算并保持每对网格单元之间的道路网络距离与欧式距离之比的上限和下限;
14.根据每个关键字的出现频率给出一个权重,并将权重从大到小的顺序进行全局排名,并通过bloom过滤器区分频繁关键字和非频繁关键字。
15.优选的,为每个网格单元构造一个文本和时间部件,具体包括:
16.对于akwq树中每个非叶子网格单元,保留该非叶子网格单元的id、该非叶子网格单元中的对象所包含的频繁关键字的bloom过滤器、保留非频繁关键字的倒排列表、时间间隔的倒排列表、以及指向该非叶子网格单元的孩子网格单元的条目;
17.对于每个叶子网格单元,包括该叶子网格单元的id、该叶子网格单元包含的所有关键字的倒排列表、以及时间间隔的倒排列表。
18.优选的,基于所述akwq树进行查询,包括修剪交通网络中不相关的交通网络空间和不合格的空间文本对象,具体为:给定一个tskqt查询q=(q.loc,q.doc,q.ti,q.k)和akwq树的一个网格单元ci,
19.如果则该网格单元ci可以被安全的削减,其中ok是q当前的第k近邻,st(q,ok)是ok与q的综合相似度得分;α、β、以及γ是查询偏好参数,分别用于度量空间邻近度、文本相似度和时间相似度的重要性,且α+β+γ=1;ρ是距离调整参数。
20.如果则该网格单元ci可以被安全的削减,其中ci.il
t
.ti是ci中具有非空时间倒排列表的时间间隔的并集,q.ti表示原始查询q的时间间隔,表示为空。
21.如果则该网格单元ci可以被安全的削减,其中keyi∈q’.doc’;
22.如果st
ub
(q,ci)《st(q,ok),则该网格单元ci可以被安全的削减,其中,st
ub
(q,ci)是查询q和ci中任何对象o之间综合相似度得分的上界。
23.优选的,所述从原始结果对象中顺序提取新关键字添加到原始关键字集中,包括:
24.将原始查询结果集中所有对象的关键字分为sk
wr
和三个子集,表示仅由why对象包含但不由其他结果对象包含的关键字集,sk
wr
表示由why对象关键字集和其他结果对象包含的关键字集的交集,表示why对象不包含、而其他结果对象包含的关键字集;
25.使用第一列表akl保存待添加的关键字,第一列表akl是中关键字的顺序列
表,按照关键字权重降序排列;
26.使用第二列表dkl保留要删除的关键字,包括两部分,第一部分是中关键字的顺序列表,第二部分是sk
wr
中关键字的顺序列表,且均按照关键字权重降序排列。
27.优选的,通过why对象的时间间隔与查询时间间隔之间的关系,获得精炼查询的时间间隔,包括:
28.当w.st《q.st《w.et《q.et时,通过固定查询时间长度q.et-q.st,并同步增大q.st和q.et的方法,来减少why对象的时间间隔与查询时间间隔之间的重叠率,其中q.st为查询开始时间,q.et为查询结束时间,且查询开始时间的取值范围为(q.st,w.et],查询结束时间同步变化;w.st表示why对象的起始时间,如果有多个why对象,取其最小值;w.et表示why对象的结束时间,如果有多个why对象,取其最大值;
29.当w.st《q.st且w.et》q.et时,查询时间保持不变,并固定为原始查询时间;
30.当q.st《w.st《q.et《w.et时,固定查询时间长度,并同步减少查询结束时间q.et和查询开始时间q.st,且查询结束时间的取值范围为(q.et,w.st],查询开始时间同步变化;
31.当q.st《w.st且q.et》w.et时,查询时间保持不变,并固定为原始查询时间。
32.优选的,所述从而形成精炼查询;对各个精炼查询进行处理后得到最佳精炼查询,还包括:
33.第一列表akl中的关键字被有序的取出并添加到精炼查询的关键字集中,第二列表dkl中的关键字被有序取出、并从精炼查询的关键字集中取出并删除,依次取出查询时间列表qtl中的查询时间间隔,从而形成新的精炼查询,进行处理后得到最佳精炼查询,直至第一列表akl、第二列表dkl和查询时间列表qtl全部为空。
34.优选的,每个精炼查询的代价值如果小于变量pc,通过将akwq树的根结点推入队列d来启动每个精炼查询的处理进程。
35.优选的,当队列d不为空时,其元素按照如下顺序处理,得到最佳精炼查询:
36.弹出队列d的头结点,并由tnode指向头结点;
37.如果tnode所指向的结点满足:其到精炼查询的最小网络不超过规定的上限值时,并且结点tnode的时间间隔与查询时间间隔相交,则:
38.如果结点tnode是非叶子结点、且结点tnode包含任何精炼查询的查询关键字、且结点tnode关于精炼查询的查询关键字的时空相似度st得分上界不小于ok的st得分值,将结点tnode的每个合格子结点连同其时空相似度st得分上界依次插入队列d中;
39.如果结点tnode是叶子结点、且结点tnode包含任何精炼查询的查询关键字、且结点tnode关于精炼查询的查询关键字的时空相似度st得分上界不小于ok的st得分值,计算结点tnode的每个合格对象的时空相似度st得分,并将每个合格对象及其时空相似度st得分一起依次插入集合rrs;集合rrs中所有对象根据时空相似度st得分排序,直到获得得分较高的前k’个对象或其中一个why对象出现,k’为精炼查询结果的数量;
40.设k’为k’和why对象的排名r(w,q’)中的较小值,如果k’大于rw,计算精炼查询的
代价值cost(q,q'),然后如果代价值cost(q,q')小于变量pc,用代价值cost(q,q')更新变量pc。
41.上述技术方案中的一个具有如下有益效果:
42.本发明解决交通网络中基于时间感知空间关键字的why问题(whytskqt),通过设计高效混合索引akwq树来有效的合理组织对象的文本、时间和空间信息,以剪除大量不希望的对象和精炼查询,从而加快查询处理;另外,合理构造查询关键字集合和查询时间集,形成候选精炼查询,使需要检查的候选精炼查询数量尽可能少,以最小的代价高效地获得最佳精炼查询,从而将why对象从查询结果中排除,提高查询结果的可用性。
附图说明
43.图1为本发明实施例交通网络中提高时空关键字查询结果可用性的方法流程图;
44.图2为tskqt查询中道路网络划分效果示意图;
45.图3为道路网络的加权四叉树示意图;
46.图4为距离界限组件示意图;
47.图5为关键词列表及bloom过滤器示意图;
48.图6为子网格单元的文本和时间组件示意图。
具体实施方式
49.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
50.本发明提供一种交通网络中提高时空关键字查询结果可用性的方法,通过精炼查询方法回答交通网络中的tskqt查询的why问题(whytskqt)。解决此问题的一个简单方法是保留原始查询关键字和查询时间间隔,并收缩k值,直到所有why对象都不在精炼查询的结果集中,称为基本精炼查询qb。为了有效地回答whytskqt查询,需要合理组织对象的文本、时间和空间信息,以剪除大量无希望的对象和精炼查询,从而加快查询处理;还需要合理构造查询关键字集和查询时间集,形成候选精炼查询,使需要检查的候选精炼查询数量尽可能少,以最小的代价高效地获得最佳精炼查询。
51.如图1所示,为了实现上述目的,本实施例中的方法包括如下步骤:
52.s1、建立一个高效混合索引akwq树,包括使用加权四叉树将道路网络及其对象划分为多个网格单元,且每个网格单元在存储空间中的大小大致相等,为每个网格单元构造一个文本和时间部件。
53.s2、基于上述akwq树进行精炼查询,包括从原始结果对象中顺序提取新关键字添加到原始关键字集中,并从关键字集中删除why对象的关键字;通过why对象的时间间隔与查询时间间隔之间的关系,获得精炼查询的时间间隔,从而形成精炼查询;对各个精炼查询进行处理后得到最佳精炼查询。
54.本技术以最佳精炼查询的方式,将why对象从查询结果中排除,从而提高时空关键字查询结果的可用性。
55.首先,如表1所示,给出了交通网络中的时间感知空间关键字查询中常用的符号及其含义。
56.表1
57.符号含义o交通网络中的时空对象o.doc对象o的文本信息o.t[o.st,o.et]对象o的有效时间间隔,o.st:开始时间,o.et:结束时间q道路网中时间感知的空间关键字查询tesim(q,o)查询q和对象o之间的文本相似度dsim(q,o)查询q和对象o之间的空间邻近度tisim(q,o)查询q和对象o之间的时间相似度st(q,o)查询q与对象o的时空相似度cost(q,q0)精炼查询q’相对于q的修改代价r(q,o)查询q中对象o的排位rww中why对象的最低排位
[0058]
需要说明的是,交通网络中的时间感知空间关键字查询(tskqt)中,交通网络可以被建模为一个无向加权图g=(v,e),其中v表示道路网络中的结点集,e表示道路网络中的边集,结点v∈v表示道路网络中边的交点或路段的终点结点,g由一组有限的结点n和一组边e组成。边e(vi,vj,w)∈e是两个结点vi和vj(vi,vj∈n且i≠j)之间的路段,w是表示边e长度的非负权重。
[0059]
交通网络中的空间文本对象o定义为o=(o.loc,o.doc,o.ti),其中o.loc是位于交通网络边上的空间点的对象位置,o.doc是描述对象o的一组关键字,可以形式化定义为o.doc=(o.key1,o.key2,

,o.keyn)。系统中的每个关键字都根据出现的频率给出一个权重,并根据权重从大到小的顺序给出全局排名;o.ti是o的有效时间间隔,建模为o.t=[o.st,o.et],其中o.st是o的开始时间,o.et是o的结束时间。因此,对象o可以表示为:
[0060]
m={o.loc,o.doc,o.ti},其中o.ti=[o.st,o.et]。
[0061]
当且仅当q.doc和o.doc包含共同的关键字,即时,查询q和对象o为关键字匹配。
[0062]
当且仅当q.ti和o.ti之间存在交集,即查询q和对象o为时间匹配。可以使用表示关键字匹配,表示时间匹配。
[0063]
当且仅当查询q和对象o同时满足关键字匹配和时间匹配时,q和o就是综合匹配,即:
[0064][0065]
可以给出评分函数来衡量查询q和对象o之间的综合相似度,即:
[0066][0067]
其中,0≤α,β,γ≤1是查询偏好参数,分别用于度量空间邻近度、文本相似度和时间相似度的重要性,且α+β+γ=1。为了简化,本实施例假设这三个参数的值为1/3。对象o和查询q之间的空间邻近度定义为dsim(q.loc,o.loc)。由于sigmoid函数的值在小变量情况下变化迅速,这与用户满意度在短距离情况下通常对旅行距离更敏感的直觉一致。因此,使用sigmoid函数将空间邻近度标准化为范围[0,1]:
[0068][0069]
其中,ρ是距离调整参数,且0《ρ≤1;dn(q.loc,o.loc)是q.loc和o.loc之间的路网距离。
[0070]
对象o和查询q之间的文本相似度t
t
sim(q.doc,o.doc)可通过jaccard函数、语言模型和余弦相似度函数进行计算。使用查询q和对象o共有的关键字权重之和与查询q关键字权重之和的比率(类似于加权jaccard系数)来计算t
t
sim(q.doc,o.doc),如下面公式(3)。
[0071][0072]
其中,根据关键字在系统中的出现频率计算关键字t的权重,并根据权重的降序给出关键字的全局排名。
[0073]
查询q和对象o之间的时间相似度tisim(q.ti,o.ti),通过查询q的时间间隔和对象o的时间间隔之间的重叠率来度量,可计算如下:
[0074][0075]
根据上述公式(2),通过上述评分函数计算对象的评分,分数越高,对象的排名就越高。对象o的排名可从其得分中获得,具体如下所示:
[0076]
r(q,o)=|{o’∈o|st(q,o’)》st(q,o)}|+1
ꢀꢀꢀ
(5)
[0077]
给定一个对象集o,tskqt查询q=(q.loc,q.doc,q.ti,q.k)从o返回一个包含k个对象的集合rs,这样,和st(q,o)》st(q,o’)。
[0078]
可以了解的是,通过修改查询关键字集q.doc、查询时间间隔q.ti和结果对象数q.k,可以生成能排除why对象的许多精炼查询。具体的,使用一个成本函数来量化精炼查询相对于原始查询的修改程度,具体定义为δk、δdoc、δti和δcntn。其中,δk、δdoc、δti分别是q.k、q.doc和q.ti的修改,δcntn称为未对准度,这是对结果集中对象变化的度量。精炼查询q’对原始查询q的修改成本正式定义为:
[0079]
[0080]
其中,δ1、δ2和δ3分别表示用户修改q.k、q.doc和q.ti的偏好参数,δ4表示成本函数中未对准度的重要性。0≤δ1,δ2,δ3,δ4≤1,δ1+δ2+δ3+δ4=1。对于精炼查询q’,why对象的排名r(w,q’)=min
wi∈w
r(
wi
,q’),查询结果的数量k’=r(w,q’)-1,δk(k的修正值)=|min(0,k
’‑
k0)|,k0是原始查询的k值。一个基本的精炼查询qb是将k减少至r(w,q’)-1,同时保留原始查询的其他参数;对于通过修改查询参数而比此精炼查询代价更低的其他精炼查询,其δk不超过k
0-r(w,q)+1。通过对δk除以k
0-r(w,q)+11将δk规范化。δdoc是从q.doc调整到q’.doc’的已更改关键字的权重之和,δdoc用∑
t∈(q.doc∪w.doc)
t.w规范化。通过修改查询的开始时间和结束时间,可以从结果集中排除why对象,δti表示从q.ti到q’.ti的时间修改程度。请注意,修改开始时间和/或结束时间可能会导致原始查询时间间隔的长度发生变化,以及时间间隔的位置发生移动,因此δti可以表示如下:
[0081][0082]
其中,公式(7)的前半部分表示对时间区间的平移,后半部分表示对时间区间长度的修改,ξ∈[0,1],用于平衡时间区间的平移修改和时间区间长度修改的重要程度。δti
max
表示对时间的最大修改量,用来将δti规范到区间[0,1],
[0083][0084]
使用未对准度δcntn作为结果集中对象变化的度量,δcntn具体表示精炼查询结果集rs’中相对于原始查询结果集rs新添加的对象数,即,δcntn=|rs
’‑
rs|,使用原始查询的k0参数对其进行规范化。
[0085]
给定一个原始的时间感知空间关键字查询q=(q.loc,q.doc,q.ti,q.k)和一组意外的why对象w={w1,w2,

,wj},时间感知空间关键字查询上的why问题旨在返回一个根据公式(7)具有最小修改代价的精炼查询q’=(q’.loc,q’.doc,q’.ti,q’k’),这样任何对象wi∈w都可以从精炼查询q’的结果集中排除掉。
[0086]
上述实施例中,建立一个高效混合索引akwq树,可以有效地组织对象的文本、时间和空间信息,并且该索引结构同时支持网络距离剪枝、文本匹配和时间匹配。
[0087]
如图3至图6所示,akwq树包括四个主要组件,分别为交通网络的加权四叉树、距离界限组件、区分频繁关键字和非频繁关键字的bloom过滤器、以及加权四叉树每个结点的文本和时间组件。
[0088]
上述步骤s1中,加权四叉树是一种有效的空间划分方法,可将道路网络及其对象划分为多个网格单元。它有几个优点:1)每个网格单元的存储空间大小大致相同;2)加权四叉树的网格单元具有良好的局部保持能力,即地理上相邻的网格单元在其id上也是相邻
的;3)网格单元与其id之间存在一对一的关系。
[0089]
具体的,如图2所示,首先,将道路网络划分为多个不相交的区域。为了使每个区域包含关于道路网络及其对象的大致相等数量的信息,使用加权对象的数量(用n
wo
表示)来表示区域中结点、边和对象的总数。加权对象数量的具体定义是:
[0090][0091]
其中,no(nn,ne)是位于该区域内的对象(结点或边)的数量,因此so(sn,se)是用于维护对象(结点、边)信息的存储空间大小。
[0092]
其次,采用自适应划分方案将搜索空间划分为多个网格单元。如图3所示,使用加权四叉树的根结点来表示整个网络空间(即根结点网格单元)。如果当前网格单元中的加权对象数量n
wo
超过预定义阈值λ
wqt
,则根结点网格单元将被拆分为大小相等的四个网格单元00、01、10和11,网格单元将成为根结点的子结点。对于拆分后的网格单元,例如00,如果其中的加权对象的数量n
wo
大于预定义阈值λ
wqt
,则00再次被分为四个大小相等的网格单元0100、0101、0010和0011。对每个网格单元重复上述过程,直至每个网格单元的加权对象数量n
wo
不大于过预定义阈值λ
wqt
,不再进行拆分。
[0093]
通过上述划分方式,对于给定的网络,网格单元与其id之间存在一对一的关系,即,给定网格id,网格单元覆盖的区域可以容易地计算出来;并且,给定一个空间点,包含该点的网格单元的id也可以立即确定。此外,由于地理上相邻的网格单元在单元id上也是相邻的,因此得到的加权四叉树的网格单元具有良好的局部保持行为。
[0094]
例如图2中的道路网络,可以得到虚线所示的分区结构,包括每个网格单元的id。其中o为交通网络中的时空对象,对象o的时间信息是其有效时间间隔,形式为[o.st,o.et],其中o.st是o的开始时间,o.et是其结束时间。q为道路网中时间感知的空间关键字查询,以下简称为查询q。
[0095]
如图4所示,对于上述距离界限组件,考虑到两点之间的欧氏距离可以直接由其坐标值计算得出,为了利用网络距离削减网络空间,计算并保持每对网格单元之间的道路网络距离与欧式距离之比的上限和下限。对于每个网格单元对(ci,cj),定义了一对参数θ-和θ
+
,如式(9)和(10)所示:
[0096][0097][0098]
基于对象o和查询q的位置,它们之间的路网距离的下界和上界可以如下计算(假设o位于co,q位于cq)。
[0099][0100][0101]
上述实施例中,根据每个关键字的出现频率给出一个权重,并将权重从大到小的顺序进行全局排名,关键字根据出现频率分为频繁关键字和非频繁关键字,可以通过bloom过滤器区分频繁关键字和非频繁关键字。如图5所示,左边为关键词列表,右边为bloom过滤
器。
[0102]
bloom过滤器是b.h.bloom提出的一种有效的数据结构。bloom过滤器由m位二进制向量和k个相互独立的哈希函数hi组成,被记录为bf(m,k),可以快速确定元素是否属于集合w={w1,

,wn}。使用bloom过滤器bf(m,k)查找元素的流程如下:1)对要查询的元素分别执行上述k个哈希函数,得到对应于位数组上的k个位置;2)如果k个位置有一个为0,则一定不在集合中;如果k个位置全部为1,则可能在集合中。
[0103]
然而,bloom过滤器具有一定的误报率,即可能将那些不属于集合的元素判断为属于集合的。对于bf(m,k)和集合w={w1,

,wn},假阳性率为且当k等于(n/m)ln2时,误报率最低,等于
[0104]
如图6所示,上述为每个网格单元构造一个文本和时间组件,对于akwq树中每个网格单元ci,如果是非叶子网格单元(结点),则保留以下项目:
[0105]
(1)该非叶子网格单元的id。
[0106]
(2)该非叶子网格单元中的对象所包含的频繁关键字的bloom过滤器,可用于快速确定该非叶子网格单元中是否包含频繁关键字。请注意,对于频繁的关键字,考虑到每个非叶子网格单元中包含关键字的对象数量很大,为了节省空间和比较时间,使用bloom过滤器表示区域对象的关键字包含情况。
[0107]
(3)非频繁关键字的倒排列表(ilk)。因为包含非频繁关键字的单元格和对象数量相对较少,而且倒排文件占用的空间相对较小。此外,考虑到bloom过滤器具有一定的误报率,直接使用倒排文件以提高过滤效率,综合考虑了空间利用率和剪枝效果。
[0108]
(4)时间间隔的倒排列表(il
t
)。特别地,将一天划分为24小时间隔,对于每个小时间隔,记录该非叶子网格单元中包含在该时间段内开门营业的对象的孩子网格单元的列表。
[0109]
(5)指向该非叶子网格单元的孩子网格单元的条目。
[0110]
如果是叶子网格单元(结点),则保留以下三项:
[0111]
(1)该叶子网格单元的id。
[0112]
(2)该叶子网格单元中包含的所有关键字的倒排列表。
[0113]
(3)时间间隔的倒排列表(ilt)。特别地,记录每个小时间隔内开门营业的对象的列表。
[0114]
进一步的,提供一种基于akwq树的askqt查询处理方法的实施例。首先,引入几个引理以有效地修剪交通网络中不相关的交通网络空间和不合格的空间文本对象。
[0115]
引理1:给定一个tskqt查询q=(q.loc,q.doc,q.ti,q.k)和akwq树的一个网格单元ci,如果则该网格单元ci可以被安全的削减,其中ok是q当前的第k近邻,st(q,ok)是ok与q的综合相似度得分,α、β、以及γ是查询偏好参数,分别用于度量空间邻近度、文本相似度和时间相似度的重要性,ρ是距离调整参数。
[0116]
引理2:给定一个tskqt查询q=(q.loc,q.doc,q.ti,q.k)和akwq树的一个网格单
元ci,如果则该网格单元ci可以被安全的削减。其中,ci.il
t
.ti是ci.il
t
中具有非空时间倒排列表的时间间隔的并集,q.ti表示原始查询q的时间间隔,表示为空。
[0117]
引理3:给定一个tskqt查询q=(q.loc,q.doc,q.ti,q.k)和akwq树的一个网格单元ci,如果(频繁关键字(频繁关键字(非频繁关键字则该网格单元ci可以被安全的削减。
[0118]
上述三个引理的修剪强度相对有限,为了进一步消减不相关的网格单元,对于任何网格单元ci,计算st
ub
(q,ci),具体如下所示:
[0119]
为了计算dsim
ub
(q,ci),如果查询q不属于网格单元ci,使用查询q和网格单元ci边界之间的最短网络距离;否则dsim
ub
(q,ci)=0。
[0120]
为了计算t
t
sim
ub
(q,ci),将网格单元ci中存在的所有查询关键字的权重之和除以查询关键字的权重之和,即,对于非叶子结点网格单元,如果keyi是一个频繁关键字,则使用非叶子结点网格单元中的bloom过滤器进行判断;否则,倒排列表将起作用。对于叶子结点网格单元,则全部由倒排列表进行判断。
[0121]
为了计算tisim
ub
(q,ci),使用网格单元ci的有效时间间隔和查询q的时间间隔之间的重叠长度与q的时间间隔长度之比,即
[0122][0123]
最后有,st
ub
(q,ci)=α
·
dsim
ub
(q,ci)+β
·
t
t
sim
ub
(q,ci)+γ
·
tisim
ub
(q,ci)。
[0124]
引理4:给定一个tskqt查询q=(q.loc,q.doc,q.ti,q.k)和akwq树的一个网格单元ci,如果st
ub
(q,ci)《st(q,ok),则该网格单元ci可以被安全的削减。其中,ok是q的当前的第k近邻,st(q,ok)是ok与q的综合相似度得分,st
ub
(q,ci)是查询q和ci中任何对象o之间综合相似度得分的上界。
[0125]
在处理原始查询后,查询结果集中可能会出现一些用户意外的对象。通过修改查询关键字和查询时间来形成新的精炼查询,以便找到成本最低的精化查询,其结果集不包含任何why对象,同时尽可能保留原始查询结果对象。对于所研究的每一个精炼查询,上面的四个引理都被用来修剪大量的不合格对象。
[0126]
基于akwq树可以处理taskq查询中的why问题。可以通过算法1实现基于akwq树的why问题处理方法。
[0127]
算法1:
[0128]
[0129][0130]
算法1中,基于akwq树的算法的输入有:akwq树索引、原始查询q、why对象集w、基本精炼查询qb的代价值pb、qb的查询结果对象的数量km以及qb结果集中why对象的最低排名值rw,并输出最佳精炼查询q’。对于前面讨论过的基本精炼查询pb,通过使用上述公式6,其值等于cost(q,qb)。
[0131]
队列d、队列d’、结点tnode和集合rrs初始化为空,以分别保留合格的akwq树结点(单元格)、合格的akwq树的叶子结点、正在访问的akwq树结点以及满足精炼查询要求的对象。此外,变量pc(其初始值为pb)用于保持当前最佳精炼查询的成本值(算法1第4行)。
[0132]
考虑到添加与原始查询结果集无关的关键字可能会排除结果集中的非why对象,并添加更多的新结果对象,因此只考虑原始查询结果集中存在的关键字。上述步骤s2中,从原始结果对象中顺序提取新关键字添加到原始关键字集中,包括:
[0133]
将原始查询结果集中所有对象的关键字划分为sk
wr
和三个子集,表示仅由why对象包含但不由其他结果对象包含的关键字集,sk
wr
表示由why对象关键字集和其他结果对象包含的关键字集的交集,表示why对象不包含、而其他结果对象包含的关键字集;即,
[0134][0135]
sk
wr
=(∪
o∈q.result-w
o.doc)∩(∪o′
∈wo′
.doc)
[0136][0137]
然后,使用第一列表akl保存待添加的关键字,第一列表akl是中关键字的顺序列表,按照关键字权重降序排列。类似地,使用第二列表dkl保留要删除的关键字,第二列表dkl包括两部分,第一部分是中关键字的顺序列表,第二部分是sk
wr
中关键字的顺序列表,且均按照关键字权重降序排列。这两个列表是在查询处理之前建立的(算法1第5行),候选关键字的考察顺序对于以最小修改代价获得最佳精炼查询是非常重要的。
[0138]
对于精炼查询的时间间隔q’.ti,可以在以下四种情况下,通过修改原始查询时间间隔q.ti来获得合适的q’.ti。使用有序列表qtl来保存候选的查询时间间隔。
[0139]
case 1:当w.st《q.st《w.et《q.et时,查询时间间隔和why对象w的时间间隔之间的
重叠越少,查询和why对象之间的相似度越低,why对象被排除在查询结果集之外的可能性越大。因此,可以通过增加查询时间间隔的长度,或者减少查询时间与w的时间间隔相交的区间的长度(即,增加查询开始时间),来减少why对象的时间间隔与查询时间间隔之间的重叠率,其中q.st为查询开始时间,q.et为查询结束时间,w.st表示why对象的起始时间,如果有多个why对象,取其最小值;w.et表示why对象的结束时间,如果有多个why对象,取其最大值。
[0140]
考虑到用户希望尽可能地最小化查询修改,这里采用固定查询时间长度(即q.et-q.st),并同步增大查询开始时间q.st和结束时间q.et的方法。当查询开始时间q.st接近w.et移动时,查询时间和why对象的时间间隔之间的重叠率降低。因此,在case 1中,查询开始时间的取值范围为(q.st,w.et],查询结束时间同步变化。为了便于q.st的枚举,采用0.5h作为q.st值增长的步长,从而得到一个有序的查询时间列表,即qtl={[q.st,q.et],[q.st+0.5,q.et+0.5],[q.st+1,q.et+1],

,[q.st+(w.et-q.st),q.et+(w.et-q.st)}。
[0141]
case 2:当w.st《q.st且w.et》q.et时,即q.ti∈w.ti。如果采用减少|q.ti|的方法,不仅不会增加why对象的排名,而且还会使得δt》0,增加了查询修改成本。注意,|q.ti|是q.ti的长度。如果|q.ti|增加,它将增加查询处理所需检索的对象数量;由于q.ti包含在w.ti内,因此q.ti的增长对why对象的相似度的影响不会比对非why结果对象的影响更大,因而不会增加why对象的排名。
[0142]
综上,减少|q.ti|或增加|q.ti|不会得到最优的精炼查询q’,因此,查询时间保持不变,并固定为原始查询时间;此时,qtl只包含一个元素,即原始查询时间q.ti。
[0143]
case 3:当q.st《w.st《q.et《w.et时,与case 1类似,但处理方法与case 1正好相反。也就是说,固定查询时间长度,并同步减少查询结束时间q.et和查询开始时间q.st;查询结束时间的取值范围为(q.et,w.st],且查询开始时间同步变化。这样就可以得到一个有序的查询时间列表,即qtl={[q.st,q.et],[q.st-0.5,q.et-0.5],[q.st-1,q.et-1],

,[q.st-(q.et-w.st),q.et-(q.et-w.st)}。
[0144]
case 4:当q.st《w.st且q.et》w.et时,即w.ti∈q.ti。如果采用减少|q.ti|的方法,w.ti和q.ti之间的重叠率将变得更高,这不利于提高why对象的排名;虽然增加|q.ti|会降低w.ti和q.ti之间的重叠率,但也会降低q.ti和非why对象的时间间隔之间的重叠率,因此不一定会增加why对象的排名;q.ti的增加将产生时间修改成本,即,使得δti》0。此外,增加|q.ti|将增加查询处理所需检索的对象数量,并增加精炼查询的处理代价。因此,减少|q.ti|或增加|q.ti|不会得到最优的精炼查询,因此其处理方法与case2相同,并获得查询时间列表qtl(算法1第6行)。
[0145]
精炼查询q’的关键字集q’.doc被设置为q.doc0(算法1第6行)。第一列表akl中的关键字被有序的取出并添加到精炼查询的关键字集q’.doc中,并且第二列表dkl中的关键字被有序的取出、并从精炼查询的关键字集q’.doc中取出并删除,然后依次取出查询时间列表qtl中的查询时间间隔,从而形成新的精炼查询,这些精炼查询进行处理后得到最佳精炼查询,直至第一列表akl、第二列表dkl和查询时间列表qtl全部为空。
[0146]
算法1第9-30行给出了每个精炼查询q’的处理步骤。首先,通过修改参数得到精炼查询q’。特别地,第一列表akl中的第一个关键字被取出并添加到精炼查询的关键字集q'.doc中,并且第二列表dkl中的第一个关键字被取出并从精炼查询的关键字集q'.doc中删
除(第9行)。查询时间列表qtl中的第一个元素被取出作为精炼查询q’的查询时间,即q’.ti,并且k’被设置为k0(第10-11行)。这里,函数dequeue(akl)获取并返回其第一个元素,其他两个函数的功能类似于dequeue(akl)。然后,q’的代价值cost(q,q')可以根据上述公式(6)计算得出,以便尽早过滤掉成本高于pc的精炼查询。如果精炼查询的代价值cost(q,q')小于变量pc,通过将akwq树的根推入队列d来启动每个精炼查询q’的处理进程(第14行)。
[0147]
当队列d不为空时,其元素按照如下顺序处理:
[0148]
1)、弹出队列d的头元素(结点),并由tnode指向头结点(第16行)。
[0149]
2)、如果tnode所指的结点满足:其到精炼查询的最小网络距离不超过规定的上限值时(即引理1规定的上限值),并且结点tnode(即tnode所指的结点)的时间间隔与查询时间间隔相交,即(第17行),则继续进行如下步骤:
[0150]
步骤a:如果结点tnode是非叶子结点、且结点tnode包含任何精炼查询q’的查询关键字、且结点tnode关于精炼查询的查询关键字q’的时空相似度st得分上界不小于ok的st得分值,将结点tnode的每个合格子结点ns连同其时空相似度st得分上界依次插入队列d中(第18-20行)。
[0151]
步骤b:如果结点tnode是叶子结点、且结点tnode包含任何精炼查询q’的查询关键字、且结点tnode关于精炼查询q’的查询关键字的时空相似度st得分上界不小于ok的st得分值,计算结点tnode的每个合格对象o的时空相似度st得分,并将每个合格对象o及其时空相似度st得分一起依次插入集合rrs,同时,st(q’,ok)的值也相应地更新(第22-25行)。
[0152]
集合rrs中所有对象根据时空相似度st得分进行排序,并可获得得分较高的前k’个对象,直到获得得分较高的前k’个对象或其中一个why对象出现(第26行),k’为精炼查询结果的数量。设k’为k’和why对象的排名r(w,q’)中的较小值,如果k’大于rw,计算精炼查询的代价值cost(q,q'),然后如果代价值cost(q,q')小于变量pc,用代价值cost(q,q')更新变量pc(第27-30行)。在处理这些合格的精炼查询后,可以获得最佳的精炼查询。
[0153]
上述基于akwq树的算法根据修改代价影响的递增顺序枚举可能的候选关键字集和查询时间间隔集,以形成候选精炼查询,然后执行每个候选精炼查询,确定返回的查询结果集中是否排除了所有why对象。虽然上述算法仅枚举对查询结果有积极影响的关键字集和查询时间间隔,并根据修改代价值过滤产生的精炼查询,形成候选精炼查询,并且在每个候选精炼查询处理中采用多种剪枝技术以加快查询的处理,它仍然有进一步优化的可能性。下面给出了三种优化策略。
[0154]
第一种,时间间隔的有效划分。
[0155]
考虑到人们总是在白天外出工作,而晚上的活动要少得多,大多数为人们服务的场所(兴趣点,poi)在白天开放,而在午夜之后则较少开放。因此,在建立时间倒排表时,我们将时间域划分为m个白天时间段以保留对象的时间信息,并为午夜设置更长的时间段。例如,从6:00到24:00的时间设为18个时间段,从24:00到6:00的时间设为一个较长的时间段。
[0156]
第二种,候选精炼查询的提前终止策略1。
[0157]
对于精炼查询q’=(q’.loc,q’.doc,q’.ti,q’.k’),如果它是最佳精炼查询,根据等式(6),有:
[0158][0159]
因此,δk’《δk,即,r(q’,w)》r(q,w)(13)。
[0160]
因此,在执行精炼查询q’的过程中,如果why对象的排名不符合公式13,则精炼查询q’的处理可以立即结束,并且可以安全地排除精炼查询q’。
[0161]
第三种,候选精炼查询的提前终止策略2。
[0162]
在精炼查询q’的处理过程中,如果当前检索到的结果对象数达到k0,而why对象没有出现,则精炼查询q’的处理也可以立即结束。如果k’=k0,则δk=0,此时精炼查询q’的代价最小,其值为代价函数后三项之和,即:
[0163][0164]
基于上述优化策略,可以修改算法1对基于akwq树的算法进行优化,具体将第23-25行修改如下所示:
[0165][0166]
以上仅为本发明的实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均包含在申请待批的本发明的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1