CN108846013A - 一种基于geohash与Patricia Trie的空间关键词查询方法及装置 - Google Patents

一种基于geohash与Patricia Trie的空间关键词查询方法及装置 Download PDF

Info

Publication number
CN108846013A
CN108846013A CN201810419803.9A CN201810419803A CN108846013A CN 108846013 A CN108846013 A CN 108846013A CN 201810419803 A CN201810419803 A CN 201810419803A CN 108846013 A CN108846013 A CN 108846013A
Authority
CN
China
Prior art keywords
geohash
longitude
latitude
keyword
geostr
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810419803.9A
Other languages
English (en)
Other versions
CN108846013B (zh
Inventor
沈兵林
贾连印
李孟娟
李晓武
丁家满
左喻灏
胡俊涛
雷妍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kunming University of Science and Technology
Original Assignee
Kunming University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kunming University of Science and Technology filed Critical Kunming University of Science and Technology
Priority to CN201810419803.9A priority Critical patent/CN108846013B/zh
Publication of CN108846013A publication Critical patent/CN108846013A/zh
Application granted granted Critical
Publication of CN108846013B publication Critical patent/CN108846013B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及一种基于geohash与Patricia Trie的空间关键词查询方法及装置,本发明方法包括:数据预处理步骤,通过geohash空间编码方法将数据集D中所有位置点编码成长度为n的字符串geoStr,以geoStr为排序对象按字典序对数据集D中的每行数据排序并生成编号id;空间关键词索引建立步骤,对geoStr构建Patricia Trie,Patricia Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的字符串;空间关键词查询步骤,检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。本发明可高效支持任意空间范围的关键词查询。

Description

一种基于geohash与Patricia Trie的空间关键词查询方法及 装置
技术领域
本发明涉及一种基于geohash与Patricia Trie的空间关键词查询方法及装置,属于空间关键词查询(Spatial Keyword query)领域、基于位置的服务(Location-BasedService,LBS)等领域。
背景技术
近年来,随着GPS移动设备的普及、社交网络的发展,产生了大量基于位置的服务,如:社交服务(微信、陌陌、Twitter、Foursquare等)、食住服务(携程、去哪儿、美团外卖等)、导航服务(高德地图、腾讯地图、Google地图等)、娱乐服务(全城热斗、Wikitude等)。这些服务产生了大量具有位置属性的数据,即空间文本,如何从这些数据中快速获取所需信息是空间文本查询领域的核心问题。根据应用场景,空间文本查询可分为空间关键词查询与分发/订阅查询。
高效支持空间关键词查询则需高效的空间文本索引结构。目前,国内外对空间文本索引结构进行了广泛而又深入的研究,这些索引结构通常组合空间索引结构与文本索引结构。根据所采用的空间索引结构的不同,可将其分为:基于R-Tree及其变体、grid/Quad-Tree、space-filling curve的空间文本索引;根据所采用的文本索引结构,可将其分为:基于倒排列表与签名文件的空间文本索引。空间索引与文本索引的组合方式分为:独立组合、松散组合、紧凑组合。据空间文本查询领域国内外研究现状可知,R-Tree及其变体与倒排索引组合的索引结构是主流的空间文本索引结构。R-Tree的变体以面积最小原则、重叠区域最小原则、周长最小原则和存储利用率较高原则为导向对R-Tree进行优化,但检索效率仍受R-Tree多路径查询问题的制约。
发明内容
为高效支持任意空间范围的关键词查询,本发明提供了一种基于geohash与Patricia Trie的空间关键词查询方法及装置。
本发明的技术方案是:一种基于geohash与Patricia Trie的空间关键词查询方法,包括:
数据预处理步骤,通过geohash空间编码方法将数据集D中所有位置点编码成长度为n的字符串geoStr,以geoStr为排序对象按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间关键词索引建立步骤,对geoStr构建Patricia Trie,Patricia Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的字符串;
空间关键词查询步骤,检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将数据集D中的位置点编码成长度为n的字符串geoStr;其中,位置点由纬度、经度数据构成;geoStr即geohash编码,表示geohash精度表中n对应的范围区域;
步骤120:以geoStr为排序对象按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,R中每行数据r由id、纬度lat、经度lon、字符串geoStr、关键词集items组成,items至少包含一个关键词item。
所述空间关键词索引建立步骤,具体为:
步骤210:对Rstr构建Patricia Trie,每个geoStr可映射为Patricia Trie中一条从根到叶节点的路径,Patricia Trie叶节点指向根据该域内关键词构建的倒排索引,PatriciaTrie的所有叶节点通过指针连接,Patricia Trie内部节点存储以该节点为根结点的Patricia Trie子树的叶节点个数;其中,Rstr表示R中所有geoStr且保持其顺序性;该域指从根节点到叶节点所构成的字符串geoStri
步骤220:对Ritems中每个独立元素item,构建一个由包含item的rpart.id组成的倒排列表;其中,rpart表示R中包含geoStri的r.id、r.items,r.id表示r的id,r.items表示r的关键词集,Rpart表示由一至多行rpart组成的数据集;Ritems表示Rpart中全部关键词,rpart.id表示rpart的id。
所述空间关键词查询步骤,具体包括如下步骤:
步骤310:给定查询位置点q、查询距离范围d、查询关键词集qitems,根据geohash精度表选定与d相对应的geohash编码长度p,通过geohash空间编码方法将位置点q编码为p位长度的字符串qs,获取字符串qs周围8个区域的geohash编码,并将字符串qs及其周围8个区域的geohash编码分别作为查询域,共9个查询域;其中,p对应的距离误差不小于d且为最小值;qitems至少由一个关键词item构成;
步骤320:检索空间关键词索引结构返回满足查询条件的id;其中,查询条件指查询域内包含全部qitems的id;
步骤330:根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围,根据经纬度范围对与步骤320返回的id相对应的位置点进行筛选,最终得到id候选集;
步骤340:计算候选集中id对应的位置点到q的距离dq:若dq≤d,则返回该位置点,否则,不返回。
所述步骤110,包括下列步骤111、112:
步骤111:根据geohash精度表确定geohash编码长度n;
步骤112:通过geohash空间编码方法将所有位置点编码成长度为n的字符串。
通过geohash空间编码方法将位置点编码成字符串,具体为:首先,将经纬度范围看作二维平面坐标系;然后,采用二分法对经度/纬度进行划分,根据位置点经度/纬度在划分结果中的位置分别赋值0或1,直到划分次数满足对应的经/纬度位串的位数;之后,通过位交错方法合并经度位串与纬度位串;最后,通过Base32编码将经纬度位串编码为相应长度的字符串。
所述步骤310中,获取qs周围8个区域的geohash编码的方法:根据qs的经纬度位串,东/西方向的区域编码:经度位串不变,纬度位串加/减1,通过位交错方法得到该区域的经纬度位串;南/北方向的区域编码:纬度位串不变,经度位串减/加1,通过位交错方法得到该区域的经纬度位串;东北/西南方向的区域编码,经纬度位串均加/减1,通过位交错方法得到该区域的经纬度位串;东南方向的区域编码:纬度位串加1,经度位串减1,通过位交错方法得到该区域的经纬度位串;西北方向的区域编码:纬度位串减1,经度位串加1,通过位交错方法得到该区域的经纬度位串;之后,通过Base32编码将以上8个位串进行编码即可获得qs周围8个区域的geohash编码。
所述步骤320具体为:
步骤321:以任一查询域为例,若p等于n,通过检索Patricia Trie即可选取待检索的倒排列表;反之,若p不等于n,判断根据查询域检索Patricia Trie到达的内部节点,若该节点为叶节点,则直接选取待检索的倒排列表,反之,采用深度优先方法遍历以该节点为根结点的Patricia Trie子树至首次检索到叶节点为止,以当前叶节点为起始位置沿指针链方向获取相应数目的叶节点,分别选取每个叶节点指向的倒排列表;其中,查询域指geohash编码,相应数目指内部节点存储的叶节点个数;
步骤322:检索步骤321选取的倒排列表,分别获取包含查询关键词的id列表,并求交集,即为该域内满足查询条件的id;
据上述方法,分别获取每个查询域内满足查询条件的id,之后求并集,即为9个查询域内满足查询条件的id。
所述步骤330中,根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围方法如下:纬度的最大值maxLat = lat + range,纬度的最小值minLat = lat - range;经度的最大值 maxLng = lon + lngR,经度的最小值minLng = lon - lngR;其中,lat表示查询位置点q的纬度值,lon 表示查询位置点q的经度值,range =180 / π * d /6372.797,lngR = range / cos(lat *π/ 180.0)。
一种基于geohash与Patricia Trie的空间关键词查询装置,包括:
数据预处理装置,用于通过geohash空间编码方法将数据集D中所有位置点编码成长度为n的字符串geoStr,以geoStr为排序对象按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间关键词索引建立装置,用于对geoStr构建Patricia Trie,Patricia Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的字符串;
空间关键词查询步骤装置,用于检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
本发明的有益效果是:本发明可高效支持任意空间范围的关键词查询;通过空间关键词索引结构可高效支持美团外卖等LBS提供的附近兴趣点(餐饮店、甜品店等)查询功能,且存储空间开销较低;避免R-Tree的多路径查询问题;无缝融合分布式并行计算框架。
附图说明
图1是基于geohash与Patricia Trie的空间关键词查询功能模块图;
图2是geohash精度表;
图3是Base32编码规则图(注:(+ / -)表示加减);
图4是位置点转换为字符串图;
图5是数据集排序图(标识唯一);
图6是Patricia Trie与关键词倒排组合的索引结构图。
具体实施方式
实施例1:如图1-图6所示,一种基于geohash与Patricia Trie的空间关键词查询方法,包括:
数据预处理步骤,通过geohash空间编码方法将数据集D中所有位置点编码成长度为n的字符串geoStr,以geoStr为排序对象按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间关键词索引建立步骤,对geoStr构建Patricia Trie,Patricia Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的字符串;
空间关键词查询步骤,检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
进一步地,可以设置所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将D中的位置点编码成长度为n的字符串geoStr;其中,位置点由纬度、经度数据构成;geoStr即geohash编码,表示geohash精度表中n对应的范围区域;进一步地,可以设置所述步骤110,包括下列步骤111、112:
步骤111、根据geohash精度表(如图2所示),将geohash编码长度n设置为8,则经纬度位串分别为20位;
步骤112、通过geohash空间编码方法将R中的位置点转换成长度为8的字符串,如图4所示,实现方法如下:
示例:(19.596412 -99.219501)
首先将纬度范围(-90,90)平分成(-90,0)、(0,90)两个区间,如果目标纬度位于前一个区间,则编码为0,否则编码为1。因19.596412属于区间(0,90),所以编码为1;然后再将(0,90)分成(0,45)、(45,90)两个区间,因19.596412属于区间(0,45),所以编码为0;以此类推,直至位串长度为20。最终19.596412的编码为10011011110111101101。
经度也采取同样的方法,对范围(-180,180)依次细分至位串长度为20。最终-99.219501的编码为00111001011100011010。
接下来将经纬度位串进行合并,奇数位为纬度,偶数位为经度,得到编码0100101111000111011110110101011011011001。
最后,通过Base32编码(如图3所示)得到(19.5964412 -99.219501)的geohash编码为9g3rqpqt。
步骤120:以geoStr为排序对象按字典序对D中每行数据排序并生成编号id,如图5所示;其中,R中每行数据r由id、纬度(lat)、经度(lon)、字符串(geoStr)、关键词集(items)组成,items至少包含一个item。
进一步地,可以设置所述空间关键词索引建立步骤,具体为:
步骤210:对Rstr构建Patricia Trie,每个geoStr可映射为Patricia Trie中一条从根到叶节点的路径,Patricia Trie叶节点指向根据该域内关键词构建的倒排索引,PatriciaTrie的所有叶节点通过指针连接,Patricia Trie内部节点存储以该节点为根结点的Patricia Trie子树的叶节点个数;其中,Rstr表示R中所有geoStr且保持其顺序性;该域指从根节点到叶节点所构成的字符串geoStri,i表示第i个字符串geoStr;
步骤220:对Ritems中每个独立元素item,构建一个由包含item的rpart.id组成的倒排列表;其中,rpart表示R中包含geoStri的r.id、r.items,r.id表示r的id,r.items表示r的关键词集,Rpart表示由一至多行rpart组成的数据集;Ritems表示Rpart中全部关键词,rpart.id表示rpart的id;
根据步骤210、220构建的Patricia Trie与关键词倒排组合的索引结构略图,如图6所示,Patricia Trie中仅给出以“9g3r”为前缀的分支,分别给出字符串9g3rmy55、9g3rqpmz、9g3rqpn1所示域内关键词的倒排列表。
进一步地,可以设置所述空间关键词查询步骤,具体包括如下步骤:
步骤310:给定查询位置点q、查询距离范围d、查询关键词集qitems,根据geohash精度表选定与d相对应的geohash编码长度p,通过geohash空间编码方法将位置点q编码为p位长度的字符串qs,获取字符串qs周围8个区域的geohash编码,并将字符串qs及其周围8个区域的geohash编码分别作为查询域,共9个查询域;其中,p对应的距离误差不小于d且为最小值;qitems至少由一个item构成;进一步地,可以设置所述步骤310,具体包括步骤311、步骤312:
步骤311:给定查询位置点(19.596412 -99.219501)、查询距离范围500米、查询关键词{historicalSite,garden},需p对应的距离误差不小于500米且为最小值,则p值应设置为6,通过geohash算法将(19.596412 -99.219501)编码为6位长度的字符串9g3rqp;
步骤312、获取9g3rqp周围8个区域的geohash编码,并将9g3rqp及其周围8个区域作为查询域,方法如下:
9g3rqp的纬度位串为100110111101111,经度位串为001110010111000。
北方区域的geohash编码:纬度位串为100110111101111,经度位串为001110010111000+1=001110010111001,经纬度位串为
010010111100011101111011010111,geohash编码为9g3rqr;
东北区域的geohash编码:纬度位串为100110111101111+1=100110111110000,经度位串为001110010111000+1=001110010111001,经纬度位串为
010010111100011101111110000010,geohash编码为9g3rw2;
东方区域的geohash编码:纬度位串为100110111101111+1=100110111110000,经度位为001110010111000,经纬度位串为010010111100011101111110000000,geohash编码为9g3rw0;
东南区域的geohash编码:纬度位串为100110111101111+1=100110111110000,经度位串为001110010111000-1=001110010110111,经纬度位串为
010010111100011101111100101010,geohash编码为9g3rtb;
南方区域的geohash编码:纬度位串为100110111101111,经度位串为001110010111000-1=001110010110111,经纬度位串为
010010111100011101111001111111,geohash编码为9g3rmz;
西南区域的geohash编码:纬度位串为100110111101111-1=100110111101110,经度位串为001110010111000-1=001110010110111,经纬度位串为
010010111100011101111001111110,geohash编码为9g3rmy;
西方区域的geohash编码:纬度位串为100110111101111-1=100110111101110,经度位为001110010111000,经纬度位串为010010111100011101111011010100,geohash编码为9g3rqn;
西北区域的geohash编码:纬度位串为100110111101111-1=100110111101110,经度位串为001110010111000+1=001110010111001,经纬度位串为
010010111100011101111011010110,geohash编码为9g3rqq。
9g3rqp周围的8个区域为:9g3rqr、9g3rw2、9g3rw0、9g3rtb、9g3rmz、9g3rmy、9g3rqn、9g3rqq;
步骤320:检索空间关键词索引结构返回满足查询条件的id;其中,查询条件指查询域内包含全部qitems的id;进一步地,可以设置所述步骤320,具体包括步骤321、步骤322:
步骤321:以任一查询域为例,若p等于n,通过检索Patricia Trie即可选取待检索的倒排列表;反之,若p不等于n,判断根据查询域检索Patricia Trie到达的内部节点,若该节点为叶节点,则直接选取待检索的倒排列表,反之,采用深度优先方法遍历以该节点为根结点的Patricia Trie子树至首次检索到叶节点为止,以当前叶节点为起始位置沿指针链方向获取相应数目的叶节点,分别选取每个叶节点指向的倒排列表;其中,查询域指geohash编码,相应数目指内部节点存储的叶节点个数;
步骤322:检索步骤321选取的倒排列表,分别获取包含查询关键词的id列表,并求交集,即为该域内满足查询条件的id;
以查询域“9g3rmy”为例,因6不等于8,故需判断根据“9g3rmy”检索Patricia Trie到达的内部节点是否为叶节点,由图6可知,该节点为叶节点,直接选取其所指向的倒排列表,据选取的倒排列表可知,包含查询关键词“historicalSite”的ID{9},包含查询关键词“garden”的ID{9},求交集即得“9g3rmy”域内满足查询条件的ID{9};
以查询域“9g3rqp”为例,因6不等于8,故需判断根据“9g3rqp”检索Patricia Trie到达的内部节点是否为叶节点,由图6可知,该节点为内部节点,其存储的叶节点个数为10,采用深度优先方法遍历以该节点为根结点的Patricia Trie子树至检索到叶节点“23”为止,以当前叶节点为起始位置沿指针链方向获取连续的10个叶节点,分别选取每个叶节点指向的倒排列表,据选取的倒排列表可知,包含查询关键词“historicalSite”的ID{11,15,16,18,21},包含查询关键词“garden”的ID{11,15,16,18,21},求交集即得“9g3rqp”域内满足查询条件的ID{11,15,16,18,21};
根据步骤321、322所述方法,分别获取每个查询域内满足查询条件的id,之后求并集,即为9个查询域内满足查询条件的id{9,11,15,16,18,21,27}。
步骤330、根据查询位置点(19.596412 -99.219501)和查询距离范围500m确定纬度范围与经度范围,如下所示:
step1: range =180 ÷ 3.141593 × 0.5 ÷ 6372.797 = 0.004495
step2: lngR = 0.004495 ÷ cos(19.596412 × 3.141593 ÷ 180.0) = 0.004771
step3: 19.596412 + 0.004495 = 19.600907(纬度的最大值)
step4: 19.596412 - 0.004495 = 19.591917(纬度的最小值)
step5: -99.219501 + 0.004771 = -99.214730(经度的最大值)
step6: -99.219501 - 0.004771 = -99.224272(经度的最小值)
由上可知,纬度范围为[19.591917,19.600907],经度范围为
[-99.224272,-99.214730]。根据经纬度范围对9个查询域内的id{9,11,15,16,18,21,27}进行过滤并返回经纬度范围内的位置点。如:id为9时,其纬经度为(19.589223 -99.23521),19.589223不位于[19.591917,19.600907]内,故过滤id为9的位置点。经过滤后,候选集为{15,18,21}。
步骤340、计算候选集{15,18,21}中id对应的位置点(19.596412 -99.219501)的距离dq,若dq<=500,则返回该位置点,实现过程如下所示:
查询条件:(19.596412 -99.219501),500米;
距离计算公式:设A(x 1,y 1),B(x 2,y 2),则|AB|= (1);
根据公式(1)依次计算候选集对应的位置点与(19.596412 -99.219501)的距离,返回不大于500米的位置点,经计算,满足要求的位置点集为{{19.596261 -99.223194},{19.596776 -99.220447},{19.596412 -99.219501}}。
故满足空间关键词查询条件的位置点为{{19.596261 -99.223194},{19.596776-99.220447},{19.596412 -99.219501}}。
一种基于geohash与Patricia Trie的空间关键词查询装置,包括:
数据预处理装置,用于通过geohash空间编码方法将数据集D中所有位置点编码成长度为n的字符串geoStr,以geoStr为排序对象按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间关键词索引建立装置,用于对geoStr构建Patricia Trie,Patricia Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的字符串;
空间关键词查询步骤装置,用于检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
实施例2:一种基于geohash与Patricia Trie的空间关键词查询方法,包括:
数据预处理步骤,通过geohash空间编码方法将数据集D中所有位置点编码成长度为n的字符串geoStr,以geoStr为排序对象按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间关键词索引建立步骤,对geoStr构建Patricia Trie,Patricia Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的字符串;
空间关键词查询步骤,检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
进一步地,可以设置所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将数据集D中的位置点编码成长度为n的字符串geoStr;其中,位置点由纬度、经度数据构成;geoStr即geohash编码,表示geohash精度表中n对应的范围区域;
步骤120:以geoStr为排序对象按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,R中每行数据r由id、纬度lat、经度lon、字符串geoStr、关键词集items组成,items至少包含一个关键词item。
进一步地,可以设置所述空间关键词索引建立步骤,具体为:
步骤210:对Rstr构建Patricia Trie,每个geoStr可映射为Patricia Trie中一条从根到叶节点的路径,Patricia Trie叶节点指向根据该域内关键词构建的倒排索引,PatriciaTrie的所有叶节点通过指针连接,Patricia Trie内部节点存储以该节点为根结点的Patricia Trie子树的叶节点个数;其中,Rstr表示R中所有geoStr且保持其顺序性;该域指从根节点到叶节点所构成的字符串geoStri
步骤220:对Ritems中每个独立元素item,构建一个由包含item的rpart.id组成的倒排列表;其中,rpart表示R中包含geoStri的r.id、r.items,r.id表示r的id,r.items表示r的关键词集,Rpart表示由一至多行rpart组成的数据集;Ritems表示Rpart中全部关键词,rpart.id表示rpart的id。
进一步地,可以设置所述空间关键词查询步骤,具体包括如下步骤:
步骤310:给定查询位置点q、查询距离范围d、查询关键词集qitems,根据geohash精度表选定与d相对应的geohash编码长度p,通过geohash空间编码方法将位置点q编码为p位长度的字符串qs,获取字符串qs周围8个区域的geohash编码,并将字符串qs及其周围8个区域的geohash编码分别作为查询域,共9个查询域;其中,p对应的距离误差不小于d且为最小值;qitems至少由一个关键词item构成;
步骤320:检索空间关键词索引结构返回满足查询条件的id;其中,查询条件指查询域内包含全部qitems的id;
步骤330:根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围,根据经纬度范围对与步骤320返回的id相对应的位置点进行筛选,最终得到id候选集;
步骤340:计算候选集中id对应的位置点到q的距离dq:若dq≤d,则返回该位置点,否则,不返回。
进一步地,可以设置所述步骤110,包括下列步骤111、112:
步骤111:根据geohash精度表确定geohash编码长度n;
步骤112:通过geohash空间编码方法将所有位置点编码成长度为n的字符串。
进一步地,可以设置通过geohash空间编码方法将位置点编码成字符串,具体为:首先,将经纬度范围看作二维平面坐标系;然后,采用二分法对经度/纬度进行划分,根据位置点经度/纬度在划分结果中的位置分别赋值0或1,直到划分次数满足对应的经/纬度位串的位数;之后,通过位交错方法合并经度位串与纬度位串;最后,通过Base32编码将经纬度位串编码为相应长度的字符串。
进一步地,可以设置所述步骤310中,获取qs周围8个区域的geohash编码的方法:根据qs的经纬度位串,东/西方向的区域编码:经度位串不变,纬度位串加/减1,通过位交错方法得到该区域的经纬度位串;南/北方向的区域编码:纬度位串不变,经度位串减/加1,通过位交错方法得到该区域的经纬度位串;东北/西南方向的区域编码,经纬度位串均加/减1,通过位交错方法得到该区域的经纬度位串;东南方向的区域编码:纬度位串加1,经度位串减1,通过位交错方法得到该区域的经纬度位串;西北方向的区域编码:纬度位串减1,经度位串加1,通过位交错方法得到该区域的经纬度位串;之后,通过Base32编码将以上8个位串进行编码即可获得qs周围8个区域的geohash编码。
进一步地,可以设置所述步骤320具体为:
步骤321:以任一查询域为例,p等于n,通过检索Patricia Trie即可选取待检索的倒排列表;
步骤322:检索步骤321选取的倒排列表,分别获取包含查询关键词的id列表,并求交集,即为该域内满足查询条件的id;
据上述方法,分别获取每个查询域内满足查询条件的id,之后求并集,即为9个查询域内满足查询条件的id。
进一步地,可以设置所述步骤330中,根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围方法如下:纬度的最大值maxLat = lat + range,纬度的最小值minLat = lat - range;经度的最大值 maxLng = lon + lngR,经度的最小值minLng =lon - lngR;其中,lat表示查询位置点q的纬度值,lon 表示查询位置点q的经度值,range=180 / π * d / 6372.797,lngR = range / cos(lat *π/ 180.0)。
上面结合图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

Claims (10)

1.一种基于geohash与Patricia Trie的空间关键词查询方法,其特征在于:包括:
数据预处理步骤,通过geohash空间编码方法将数据集D中所有位置点编码成长度为n的字符串geoStr,以geoStr为排序对象按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间关键词索引建立步骤,对geoStr构建Patricia Trie,Patricia Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的字符串;
空间关键词查询步骤,检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
2.根据权利要求1所述的基于geohash与Patricia Trie的空间关键词查询方法,其特征在于:所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将数据集D中的位置点编码成长度为n的字符串geoStr;其中,位置点由纬度、经度数据构成;geoStr即geohash编码,表示geohash精度表中n对应的范围区域;
步骤120:以geoStr为排序对象按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,R中每行数据r由id、纬度lat、经度lon、字符串geoStr、关键词集items组成,items至少包含一个关键词item。
3.根据权利要求1所述的基于geohash与Patricia Trie的空间关键词查询方法,其特征在于:所述空间关键词索引建立步骤,具体为:
步骤210:对Rstr构建Patricia Trie,每个geoStr可映射为Patricia Trie中一条从根到叶节点的路径,Patricia Trie叶节点指向根据该域内关键词构建的倒排索引,PatriciaTrie的所有叶节点通过指针连接,Patricia Trie内部节点存储以该节点为根结点的Patricia Trie子树的叶节点个数;其中,Rstr表示R中所有geoStr且保持其顺序性;该域指从根节点到叶节点所构成的字符串geoStri
步骤220:对Ritems中每个独立元素item,构建一个由包含item的rpart.id组成的倒排列表;其中,rpart表示R中包含geoStri的r.id、r.items,r.id表示r的id,r.items表示r的关键词集,Rpart表示由一至多行rpart组成的数据集;Ritems表示Rpart中全部关键词,rpart.id表示rpart的id。
4.根据权利要求1所述的基于geohash与Patricia Trie的空间关键词查询方法,其特征在于:所述空间关键词查询步骤,具体包括如下步骤:
步骤310:给定查询位置点q、查询距离范围d、查询关键词集qitems,根据geohash精度表选定与d相对应的geohash编码长度p,通过geohash空间编码方法将位置点q编码为p位长度的字符串qs,获取字符串qs周围8个区域的geohash编码,并将字符串qs及其周围8个区域的geohash编码分别作为查询域,共9个查询域;其中,p对应的距离误差不小于d且为最小值;qitems至少由一个关键词item构成;
步骤320:检索空间关键词索引结构返回满足查询条件的id;其中,查询条件指查询域内包含全部qitems的id;
步骤330:根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围,根据经纬度范围对与步骤320返回的id相对应的位置点进行筛选,最终得到id候选集;
步骤340:计算候选集中id对应的位置点到q的距离dq:若dq≤d,则返回该位置点,否则,不返回。
5.根据权利要求2所述的基于geohash与Patricia Trie的空间关键词查询方法,其特征在于:所述步骤110,包括下列步骤111、112:
步骤111:根据geohash精度表确定geohash编码长度n;
步骤112:通过geohash空间编码方法将所有位置点编码成长度为n的字符串。
6.根据权利要求2或4所述的基于geohash与Patricia Trie的空间关键词查询方法,其特征在于:通过geohash空间编码方法将位置点编码成字符串,具体为:首先,将经纬度范围看作二维平面坐标系;然后,采用二分法对经度/纬度进行划分,根据位置点经度/纬度在划分结果中的位置分别赋值0或1,直到划分次数满足对应的经/纬度位串的位数;之后,通过位交错方法合并经度位串与纬度位串;最后,通过Base32编码将经纬度位串编码为相应长度的字符串。
7.根据权利要求4所述的基于geohash与Patricia Trie的空间关键词查询方法,其特征在于:所述步骤310中,获取qs周围8个区域的geohash编码的方法:根据qs的经纬度位串,东/西方向的区域编码:经度位串不变,纬度位串加/减1,通过位交错方法得到该区域的经纬度位串;南/北方向的区域编码:纬度位串不变,经度位串减/加1,通过位交错方法得到该区域的经纬度位串;东北/西南方向的区域编码,经纬度位串均加/减1,通过位交错方法得到该区域的经纬度位串;东南方向的区域编码:纬度位串加1,经度位串减1,通过位交错方法得到该区域的经纬度位串;西北方向的区域编码:纬度位串减1,经度位串加1,通过位交错方法得到该区域的经纬度位串;之后,通过Base32编码将以上8个位串进行编码即可获得qs周围8个区域的geohash编码。
8.根据权利要求4所述的基于geohash与Patricia Trie的空间关键词查询方法,其特征在于:所述步骤320具体为:
步骤321:以任一查询域为例,若p等于n,通过检索Patricia Trie即可选取待检索的倒排列表;反之,若p不等于n,判断根据查询域检索Patricia Trie到达的内部节点,若该节点为叶节点,则直接选取待检索的倒排列表,反之,采用深度优先方法遍历以该节点为根结点的Patricia Trie子树至首次检索到叶节点为止,以当前叶节点为起始位置沿指针链方向获取相应数目的叶节点,分别选取每个叶节点指向的倒排列表;其中,查询域指geohash编码,相应数目指内部节点存储的叶节点个数;
步骤322:检索步骤321选取的倒排列表,分别获取包含查询关键词的id列表,并求交集,即为该域内满足查询条件的id;
据上述方法,分别获取每个查询域内满足查询条件的id,之后求并集,即为9个查询域内满足查询条件的id。
9.根据权利要求4所述的基于geohash与Patricia Trie的空间关键词查询方法,其特征在于:所述步骤330中,根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围方法如下:纬度的最大值maxLat = lat + range,纬度的最小值minLat = lat - range;经度的最大值 maxLng = lon + lngR,经度的最小值minLng = lon - lngR;其中,lat表示查询位置点q的纬度值,lon 表示查询位置点q的经度值,range =180 / π * d / 6372.797,lngR = range / cos(lat *π/ 180.0)。
10.一种基于geohash与Patricia Trie的空间关键词查询装置,其特征在于:包括:
数据预处理装置,用于通过geohash空间编码方法将数据集D中所有位置点编码成长度为n的字符串geoStr,以geoStr为排序对象按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间关键词索引建立装置,用于对geoStr构建Patricia Trie,Patricia Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的字符串;
空间关键词查询步骤装置,用于检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
CN201810419803.9A 2018-05-04 2018-05-04 一种基于geohash与Patricia Trie的空间关键词查询方法及装置 Active CN108846013B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810419803.9A CN108846013B (zh) 2018-05-04 2018-05-04 一种基于geohash与Patricia Trie的空间关键词查询方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810419803.9A CN108846013B (zh) 2018-05-04 2018-05-04 一种基于geohash与Patricia Trie的空间关键词查询方法及装置

Publications (2)

Publication Number Publication Date
CN108846013A true CN108846013A (zh) 2018-11-20
CN108846013B CN108846013B (zh) 2021-11-23

Family

ID=64212682

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810419803.9A Active CN108846013B (zh) 2018-05-04 2018-05-04 一种基于geohash与Patricia Trie的空间关键词查询方法及装置

Country Status (1)

Country Link
CN (1) CN108846013B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109933644A (zh) * 2019-03-22 2019-06-25 中国农业银行股份有限公司 一种字符串匹配方法及装置
CN110489605A (zh) * 2019-07-31 2019-11-22 云南师范大学 一种数据偏斜分布下的Hilbert编码和解码方法
CN110800008A (zh) * 2019-03-04 2020-02-14 阿里巴巴集团控股有限公司 构建区块链世界状态默克尔帕特里夏字典树子树
CN111026978A (zh) * 2019-10-14 2020-04-17 平安科技(深圳)有限公司 位置查询方法、装置、计算机设备及存储介质
CN111291147A (zh) * 2020-02-25 2020-06-16 北京首汽智行科技有限公司 一种路径规划方法
CN111353012A (zh) * 2020-03-09 2020-06-30 咪咕文化科技有限公司 空间文本数据缓存处理方法、装置、电子设备及存储介质
WO2021068347A1 (zh) * 2019-10-12 2021-04-15 平安科技(深圳)有限公司 自适应位置查询方法、装置、计算机设备及存储介质
CN112988797A (zh) * 2021-03-18 2021-06-18 中睿信数字技术有限公司 基于p-stable lsh的时空伴随查询方法
CN113449208A (zh) * 2020-03-26 2021-09-28 阿里巴巴集团控股有限公司 空间查询方法、设备、系统及存储介质
CN114911787A (zh) * 2022-05-31 2022-08-16 南京大学 一种融合位置和语义约束的多源poi数据清洗方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1941347A4 (en) * 2005-10-18 2010-02-17 Rightorder Inc METHOD AND DEVICE FOR A RECONSTITUTABLE HASH IN A TRIE
CN101916263A (zh) * 2010-07-27 2010-12-15 武汉大学 基于加权编辑距离的模糊关键字查询方法及系统
CN103198079A (zh) * 2012-01-06 2013-07-10 北大方正集团有限公司 相关搜索的实现方法和装置
CN103699647A (zh) * 2013-12-26 2014-04-02 苏州大学 一种字符串词典的索引方法及系统
CN104899214A (zh) * 2014-03-06 2015-09-09 阿里巴巴集团控股有限公司 一种建立输入建议的数据处理方法和系统
CN105117417A (zh) * 2015-07-30 2015-12-02 西安交通大学 一种读优化的内存数据库Trie树索引方法
CN105677757A (zh) * 2015-12-30 2016-06-15 东北大学 一种基于双缀过滤的大数据相似性连接方法
CN107766433A (zh) * 2017-09-19 2018-03-06 昆明理工大学 一种基于Geo‑BTree的范围查询方法及装置
CN107798054A (zh) * 2017-09-04 2018-03-13 昆明理工大学 一种基于Trie的范围查询方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1941347A4 (en) * 2005-10-18 2010-02-17 Rightorder Inc METHOD AND DEVICE FOR A RECONSTITUTABLE HASH IN A TRIE
CN101916263A (zh) * 2010-07-27 2010-12-15 武汉大学 基于加权编辑距离的模糊关键字查询方法及系统
CN103198079A (zh) * 2012-01-06 2013-07-10 北大方正集团有限公司 相关搜索的实现方法和装置
CN103699647A (zh) * 2013-12-26 2014-04-02 苏州大学 一种字符串词典的索引方法及系统
CN104899214A (zh) * 2014-03-06 2015-09-09 阿里巴巴集团控股有限公司 一种建立输入建议的数据处理方法和系统
CN105117417A (zh) * 2015-07-30 2015-12-02 西安交通大学 一种读优化的内存数据库Trie树索引方法
CN105677757A (zh) * 2015-12-30 2016-06-15 东北大学 一种基于双缀过滤的大数据相似性连接方法
CN107798054A (zh) * 2017-09-04 2018-03-13 昆明理工大学 一种基于Trie的范围查询方法及装置
CN107766433A (zh) * 2017-09-19 2018-03-06 昆明理工大学 一种基于Geo‑BTree的范围查询方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CHIA-HUNG LIN ET AL.: ""A Multi-Index Hybrid Trie for Lookup and Updates"", 《IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS》 *
孙芳媛: ""基于倒排索引和字典树的站内搜索引擎的设计与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110800008A (zh) * 2019-03-04 2020-02-14 阿里巴巴集团控股有限公司 构建区块链世界状态默克尔帕特里夏字典树子树
CN110800008B (zh) * 2019-03-04 2023-06-30 创新先进技术有限公司 构建区块链世界状态默克尔帕特里夏字典树子树
US10929374B2 (en) 2019-03-04 2021-02-23 Advanced New Technologies Co., Ltd. Constructing blockchain world state Merkle Patricia Trie subtree
TWI720712B (zh) * 2019-03-04 2021-03-01 開曼群島商創新先進技術有限公司 構建區塊鏈世界狀態默克爾帕特里夏字典樹子樹
CN109933644A (zh) * 2019-03-22 2019-06-25 中国农业银行股份有限公司 一种字符串匹配方法及装置
CN109933644B (zh) * 2019-03-22 2021-03-09 中国农业银行股份有限公司 一种字符串匹配方法及装置
CN110489605B (zh) * 2019-07-31 2023-06-06 云南师范大学 一种数据偏斜分布下的Hilbert编码和解码方法
CN110489605A (zh) * 2019-07-31 2019-11-22 云南师范大学 一种数据偏斜分布下的Hilbert编码和解码方法
WO2021068347A1 (zh) * 2019-10-12 2021-04-15 平安科技(深圳)有限公司 自适应位置查询方法、装置、计算机设备及存储介质
CN111026978A (zh) * 2019-10-14 2020-04-17 平安科技(深圳)有限公司 位置查询方法、装置、计算机设备及存储介质
WO2021072874A1 (zh) * 2019-10-14 2021-04-22 平安科技(深圳)有限公司 基于双数组的位置查询方法、装置、计算机设备及存储介质
CN111291147A (zh) * 2020-02-25 2020-06-16 北京首汽智行科技有限公司 一种路径规划方法
CN111353012A (zh) * 2020-03-09 2020-06-30 咪咕文化科技有限公司 空间文本数据缓存处理方法、装置、电子设备及存储介质
CN111353012B (zh) * 2020-03-09 2023-10-17 咪咕文化科技有限公司 空间文本数据缓存处理方法、装置、电子设备及存储介质
CN113449208A (zh) * 2020-03-26 2021-09-28 阿里巴巴集团控股有限公司 空间查询方法、设备、系统及存储介质
CN113449208B (zh) * 2020-03-26 2022-09-02 阿里巴巴集团控股有限公司 空间查询方法、设备、系统及存储介质
CN112988797A (zh) * 2021-03-18 2021-06-18 中睿信数字技术有限公司 基于p-stable lsh的时空伴随查询方法
CN114911787A (zh) * 2022-05-31 2022-08-16 南京大学 一种融合位置和语义约束的多源poi数据清洗方法
CN114911787B (zh) * 2022-05-31 2023-10-27 南京大学 一种融合位置和语义约束的多源poi数据清洗方法

Also Published As

Publication number Publication date
CN108846013B (zh) 2021-11-23

Similar Documents

Publication Publication Date Title
CN108846013A (zh) 一种基于geohash与Patricia Trie的空间关键词查询方法及装置
CN107798054B (zh) 一种基于Trie的范围查询方法及装置
US7606687B2 (en) Proximity search methods using tiles to represent geographical zones
CN100523735C (zh) 一种基于小网格路网组织结构的快速地图匹配方法
CN103136371B (zh) 多源空间数据的剖分标识生成方法以及数据检索方法
CN107766433A (zh) 一种基于Geo‑BTree的范围查询方法及装置
CN108776666A (zh) 一种基于关键词倒排与Trie的空间关键词查询方法及装置
US8386479B2 (en) Routing methods for multiple geographical entities
EP2795255B1 (en) System and method for using skyline queries to search for points of interest along a route
CN107153711A (zh) 地理信息数据处理方法及装置
CN106909692B (zh) 一种计算城市公共设施覆盖辐射指数的方法
CN104394509A (zh) 一种高效的差分扰动位置隐私保护系统及方法
CN104881472B (zh) 一种基于网络数据收集的旅游线路景点组合推荐方法
CN106528589A (zh) 数据管理方法及装置
WO2018104207A1 (en) Encoding scheme for geographic position data
CN108446357A (zh) 一种基于二维地理位置的海量数据空间范围查询方法
CN105740964A (zh) 一种城市路网数据组织与最短路径快速计算方法
CN107659596B (zh) 一种动态导航的方法及装置、终端
Shao et al. Trip planning queries in indoor venues
CN109800360A (zh) 小区查询方法、装置、电子设备及存储介质
CN105843948B (zh) 一种移动环境下基于索引技术的景点智能推荐方法
CN109885638B (zh) 一种三维立体空间索引方法及系统
CN108776667A (zh) 一种基于geohash与B-Tree的空间关键词查询方法及装置
CN109316781A (zh) 一种气泡层次可视化中气泡分离方法
CN111078806B (zh) 位置查询方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant