1.一种基于语义轨迹大数据的反向最近邻查询方法,其特征在于,包括:根据轨迹数据集建立轨迹索引IMC树,其中,所述IMC树包括倒排列表与多个MC树,所述倒排列表用于存储关键字词汇表,所述关键字词汇表根据轨迹数据集中各轨迹包括的关键字生成,每个MC树与所述关键字词汇表中的每个关键字一一对应建立,所述MC树包括用于存储轨迹局部位置的轨迹摘要;
根据查询数据集建立查询索引WIBR树;
通过对IMC树与WIBR树进行交替访问,并且在访问过程中根据IMC树中的节点与WIBR树中的节点之间的距离边界,对IMC树中的节点与WIBR树中的节点进行修剪,确定查询q的查询结果rnnk(q),所述查询结果为所述IMC树中将查询q作为最近邻查询的最小相关子轨迹;
所述通过对IMC树与WIBR树进行交替访问,并且在访问过程中根据IMC树中的节点与WIBR树中的节点之间的距离边界,对IMC树中的节点与WIBR树中的节点进行修剪,确定查询q的查询结果rnnk(q),所述查询结果为所述IMC树中将查询q作为最近邻查询的最小相关子轨迹,包括:
将查询q中的每个关键字对应的MC树的根节点插入到队列集SET中,队列集SET的各队列与各MC树一一对应,每个队列包括对应的MC树中的访问节点;
判断各MC树的根节点的轨迹签名摘要的交集是否为空:若不为空,则将队列集SET中各队列的队头构成IMC树节点集合ET,并确定IMC树节点集合ET中每个队头与查询q的最小相关距离,将最小相关距离最小的队头作为当前访问节点进行访问,为当前访问节点建立用于存储k个候选最近邻查询的查询排序列表candk;
若当前访问节点为内部节点,则以最小最佳原则访问WIBR树,根据当前访问节点与查询q之间的最小相关距离、当前访问节点与WIBR树访问节点之间的最小相关距离和查询排序列表,对当前访问节点进行修剪并更新当前访问节点的查询排序列表candk:若当前访问节点被修剪,则根据当前访问节点与查询q之间的最小相关距离以及当前访问节点所在队列中的其他节点与WIBR树访问节点之间的最大相关距离,修剪当前访问节点所在队列中的其他节点;若当前访问节点未被修剪,则访问当前访问节点的每个孩子节点,并根据每个孩子节点的轨迹签名摘要对每个孩子节点进行修剪;若当前访问节点的孩子节点未被修剪,则将当前访问节点的查询排序列表candk复制给孩子节点,并根据孩子节点分别与k个候选查询之间的最大相关距离更新查询排序列表candk中存储的最大相关距离,将孩子节点加入队列集SET中当前访问节点所在的队列中;
若当前访问节点为叶节点,则确定当前访问节点中的每个轨迹t与查询q之间的相关距离cdt,q:若轨迹t与查询q之间的相关距离cdt,q 大于当前访问节点的查询排序列表candk中的最大相关距离,则轨迹t被修剪;若轨迹t与查询q之间的相关距离cdt,q 小于等于当前访问节点的查询排序列candk中的最大相关距离,则根据所述相关距离cdt,q更新查询排序列表candk的最大相关距离,并将轨迹t与更新后的查询排序列表candk加入队列集SET中当前访问节点所在队列中;
若当前访问节点为一条具体的轨迹t,则以最小最佳原则访问WIBR树,更新所述查询结果rnnk(q);
按照最小相关距离的升序依次将IMC树节点集合ET中的其他队头作为当前访问节点进行访问;每个队列的队头访问结束后将排在队列第二位的访问节点填充入队头,以此类推,直至将队列集SET中的各访问节点访问完毕。
2.根据权利要求1所述的基于语义轨迹大数据的反向最近邻查询方法,其特征在于,所述MC树的内部节点与叶节点均包括轨迹摘要,所述轨迹摘要包括:轨迹签名摘要sig与轨迹局部位置摘要skt;
轨迹签名摘要sig,为位向量,第i位表示该MC树节点的子树是否包含轨迹数据集中编号为i的轨迹;
轨迹局部位置摘要skt,为轨迹签名摘要sig指向的各轨迹中包括该MC树对应的关键字的各空间文本点的位置编码。
3.根据权利要求1所述的基于语义轨迹大数据的反向最近邻查询方法,其特征在于,所述根据当前访问节点与查询q之间的最小相关距离、当前访问节点与WIBR树访问节点之间的最小相关距离和查询排序列表,对当前访问节点进行修剪并更新当前访问节点的查询排序列表candk,包括:
若当前访问节点与查询q的最小相关距离大于当前访问节点的查询排序列表candk中的最大相关距离,则将当前访问节点进行修剪;
若当前访问节点与查询q的最小相关距离小于等于当前访问节点的查询排序列表candk中最大相关距离,则将WIBR的根节点插入查询队列QueQ;
根据当前访问节点与WIBR树访问节点之间的最大相关距离、当前访问节点与查询q之间的最小相关距离以及当前访问节点与查询q之间的最大相关距离,对当前访问节点进行修剪并返回当前访问节点的状态,所述状态包括被修剪或被访问;
若当前访问节点未被确认为被修剪或被访问,则比较ET.candk中第k项的最大相关距离MAXcd与QueQ的第一项的最小相关距离MINcd,若前者小于后者,则退出WIBR访问,若前者大于等于后者,则将WIBR树访问节点EQ的孩子节点插入队列QueQ或通过WIBR树访问节点EQ下的具体查询对当前访问节点的查询排序列表candk进行更新。
4.根据权利要求3所述的基于语义轨迹大数据的反向最近邻查询方法,其特征在于,所述根据当前访问节点与WIBR树访问节点之间的最大相关距离、当前访问节点与查询q之间的最小相关距离以及当前访问节点与查询q之间的最大相关距离,对当前访问节点进行修剪并返回当前访问节点的状态,包括:
若查询队列QueQ中存在至少一个查询节点EQ与当前访问节点ET的最大相关距离小于当前访问节点与查询q的最小相关距离,并且所述查询节点EQ包括多于k个具体查询,则将当前访问节点修剪;
确定查询队列QueQ中节点EQ与当前访问节点的最小最大相关距离小于当前访问节点与查询q的最小相关距离的节点的第一数量num1以及查询排序列表ET.candk中各候选查询的最大相关距离小于当前访问节点与查询q的最小相关距离的查询的第二数量num2,若所述第一数量num1与所述第二数量num2的总和大于k,则将当前访问节点修剪;
确定查询队列QueQ中查询节点与当前访问节点的最小相关距离大于当前访问节点与查询q的之间的最大相关距离MAXcdET_q的节点的第三数量,若所述第三数量小于k,则将当前访问节点视为被访问。
5.根据权利要求1所述的基于语义轨迹大数据的反向最近邻查询方法,其特征在于,所述确定当前访问节点中的每个轨迹t与查询q之间的相关距离cdt,q,包括:为每一个轨迹t创建相应的关键字‑位置倒排文件;其中,所述关键字‑位置倒排文件中的每个元素均包含一个关键字和一个已排序的位置列表,所述位置列表包括轨迹上包含该关键字的位置;
通过与查询q关键字相等数量的指针记录当前检查的位置,各指针分别指向的位置中,最小位置为查询q的第一相关子轨迹的开始位置,最大位置为查询q的第一相关子轨迹的结束位置,确定所述第一相关子轨迹与查询q之间的第一相关距离作为所述相关距离cdt,q;
指向最小位置的指针移动到下一个不小于当前最大位置的位置,则当前各指针分别指向的位置中,最小位置为查询q的第二相关子轨迹的开始位置,最大位置为查询q的第二相关子轨迹的结束位置,计算所述第二相关子轨迹与查询q之间的第二相关距离,将所述第二相关距离与所述相关距离cdt,q进行比较,若所述第二相关距离小于所述相关距离cdt,q,则将所述第二相关距离作为所述相关距离cdt,q;以此类推,直至各指针中任一指针指向位置列表的末尾。
6.根据权利要求1所述的基于语义轨迹大数据的反向最近邻查询方法,其特征在于,所述轨迹摘要包括:轨迹签名摘要sig与轨迹局部位置摘要skt;所述轨迹签名摘要sig,为位向量,第i位表示该MC树节点的子树是否包含轨迹数据集中编号为i的轨迹;所述轨迹局部位置摘要skt为轨迹签名摘要sig指向的各轨迹中包括该MC树对应的关键字的各空间文本点的位置编码;
所述确定IMC树节点集合ET中每个队头与查询q的最小相关距离,包括:将节点集合ET中每个队头与查询q之间的最小相关距离进行加和,得到第一距离总和SumD;
在队列集SET的每一个队头的位置摘要skt上以查询q为中心以所述第一距离总和SumD为半径的搜索区域内进行搜索,获取所述搜索区域内各位置编码对应的各空间文本点的关键字数量#n以及各空间文本点与查询q之间的距离d;
选取两个空间文本点,将所述两个空间文本点的关键字数量#n进行加和得到数量总和N,若数量总和N小于查询q的关键字数量,则选取另一空间文本点,将另一空间文本点的关键字数量与数量总和进行相加得到新的数量总和N,直至数量总和N大于等于查询q的关键字数量,则将选取的各空间文本点与查询q之间的距离d进行求和得到第二距离总和newD;
若第二距离总和newD大于每个队头与查询q的最小相关距离MINcdET_q,则将每个队头与查询q的最小相关距离MINcdET_q更新为第二距离总和newD。
7.一种基于语义轨迹大数据的反向最近邻查询装置,其特征在于,包括:轨迹索引建立模块,用于根据轨迹数据集建立轨迹索引IMC树,其中,所述IMC树包括倒排列表与多个MC树,所述倒排列表用于存储关键字词汇表,所述关键字词汇表根据轨迹数据集中各轨迹包括的关键字生成,每个MC树与所述关键字词汇表中的每个关键字一一对应建立,所述MC树包括用于存储轨迹局部位置的轨迹摘要;
查询索引建立模块,用于根据查询数据集建立查询索引WIBR树;
处理模块,用于通过对IMC树与WIBR树进行交替访问,并且在访问过程中根据IMC树中的节点与WIBR树中的节点之间的距离边界,对IMC树中的节点与WIBR树中的节点进行修剪,确定查询q的查询结果rnnk(q),所述查询结果为所述IMC树中将查询q作为最近邻查询的最小相关子轨迹;
所述处理模块具体用于:
将查询q中的每个关键字对应的MC树的根节点插入到队列集SET中,队列集SET的各队列与各MC树一一对应,每个队列包括对应的MC树中的访问节点;
判断各MC树的根节点的轨迹签名摘要的交集是否为空:若不为空,则将队列集SET中各队列的队头构成IMC树节点集合ET,并确定IMC树节点集合ET中每个队头与查询q的最小相关距离,将最小相关距离最小的队头作为当前访问节点进行访问,为当前访问节点建立用于存储k个候选最近邻查询的查询排序列表candk;
若当前访问节点为内部节点,则以最小最佳原则访问WIBR树,根据当前访问节点与查询q之间的最小相关距离、当前访问节点与WIBR树访问节点之间的最小相关距离和查询排序列表,对当前访问节点进行修剪并更新当前访问节点的查询排序列表candk:若当前访问节点被修剪,则根据当前访问节点与查询q之间的最小相关距离以及当前访问节点所在队列中的其他节点与WIBR树访问节点之间的最大相关距离,修剪当前访问节点所在队列中的其他节点;若当前访问节点未被修剪,则访问当前访问节点的每个孩子节点,并根据每个孩子节点的轨迹签名摘要对每个孩子节点进行修剪;若当前访问节点的孩子节点未被修剪,则将当前访问节点的查询排序列表candk复制给孩子节点,并根据孩子节点分别与k个候选查询之间的最大相关距离更新查询排序列表candk中存储的最大相关距离,将孩子节点加入队列集SET中当前访问节点所在的队列中;
若当前访问节点为叶节点,则确定当前访问节点中的每个轨迹t与查询q之间的相关距离cdt,q:若轨迹t与查询q之间的相关距离cdt,q 大于当前访问节点的查询排序列表candk中的最大相关距离,则轨迹t被修剪;若轨迹t与查询q之间的相关距离cdt,q 小于等于当前访问节点的查询排序列candk中的最大相关距离,则根据所述相关距离cdt,q更新查询排序列表candk的最大相关距离,并将轨迹t与更新后的查询排序列表candk加入队列集SET中当前访问节点所在队列中;
若当前访问节点为一条具体的轨迹t,则以最小最佳原则访问WIBR树,更新所述查询结果rnnk(q);
按照最小相关距离的升序依次将IMC树节点集合ET中的其他队头作为当前访问节点进行访问;每个队列的队头访问结束后将排在队列第二位的访问节点填充入队头,以此类推,直至将队列集SET中的各访问节点访问完毕。
8.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的基于语义轨迹大数据的反向最近邻查询方法的步骤。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的基于语义轨迹大数据的反向最近邻查询方法的步骤。