CN108776667B - 一种基于geohash与B-Tree的空间关键词查询方法及装置 - Google Patents
一种基于geohash与B-Tree的空间关键词查询方法及装置 Download PDFInfo
- Publication number
- CN108776667B CN108776667B CN201810420942.3A CN201810420942A CN108776667B CN 108776667 B CN108776667 B CN 108776667B CN 201810420942 A CN201810420942 A CN 201810420942A CN 108776667 B CN108776667 B CN 108776667B
- Authority
- CN
- China
- Prior art keywords
- query
- keyword
- geohash
- longitude
- string
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于geohash与B‑Tree的空间关键词查询方法及装置,本发明方法包括:数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串string,以string为排序对象按字典序对数据集D中的每行数据排序并生成编号id、标识flag,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;空间关键词索引建立步骤,对string构建B‑Tree;对记录集R中的flag建立倒排索引,其列表元素为关键词及与其相对应的id列表,得到域‑关键词倒排索引结构;空间关键词查询步骤,检索B‑Tree与域‑关键词倒排索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。本发明可高效支持任意空间范围的关键词查询。
Description
技术领域
本发明涉及一种基于geohash与B-Tree的空间关键词查询方法及装置,属于空间关键词查询(Spatial Keyword query)领域、基于位置的服务(Location-Based Service,LBS)等领域。
背景技术
随着移动设备的普及、定位技术的快速发展、基于位置的服务运用的快速增长等,导致产生了大量具有位置属性的文本数据,即空间文本,如何从这些数据中快速获取所需信息是空间文本查询领域的核心问题。根据应用场景,空间文本查询可分为空间关键词查询与分发/订阅查询。
为高效支持空间关键词查询则需高效的空间关键词索引结构。目前,国内外对空间文本索引结构进行了广泛而又深入的研究,这些索引结构通常组合空间索引结构与文本索引结构。根据所采用的空间索引结构的不同,可将其分为:基于R-Tree及其变体、grid/Quad-Tree、space-filling curve的空间文本索引;根据所采用的文本索引结构,可将其分为:基于倒排列表与签名文件的空间文本索引。空间索引与文本索引的组合方式分为:独立组合、松散组合、紧凑组合。据空间关键词查询领域国内外研究现状可知,R-Tree及其变体与倒排索引组合的索引结构是主流的空间关键词索引结构。R-Tree的变体以面积最小原则、重叠区域最小原则、周长最小原则和存储利用率较高原则为导向对R-Tree进行优化,但检索效率仍受R-Tree多路径查询问题的制约。
发明内容
为高效支持任意空间范围的关键词查询,本发明提供了一种基于geohash与B-Tree的空间关键词查询方法及装置。
本发明的技术方案是:一种基于geohash与B-Tree的空间关键词查询方法,包括:
数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串string,以string为排序对象按字典序对数据集D中的每行数据排序并生成编号id、标识flag,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,flag为string的唯一标识,用整形表示;
空间关键词索引建立步骤,对string构建B-Tree;对记录集R中的flag建立倒排索引,其列表元素为关键词及与其相对应的id列表,得到域-关键词倒排索引结构;
空间关键词查询步骤,检索B-Tree与域-关键词倒排索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将数据集D中的位置点编码成长度为n的字符串string;其中,位置点由纬度、经度数据构成;string即geohash编码,表示geohash精度表中n对应的范围区域;
步骤120:以string为排序对象按字典序对数据集D中的每行数据排序并生成编号id、标识flag,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,R中每行数据r由id、纬度lat、经度lon、字符串string、关键词集items、string标识flag组成,items至少包含一个关键词item。
所述空间关键词索引建立步骤,具体为:
步骤210:对Rstr构建B-Tree,每个结点至少存储1个<string,id>;其中,Rstr表示R中所有string且保持其顺序性;
步骤220:对Rf中每个独立元素flagi,构建倒排索引,并对Rpart中每个独立元素item,构建一个由包含item的rpart.id组成的倒排列表;其中,Rf表示R中flag集,rÎR;rpart由R中包含flagi的r.id与r.items组成,r.id表示r的id,r.items表示r的关键词集,Rpart表示由一至多行rpart组成的数据集。
所述空间关键词查询步骤,具体包括如下步骤:
步骤310:给定查询位置点q、查询距离范围d、查询关键词集qitems,根据geohash精度表选定与d相对应的geohash编码长度p,通过geohash空间编码方法将位置点q编码为p位长度的字符串qs,获取字符串qs周围8个区域的geohash编码,并将字符串qs及其周围8个区域的geohash编码分别作为查询域,共9个查询域;其中,p对应的距离误差不小于d且为最小值;qitems至少由一个关键词item构成;
步骤320:检索B-Tree与域-关键词倒排索引结构返回满足查询条件的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:以任一查询域为例,根据检索B-Tree返回的id,在R中以此id为起始点向上向下双向搜索至不满足域查询条件,返回满足域查询条件的flag集;其中,域查询条件指R中string的前p位与查询域的geohash编码相同;
步骤322:根据步骤321返回的flag分别检索域-关键词倒排索引结构,以任一flag为例,首先根据flag选取待检索的倒排列表,然后分别获取包含查询关键词的的id列表,并求交集,即为该flag所标识区域内满足查询条件的id;据前述方法分别获取每个flag所标识区域内满足查询条件的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)。
一种基于文本-域倒排的空间文本查询装置,包括:
数据预处理装置,用于将数据集D中所有位置点编码成长度为n的字符串string,以string为排序对象按字典序对数据集D中的每行数据排序并生成编号id、标识flag,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,flag为string的唯一标识,用整形表示;
空间关键词索引建立装置,用于对string构建B-Tree;对记录集R中的flag建立倒排索引,其列表元素为关键词及与其相对应的id列表,得到域-关键词倒排索引结构;
空间关键词查询装置,用于检索B-Tree与域-关键词倒排索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
本发明的有益效果是:本发明可高效支持任意空间范围的关键词查询;通过组合B-Tree与域-关键词倒排索引结构可高效支持美团外卖等LBS提供的附近兴趣点(火锅店、渔粉店等)查询功能;避免了R-Tree及其变体因存在多条查询路径导致的检索低效问题;无缝融合分布式并行计算框架。
附图说明
图1是基于geohash与B-Tree的空间关键词查询功能模块图;
图2是geohash精度表;
图3是Base32编码规则图;(注:(+ / -)表示加减);
图4是位置点转换为字符串图;
图5是根据字符串按字典序排序数据集且生成其标识图;(标识唯一)
图6是B-Tree结构图;
图7是域-关键词倒排索引结构图。
具体实施方式
实施例1:如图1-图7所示,一种基于geohash与B-Tree的空间关键词查询方法,包括:
数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串string,以string为排序对象按字典序对数据集D中的每行数据排序并生成编号id、标识flag,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,flag为string的唯一标识,用整形表示;
空间关键词索引建立步骤,对string构建B-Tree;对记录集R中的flag建立倒排索引,其列表元素为关键词及与其相对应的id列表,得到域-关键词倒排索引结构;
空间关键词查询步骤,检索B-Tree与域-关键词倒排索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
进一步地,可以设置所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将D中的位置点编码成长度为n的字符串string;其中,位置点由纬度、经度数据构成,表示POI(如:餐馆、酒店、公园等)的地理坐标,关键词集表示POI的文本属性(如:含名胜古迹的公园);string即geohash编码,表示geohash精度表中n对应的范围区域;进一步地,可以设置所述步骤110,包括下列步骤111、112:
步骤111:根据geohash精度表(如图2所示),将geohash编码长度n设置为8,则经纬度位串分别为20位;
步骤112:通过geohash空间编码方法将D中的位置点转换成长度为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:以string为排序对象按字典序对D中的每一行数据排序并生成编号id、标识flag,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R,如图5所示;其中,R中每行数据r由id、纬度(lat)、经度(lon)、字符串(string)、关键词集(items)、string标识(flag)组成,items至少包含一个item;flag代表string标识,用整形表示,且唯一(从图5中可以看出flag按照顺序编号,id为19、20的string相同,所以标识相同,即本实施例中有1,2,...29,共计29个标识)。
进一步地,可以设置所述空间关键词索引建立步骤,具体为:
步骤210、对Rstr构建B-Tree,每个结点至少存储1个<string,id>;其中,Rstr表示R中所有string且保持其顺序性;选取m=5(m表示至多含有的孩子结点个数),则每个非叶子结点至多有5棵子树,每个结点至多有4个<string,id>;除根结点外,其它每个分支结点至少有3棵子树;根结点至少有2棵子树;有3个孩子的非叶子结点恰好有2个<string,id>,有4个孩子的非叶子结点恰好有3个<string,id>;
步骤220:对Rf中每个独立元素flagi,构建倒排索引,并对Rpart中每个独立元素item,构建一个由包含item的rpart.id组成的倒排列表;其中,Rf表示R中flag集(i=1,2,...29),rÎR;rpart由R中包含flagi的r.id与r.items组成,r.id表示r的id,r.items表示r的关键词集,Rpart表示由一至多行rpart组成的数据集。
B-Tree与域-关键词倒排组合的索引结构如图6、7所示,其中,索引结构图呈现形式与数据集中位置点分布、关键词分布、geohash编码长度有关。
进一步地,可以设置所述空间关键词查询步骤,具体包括如下步骤:
步骤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:检索B-Tree与域-关键词倒排索引结构返回满足查询条件的id;其中,查询条件指查询域内包含全部qitems的id;进一步地,可以设置所述步骤320,具体包括步骤321、步骤322:
步骤321、以查询域“9g3rqp”为例,根据检索B-Tree返回的id:17,在R中以此17为起始点向上向下双向搜索至不满足域查询条件,返回满足域查询条件的flag集{13,14,15,16,17,18,19,20,21,22};其中,域查询条件指R中字符串的前6位与“9g3rqp”相同;
步骤322、根据步骤321返回的flag分别检索域-关键词倒排索引结构,以flag“16”为例,首先根据16选取待检索的倒排列表,然后分别获取包含查询关键词{historicalSite,garden}的id列表,“16”指向的倒排列表中,含“historicalSite”的id集为{15},含“garden”的id集为{15},交集为{15},即为“16”所标识区域内满足查询条件的id;据前述方法分别获取每个flag所标识区域内满足查询条件的id,之后求并集,即为该查询域内满足查询条件的id{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米;
根据公式(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}}。
一种基于文本-域倒排的空间文本查询装置,包括:
数据预处理装置,用于将数据集D中所有位置点编码成长度为n的字符串string,以string为排序对象按字典序对数据集D中的每行数据排序并生成编号id、标识flag,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,flag为string的唯一标识,用整形表示;
空间关键词索引建立装置,用于对string构建B-Tree;对记录集R中的flag建立倒排索引,其列表元素为关键词及与其相对应的id列表,得到域-关键词倒排索引结构;
空间关键词查询装置,用于检索B-Tree与域-关键词倒排索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
上面结合图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (7)
1.一种基于geohash与B-Tree的空间关键词查询方法,其特征在于:包括:
数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串string,以string为排序对象按字典序对数据集D中的每行数据排序并生成编号id、标识flag,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,flag为string的唯一标识,用整形表示;
空间关键词索引建立步骤,对string构建B-Tree;对记录集R中的flag建立倒排索引,其列表元素为关键词及与其相对应的id列表,得到域-关键词倒排索引结构;
空间关键词查询步骤,检索B-Tree与域-关键词倒排索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点;
所述空间关键词索引建立步骤,具体为:
步骤210:对Rstr构建B-Tree,每个结点至少存储1个<string,id>;其中,Rstr表示R中所有string且保持其顺序性;
步骤220:对Rf中每个独立元素flagi,构建倒排索引,并对Rpart中每个独立元素item,构建一个由包含item的rpart.id组成的倒排列表;其中,Rf表示R中flag集,r∈R;rpart由R中包含flagi的r.id与r.items组成,r.id表示r的id,r.items表示r的关键词集,Rpart表示由一至多行rpart组成的数据集;
所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将数据集D中的位置点编码成长度为n的字符串string;其中,位置点由纬度、经度数据构成;string即geohash编码,表示geohash精度表中n对应的范围区域;
步骤120:以string为排序对象按字典序对数据集D中的每行数据排序并生成编号id、标识flag,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,R中每行数据r由id、纬度lat、经度lon、字符串string、关键词集items、string标识flag组成,items至少包含一个关键词item;
所述空间关键词查询步骤,具体包括如下步骤:
步骤310:给定查询位置点q、查询距离范围d、查询关键词集qitems,根据geohash精度表选定与d相对应的geohash编码长度p,通过geohash空间编码方法将位置点q编码为p位长度的字符串qs,获取字符串qs周围8个区域的geohash编码,并将字符串qs及其周围8个区域的geohash编码分别作为查询域,共9个查询域;其中,p对应的距离误差不小于d且为最小值;qitems至少由一个关键词item构成;
步骤320:检索B-Tree与域-关键词倒排索引结构返回满足查询条件的id;其中,查询条件指查询域内包含全部qitems的id;
步骤330:根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围,根据经纬度范围对与步骤320返回的id相对应的位置点进行筛选,最终得到id候选集;
步骤340:计算候选集中id对应的位置点到q的距离dq:若dq≤d,则返回该位置点,否则,不返回。
2.根据权利要求1所述的基于geohash与B-Tree的空间关键词查询方法,其特征在于:所述步骤110,包括下列步骤111、112:
步骤111:根据geohash精度表确定geohash编码长度n;
步骤112:通过geohash空间编码方法将所有位置点编码成长度为n的字符串。
3.根据权利要求1或2所述的基于geohash与B-Tree的空间关键词查询方法,其特征在于:通过geohash空间编码方法将位置点编码成字符串,具体为:首先,将经纬度范围看作二维平面坐标系;然后,采用二分法对经度/纬度进行划分,根据位置点经度/纬度在划分结果中的位置分别赋值0或1,直到划分次数满足对应的经/纬度位串的位数;之后,通过位交错方法合并经度位串与纬度位串;最后,通过Base32编码将经纬度位串编码为相应长度的字符串。
4.根据权利要求3所述的基于geohash与B-Tree的空间关键词查询方法,其特征在于:所述步骤310中,获取qs周围8个区域的geohash编码的方法:根据qs的经纬度位串,东/西方向的区域编码:经度位串不变,纬度位串加/减1,通过位交错方法得到该区域的经纬度位串;南/北方向的区域编码:纬度位串不变,经度位串减/加1,通过位交错方法得到该区域的经纬度位串;东北/西南方向的区域编码,经纬度位串均加/减1,通过位交错方法得到该区域的经纬度位串;东南方向的区域编码:纬度位串加1,经度位串减1,通过位交错方法得到该区域的经纬度位串;西北方向的区域编码:纬度位串减1,经度位串加1,通过位交错方法得到该区域的经纬度位串;之后,通过Base32编码将8个方向位串进行编码即可获得qs周围8个区域的geohash编码。
5.根据权利要求3所述的基于geohash与B-Tree的空间关键词查询方法,其特征在于:所述步骤320具体为:
步骤321:对于任一查询域,根据检索B-Tree返回的id,在R中以此id为起始点向上向下双向搜索至不满足域查询条件,返回满足域查询条件的flag集;其中,域查询条件指R中string的前p位与查询域的geohash编码相同;
步骤322:根据步骤321返回的flag分别检索域-关键词倒排索引结构,对于任一flag,首先根据flag选取待检索的倒排列表,然后分别获取包含查询关键词的id列表,并求交集,即为该flag所标识区域内满足查询条件的id;据前述方法分别获取每个flag所标识区域内满足查询条件的id,之后求并集,即为该查询域内满足查询条件的id;
据步骤321与322所述方法,分别获取查询域内满足查询条件的id,之后求并集,即为9个查询域内满足查询条件的id。
6.根据权利要求3所述的基于geohash与B-Tree的空间关键词查询方法,其特征在于:所述步骤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)。
7.一种基于geohash与B-Tree的空间关键词查询装置,其特征在于:包括:
数据预处理装置,用于将数据集D中所有位置点编码成长度为n的字符串string,以string为排序对象按字典序对数据集D中的每行数据排序并生成编号id、标识flag,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,flag为string的唯一标识,用整形表示;
空间关键词索引建立装置,用于对string构建B-Tree;对记录集R中的flag建立倒排索引,其列表元素为关键词及与其相对应的id列表,得到域-关键词倒排索引结构;
空间关键词查询装置,用于检索B-Tree与域-关键词倒排索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点;
所述空间关键词索引建立装置,具体为:
用于对Rstr构建B-Tree,每个结点至少存储1个<string,id>;其中,Rstr表示R中所有string且保持其顺序性;
用于对Rf中每个独立元素flagi,构建倒排索引,并对Rpart中每个独立元素item,构建一个由包含item的rpart.id组成的倒排列表;其中,Rf表示R中flag集,r∈R;rpart由R中包含flagi的r.id与r.items组成,r.id表示r的id,r.items表示r的关键词集,Rpart表示由一至多行rpart组成的数据集;
所述数据预处理装置,具体包括如下:
用于给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将数据集D中的位置点编码成长度为n的字符串string;其中,位置点由纬度、经度数据构成;string即geohash编码,表示geohash精度表中n对应的范围区域;
用于以string为排序对象按字典序对数据集D中的每行数据排序并生成编号id、标识flag,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,R中每行数据r由id、纬度lat、经度lon、字符串string、关键词集items、string标识flag组成,items至少包含一个关键词item;
所述空间关键词查询装置,具体包括如下:
用于给定查询位置点q、查询距离范围d、查询关键词集qitems,根据geohash精度表选定与d相对应的geohash编码长度p,通过geohash空间编码方法将位置点q编码为p位长度的字符串qs,获取字符串qs周围8个区域的geohash编码,并将字符串qs及其周围8个区域的geohash编码分别作为查询域,共9个查询域;其中,p对应的距离误差不小于d且为最小值;qitems至少由一个关键词item构成;
用于检索B-Tree与域-关键词倒排索引结构返回满足查询条件的id;其中,查询条件指查询域内包含全部qitems的id;
用于根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围,根据经纬度范围对与步骤320返回的id相对应的位置点进行筛选,最终得到id候选集;
用于计算候选集中id对应的位置点到q的距离dq:若dq≤d,则返回该位置点,否则,不返回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810420942.3A CN108776667B (zh) | 2018-05-04 | 2018-05-04 | 一种基于geohash与B-Tree的空间关键词查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810420942.3A CN108776667B (zh) | 2018-05-04 | 2018-05-04 | 一种基于geohash与B-Tree的空间关键词查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108776667A CN108776667A (zh) | 2018-11-09 |
CN108776667B true CN108776667B (zh) | 2022-10-21 |
Family
ID=64027053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810420942.3A Active CN108776667B (zh) | 2018-05-04 | 2018-05-04 | 一种基于geohash与B-Tree的空间关键词查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108776667B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111353008B (zh) * | 2019-12-26 | 2023-07-25 | 中科星图股份有限公司 | 一种北斗位置流数据实时空间聚合方法 |
CN113158087A (zh) * | 2021-04-09 | 2021-07-23 | 深圳前海微众银行股份有限公司 | 一种空间文本的查询方法及装置 |
CN113342283A (zh) * | 2021-06-29 | 2021-09-03 | 招商局金融科技有限公司 | 用户位置信息存储方法、装置、电子设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104376112A (zh) * | 2014-11-27 | 2015-02-25 | 苏州大学 | 一种路网上空间关键字检索的方法 |
CN105404675A (zh) * | 2015-11-20 | 2016-03-16 | 苏州大学 | Ranked反近邻空间关键字查询方法及装置 |
CN107391636A (zh) * | 2017-07-10 | 2017-11-24 | 江苏省现代企业信息化应用支撑软件工程技术研发中心 | top‑m反近邻空间关键字查询方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2005246368A1 (en) * | 2004-05-19 | 2005-12-01 | Metacarta, Inc. | Systems and methods of geographical text indexing |
CN104572645B (zh) * | 2013-10-11 | 2020-07-10 | 阿里巴巴(中国)有限公司 | 兴趣点数据关联方法及装置 |
CN105868336B (zh) * | 2016-03-28 | 2019-11-29 | 哈尔滨工程大学 | 路网中面向集合的空间关键词查询方法 |
CN107798054B (zh) * | 2017-09-04 | 2021-06-18 | 昆明理工大学 | 一种基于Trie的范围查询方法及装置 |
CN107766433B (zh) * | 2017-09-19 | 2021-05-14 | 昆明理工大学 | 一种基于Geo-BTree的范围查询方法及装置 |
-
2018
- 2018-05-04 CN CN201810420942.3A patent/CN108776667B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104376112A (zh) * | 2014-11-27 | 2015-02-25 | 苏州大学 | 一种路网上空间关键字检索的方法 |
CN105404675A (zh) * | 2015-11-20 | 2016-03-16 | 苏州大学 | Ranked反近邻空间关键字查询方法及装置 |
CN107391636A (zh) * | 2017-07-10 | 2017-11-24 | 江苏省现代企业信息化应用支撑软件工程技术研发中心 | top‑m反近邻空间关键字查询方法 |
Non-Patent Citations (2)
Title |
---|
Hybrid index structures for location-based web search;Zhou YH 等;《In:Proc. of the CIKM.》;20051031;155-162 * |
空间关键词搜索研究综述;刘喜平 等;《软件学报》;20151104;第27卷(第02期);329-347 * |
Also Published As
Publication number | Publication date |
---|---|
CN108776667A (zh) | 2018-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108846013B (zh) | 一种基于geohash与Patricia Trie的空间关键词查询方法及装置 | |
CN107798054B (zh) | 一种基于Trie的范围查询方法及装置 | |
CN108776666B (zh) | 一种基于关键词倒排与Trie的空间关键词查询方法及装置 | |
CN108776667B (zh) | 一种基于geohash与B-Tree的空间关键词查询方法及装置 | |
CN103150309B (zh) | 一种空间方向感知地图兴趣点搜索方法和系统 | |
CN107766433B (zh) | 一种基于Geo-BTree的范围查询方法及装置 | |
CN100523735C (zh) | 一种基于小网格路网组织结构的快速地图匹配方法 | |
CN107133700A (zh) | 基于R*‑tree索引的手机信令数据路网匹配方法 | |
CN104881472B (zh) | 一种基于网络数据收集的旅游线路景点组合推荐方法 | |
US20150356088A1 (en) | Tile-based geocoder | |
CN104376112B (zh) | 一种路网上空间关键字检索的方法 | |
EP2179385A2 (en) | Routing methods for multiple geographical entities | |
KR20090028706A (ko) | 가변 압축을 구비한 적응적인 인덱스 상의 최접근 탐색 | |
CN104899647A (zh) | 城市物流配送地名地址系统 | |
CN109885638B (zh) | 一种三维立体空间索引方法及系统 | |
CN105843948B (zh) | 一种移动环境下基于索引技术的景点智能推荐方法 | |
Yun et al. | Exploring the Distribution of Gardens in Suzhou City in the Qianlong Period through a Space Syntax Approach | |
CN108628950B (zh) | 一种基于文本-域倒排的空间文本查询方法及装置 | |
CN110096564A (zh) | 一种基于bim+gis的路线点定位方法、装置及系统 | |
CN108874880B (zh) | 一种基于Trie的空间关键词查询方法及装置 | |
CN103593409A (zh) | 实时数据库检索方法及检索系统 | |
Rashid et al. | The dialectics of functional and historical morphology in the evolution of a city: the case of the Stone Town of Zanzibar | |
CN113139065B (zh) | 一种融合地理知识的混合知识图谱构建方法 | |
CN112269845B (zh) | 面向异源数据的电子道路地图与公交线路的快速匹配方法 | |
CN101894302A (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 |