CN108776666B - 一种基于关键词倒排与Trie的空间关键词查询方法及装置 - Google Patents
一种基于关键词倒排与Trie的空间关键词查询方法及装置 Download PDFInfo
- Publication number
- CN108776666B CN108776666B CN201810420941.9A CN201810420941A CN108776666B CN 108776666 B CN108776666 B CN 108776666B CN 201810420941 A CN201810420941 A CN 201810420941A CN 108776666 B CN108776666 B CN 108776666B
- Authority
- CN
- China
- Prior art keywords
- query
- keyword
- trie
- 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
本发明涉及一种基于关键词倒排与Trie的空间关键词查询方法及装置,本发明方法包括:数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串,以该字符串为排序对象按字典序对数据集D中每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;空间关键词索引建立步骤,对记录集R中关键词集建立倒排索引,之后,对任一关键词所属id对应的字符串构建Trie,得到关键词倒排与Trie组合的索引结构;空间关键词查询步骤,检索关键词倒排与Trie组合的索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。本发明可高效支持任意空间范围的关键词查询。
Description
技术领域
本发明涉及一种基于关键词倒排与Trie的空间关键词查询方法及装置,属于空间关键词查询(Spatial Keyword query)领域、基于位置的服务(Location-Based Service,LBS)等领域。
背景技术
近年来,随着智能手机、平板电脑等移动设备的普及,基于桌面的互联网时代已转向移动互联网时代。与此同时,随着定位技术的快速发展,如:GNSS、GPS、3G/4G等,导致产生了大量基于位置的服务。这些服务产生了大量具有位置属性的文本数据,即空间文本,如何从这些数据中快速获取所需信息是空间文本查询领域的核心问题。根据应用场景,空间文本查询可分为空间关键词查询与分发/订阅查询。
为高效支持空间关键词查询则需高效的空间文本索引结构。目前,国内外对空间文本索引结构进行了广泛而又深入的研究,这些索引结构通常组合空间索引结构与文本索引结构。根据所采用的空间索引结构的不同,可将其分为:基于R-Tree及其变体、grid/Quad-Tree、space-filling curve的空间文本索引;根据所采用的文本索引结构,可将其分为:基于倒排列表与签名文件的空间文本索引。空间索引与文本索引的组合方式分为:独立组合、松散组合、紧凑组合。据空间文本查询领域国内外研究现状可知,R-Tree及其变体与倒排索引组合的索引结构是主流的空间文本索引结构。R-Tree的变体以面积最小原则、重叠区域最小原则、周长最小原则和存储利用率较高原则为导向对R-Tree进行优化,但检索效率仍受R-Tree多路径查询问题的制约。
发明内容
为高效支持任意空间范围的关键词查询,本发明提供了一种基于关键词倒排与Trie的空间关键词查询方法及装置。
本发明的技术方案是:一种基于关键词倒排与Trie的空间关键词查询方法,包括:
数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串,以该字符串为排序对象按字典序对数据集D中每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间关键词索引建立步骤,对记录集R中关键词集建立倒排索引,之后,对任一关键词所属id对应的字符串构建Trie,得到关键词倒排与Trie组合的索引结构;
空间关键词查询步骤,检索关键词倒排与Trie组合的索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将数据集D中的位置点编码成长度为n的字符串string;其中,位置点由纬度、经度数据构成;其中,string即geohash编码,表示geohash精度表中n对应的范围区域,
步骤120:以string为排序对象按字典序对数据集D中每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,R中每行数据r由id、纬度lat、经度lon、字符串string、关键词集items组成,items至少包含一个关键词item。
所述空间关键词索引建立步骤,具体为:
步骤210:对Ritems中每个独立元素itemi,构建倒排索引;其中,Ritems表示R中全部关键词,itemi表示Ritems中第i个关键词;
步骤220:对Rstr构建Trie索引结构,Rstr中的每个字符串可映射为Trie中一条从根到叶节点的路径,Trie节点存储Rpart中rpart.string的前m位等于spre的起始id与id个数;其中,Rpart表示由一至多行rpart组成的记录集,rpart表示R中包含itemi的r.id、r.string组成,r.id表示r的id,r.string表示r的字符串,Rstr表示Rpart中所有字符串且保持其顺序性,spre指从根节点到当前节点构成的字符串,m表示spre的长度,rpart.string表示rpart的string;
步骤230:列表list按序存储Rpart中包含于关键词集items的每个独立元素itemi对应的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:检索关键词倒排与Trie组合的索引结构返回满足查询条件的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:根据qitems检索关键词倒排与Trie组合的索引结构,选取与qitem连接的Trie;其中qitemÎqitems;
步骤322:以与任一查询关键词相连接的Trie为例,根据geohash编码检索Trie返回的起始id顺序检索list列表至返回由s个id组成的集合Sid,即为包含该查询关键词且在查询域内的id,Trie均被检索后,对所有Sid求交集,即为该查询域内满足查询条件的id;其中,s指根据geohash编码检索Trie返回的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)。
一种基于Trie的空间关键词查询装置,包括:
数据预处理装置,用于将数据集D中所有位置点编码成长度为n的字符串,以该字符串为排序对象按字典序对数据集D中每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间关键词索引建立装置,用于对记录集R中关键词集建立倒排索引,之后,对任一关键词所属id对应的字符串构建Trie,得到关键词倒排与Trie组合的索引结构;
空间关键词查询装置,用于检索关键词倒排与Trie组合的索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
本发明的有益效果是:本发明可高效支持任意空间范围的关键词查询;通过空间关键词索引结构可高效支持美团外卖等LBS提供的附近兴趣点(餐饮店、公园等)查询功能,同时,存储空间开销较低;避免了R-Tree及其变体因存在多条查询路径导致的检索低效问题;无缝融合分布式并行计算框架。
附图说明
图1是基于关键词倒排与Trie的空间关键词查询功能模块图;
图2是geohash精度表;
图3是Base32编码规则图;(注:(+ / -)表示加减);
图4是位置点转换为字符串图;
图5是记录集排序图;
图6是关键词倒排与Trie索引结构图;
图7是由包含关键词“historicalSite”的id构成的列表图。
具体实施方式
实施例1:如图1-图7所示,一种基于关键词倒排与Trie的空间关键词查询方法,包括
数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串,以该字符串为排序对象按字典序对数据集D中每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间关键词索引建立步骤,对记录集R中关键词集建立倒排索引,之后,对任一关键词所属id对应的字符串构建Trie,得到关键词倒排与Trie组合的索引结构;
空间关键词查询步骤,检索关键词倒排与Trie组合的索引结构,获取满足查询条件的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,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,R中每行数据r由id、纬度(lat)、经度(lon)、字符串(string)、关键词集(items)组成,items至少包含一个item。
进一步地,可以设置所述空间关键词索引建立步骤,具体为:
步骤210:对Ritems中每个独立元素itemi,构建倒排索引;其中,Ritems表示R中全部关键词,itemi表示Ritems中第i个关键词;
步骤220:对Rstr构建Trie索引结构,Rstr中的每个字符串可映射为Trie中一条从根到叶节点的路径,Trie节点存储Rpart中rpart.string的前m位等于spre的起始id与id个数;其中,Rpart表示由一至多行rpart组成的记录集,rpart表示R中包含itemi的r.id、r.string组成,r.id表示r的id,r.string表示r的字符串,Rstr表示Rpart中所有字符串且保持其顺序性,spre指从根节点到当前节点构成的字符串,m表示spre的长度,rpart.string表示rpart的string;
步骤230:列表list按序存储Rpart中包含于关键词集items的每个独立元素itemi对应的id。
关键词倒排与Trie组合的索引结构略图(如图6所示),图示以关键词“historicalSite”为例,指向R中由包含该关键词的所有id对应的字符串构建的Trie,Trie节点存储Rpart中包含该前缀的起始id与长度信息;由包含关键词“historicalSite”组成的列表list如图7所示。
进一步地,可以设置所述空间关键词查询步骤,具体包括如下步骤:
步骤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编码为9g3rnz;
西南区域的geohash编码:纬度位串为100110111101111-1=100110111101110,经度位串为001110010111000-1=001110010110111,经纬度位串为
010010111100011101111001111110,geohash编码为9g3rny;
西方区域的geohash编码:纬度位串为100110111101111-1=100110111101110,经度位为001110010111000,经纬度位串为010010111100011101111011010100,geohash编码为9g3rqn;
西北区域的geohash编码:纬度位串为100110111101111-1=100110111101110,经度位串为001110010111000+1=001110010111001,经纬度位串为
010010111100011101111011010110,geohash编码为9g3rqq。
9g3rqp周围的8个区域为:9g3rqr、9g3rw2、9g3rw0、9g3rtb、9g3rnz、9g3rny、9g3rqn、9g3rqq;
步骤320:检索关键词倒排与Trie组合的索引结构返回满足查询条件的id;其中,查询条件指查询域内包含全部qitems的id;进一步地,可以设置所述步骤320,具体包括步骤321、步骤322:
步骤321:根据查询关键词集{historicalSite,garden}检索关键词倒排与Trie组合的索引结构,分别选取与关键词“historicalSite”、“garden”连接的Trie;
步骤322:以与任一查询关键词相连接的Trie为例,根据geohash编码检索Trie返回的起始id顺序检索list列表至返回由s个id组成的集合Sid,即为包含该查询关键词且在查询域内的id,Trie均被检索后,对所有Sid求交集,即为该查询域内满足查询条件的id;其中,s指根据geohash编码检索Trie返回的id个数;据前述方法,分别获取9个查询域内满足查询条件的id,之后求并集。
以与查询关键词“historicalSite”相连接的Trie为例,“9g3rqp”为查询域,根据“9g3rqp”检索Trie返回的起始id为15,id个数为4,根据起始id“15”顺序检索list列表(图7)至返回由4个id组成的集合Sid{15,16,18,21},即为包含查询关键词“historicalSite”且在查询域“9g3rqp”内的id;据前述方法,针对查询关键词“garden”,Sid为{15,16,18,21},即为包含查询关键词“garden”且在查询域“9g3rqp”内的id;对所有Sid求交集,即为9g3rqp查询域内满足查询条件的id{15,16,18,21}。
由上述方法可得,9个查询域内满足查询条件的id为:{9,11,15,16,18,21,27}。
步骤330、根据查询位置点(19.596412 -99.219501)和查询距离范围500n确定纬度范围与经度范围,如下所示:
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}}。
一种基于Trie的空间关键词查询装置,包括:
数据预处理装置,用于将数据集D中所有位置点编码成长度为n的字符串,以该字符串为排序对象按字典序对数据集D中每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间关键词索引建立装置,用于对记录集R中关键词集建立倒排索引,之后,对任一关键词所属id对应的字符串构建Trie,得到关键词倒排与Trie组合的索引结构;
空间关键词查询装置,用于检索关键词倒排与Trie组合的索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
上面结合图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (9)
1.一种基于关键词倒排与Trie的空间关键词查询方法,其特征在于:包括:
数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串,以该字符串为排序对象按字典序对数据集D中每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间关键词索引建立步骤,对记录集R中关键词集建立倒排索引,之后,对任一关键词所属id对应的字符串构建Trie,得到关键词倒排与Trie组合的索引结构;
空间关键词查询步骤,检索关键词倒排与Trie组合的索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点;
所述空间关键词索引建立步骤,具体为:
步骤210:对Ritems中每个独立元素itemi,构建倒排索引;其中,Ritems表示R中全部关键词,itemi表示Ritems中第i个关键词;
步骤220:对Rstr构建Trie索引结构,Rstr中的每个字符串可映射为Trie中一条从根到叶节点的路径,Trie节点存储Rpart中rpart.string的前m位等于spre的起始id与id个数;其中,Rpart表示由一至多行rpart组成的记录集,rpart表示R中包含itemi的r.id、r.string组成,r.id表示r的id,r.string表示r的字符串,Rstr表示Rpart中所有字符串且保持其顺序性,spre指从根节点到当前节点构成的字符串,m表示spre的长度,rpart.string表示rpart的string;
步骤230:列表list按序存储Rpart中包含于关键词集items的每个独立元素itemi对应的id。
2.根据权利要求1所述的基于关键词倒排与Trie的空间关键词查询方法,其特征在于:所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将数据集D中的位置点编码成长度为n的字符串string;其中,位置点由纬度、经度数据构成;其中,string即geohash编码,表示geohash精度表中n对应的范围区域,
步骤120:以string为排序对象按字典序对数据集D中每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,R中每行数据r由id、纬度lat、经度lon、字符串string、关键词集items组成,items至少包含一个关键词item。
3.根据权利要求1所述的基于关键词倒排与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:检索关键词倒排与Trie组合的索引结构返回满足查询条件的id;其中,查询条件指查询域内包含全部qitems的id;
步骤330:根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围,根据经纬度范围对与步骤320返回的id相对应的位置点进行筛选,最终得到id候选集;
步骤340:计算候选集中id对应的位置点到q的距离dq:若dq≤d,则返回该位置点,否则,不返回。
4.根据权利要求2所述的基于关键词倒排与Trie的空间关键词查询方法,其特征在于:所述步骤110,包括下列步骤111、112:
步骤111:根据geohash精度表确定geohash编码长度n;
步骤112:通过geohash空间编码方法将所有位置点编码成长度为n的字符串。
5.根据权利要求2或3所述的基于关键词倒排与Trie的空间关键词查询方法,其特征在于:通过geohash空间编码方法将位置点编码成字符串,具体为:首先,将经纬度范围看作二维平面坐标系;然后,采用二分法对经度/纬度进行划分,根据位置点经度/纬度在划分结果中的位置分别赋值0或1,直到划分次数满足对应的经/纬度位串的位数;之后,通过位交错方法合并经度位串与纬度位串;最后,通过Base32编码将经纬度位串编码为相应长度的字符串。
6.根据权利要求3所述的基于关键词倒排与Trie的空间关键词查询方法,其特征在于:所述步骤310中,获取qs周围8个区域的geohash编码的方法:根据qs的经纬度位串,东/西方向的区域编码:经度位串不变,纬度位串加/减1,通过位交错方法得到该区域的经纬度位串;南/北方向的区域编码:纬度位串不变,经度位串减/加1,通过位交错方法得到该区域的经纬度位串;东北/西南方向的区域编码,经纬度位串均加/减1,通过位交错方法得到该区域的经纬度位串;东南方向的区域编码:纬度位串加1,经度位串减1,通过位交错方法得到该区域的经纬度位串;西北方向的区域编码:纬度位串减1,经度位串加1,通过位交错方法得到该区域的经纬度位串;之后,通过Base32编码将以上8个位串进行编码即可获得qs周围8个区域的geohash编码。
7.根据权利要求3所述的基于关键词倒排与Trie的空间关键词查询方法,其特征在于:所述步骤320具体为:
步骤321:根据qitems检索关键词倒排与Trie组合的索引结构,选取与qitem连接的Trie;其中qitem∈qitems;
步骤322:以与任一查询关键词相连接的Trie为例,根据geohash编码检索Trie返回的起始id顺序检索list列表至返回由s个id组成的集合Sid,即为包含该查询关键词且在查询域内的id,Trie均被检索后,对所有Sid求交集,即为该查询域内满足查询条件的id;其中,s指根据geohash编码检索Trie返回的id个数;据前述方法,分别获取9个查询域内满足查询条件的id,之后求并集。
8.根据权利要求3所述的基于关键词倒排与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)。
9.一种基于Trie的空间关键词查询装置,其特征在于:包括:
数据预处理装置,用于将数据集D中所有位置点编码成长度为n的字符串,以该字符串为排序对象按字典序对数据集D中每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间关键词索引建立装置,用于对记录集R中关键词集建立倒排索引,之后,对任一关键词所属id对应的字符串构建Trie,得到关键词倒排与Trie组合的索引结构;
空间关键词查询装置,用于检索关键词倒排与Trie组合的索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点;
所述空间关键词索引建立装置,具体为:
对Ritems中每个独立元素itemi,构建倒排索引;其中,Ritems表示R中全部关键词,itemi表示Ritems中第i个关键词;
对Rstr构建Trie索引结构,Rstr中的每个字符串可映射为Trie中一条从根到叶节点的路径,Trie节点存储Rpart中rpart.string的前m位等于spre的起始id与id个数;其中,Rpart表示由一至多行rpart组成的记录集,rpart表示R中包含itemi的r.id、r.string组成,r.id表示r的id,r.string表示r的字符串,Rstr表示Rpart中所有字符串且保持其顺序性,spre指从根节点到当前节点构成的字符串,m表示spre的长度,rpart.string表示rpart的string;
列表list按序存储Rpart中包含于关键词集items的每个独立元素itemi对应的id。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810420941.9A CN108776666B (zh) | 2018-05-04 | 2018-05-04 | 一种基于关键词倒排与Trie的空间关键词查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810420941.9A CN108776666B (zh) | 2018-05-04 | 2018-05-04 | 一种基于关键词倒排与Trie的空间关键词查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108776666A CN108776666A (zh) | 2018-11-09 |
CN108776666B true CN108776666B (zh) | 2022-05-20 |
Family
ID=64027057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810420941.9A Active CN108776666B (zh) | 2018-05-04 | 2018-05-04 | 一种基于关键词倒排与Trie的空间关键词查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108776666B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992590B (zh) * | 2019-03-11 | 2021-06-29 | 中南民族大学 | 交通网络中带数字属性的近似空间关键字查询方法及系统 |
CN111475599A (zh) * | 2019-06-28 | 2020-07-31 | 国网江苏省电力有限公司 | 一种基于倒排文本的带关系属性的空间查询优化方法 |
CN111078807B (zh) * | 2019-10-12 | 2023-10-24 | 平安科技(深圳)有限公司 | 位置查询方法、装置、计算机设备及存储介质 |
CN111026978A (zh) * | 2019-10-14 | 2020-04-17 | 平安科技(深圳)有限公司 | 位置查询方法、装置、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572645A (zh) * | 2013-10-11 | 2015-04-29 | 高德软件有限公司 | 兴趣点数据关联方法及装置 |
CN107766433A (zh) * | 2017-09-19 | 2018-03-06 | 昆明理工大学 | 一种基于Geo‑BTree的范围查询方法及装置 |
CN107798054A (zh) * | 2017-09-04 | 2018-03-13 | 昆明理工大学 | 一种基于Trie的范围查询方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8930391B2 (en) * | 2010-12-29 | 2015-01-06 | Microsoft Corporation | Progressive spatial searching using augmented structures |
-
2018
- 2018-05-04 CN CN201810420941.9A patent/CN108776666B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572645A (zh) * | 2013-10-11 | 2015-04-29 | 高德软件有限公司 | 兴趣点数据关联方法及装置 |
CN107798054A (zh) * | 2017-09-04 | 2018-03-13 | 昆明理工大学 | 一种基于Trie的范围查询方法及装置 |
CN107766433A (zh) * | 2017-09-19 | 2018-03-06 | 昆明理工大学 | 一种基于Geo‑BTree的范围查询方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108776666A (zh) | 2018-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108846013B (zh) | 一种基于geohash与Patricia Trie的空间关键词查询方法及装置 | |
CN108776666B (zh) | 一种基于关键词倒排与Trie的空间关键词查询方法及装置 | |
CN107798054B (zh) | 一种基于Trie的范围查询方法及装置 | |
CN107766433B (zh) | 一种基于Geo-BTree的范围查询方法及装置 | |
US9430510B2 (en) | Computer implemented methods and systems for multi-level geographic query | |
CN110110020B (zh) | 用于标识和传送位置的方法和装置 | |
US7606687B2 (en) | Proximity search methods using tiles to represent geographical zones | |
CN102867004B (zh) | 一种地址匹配的方法及设备 | |
CN103927933B (zh) | 一种海量移动目标渲染的方法及装置 | |
CN104881472B (zh) | 一种基于网络数据收集的旅游线路景点组合推荐方法 | |
WO2018104207A1 (en) | Encoding scheme for geographic position data | |
KR20090028706A (ko) | 가변 압축을 구비한 적응적인 인덱스 상의 최접근 탐색 | |
CN107463585B (zh) | 指纹数据入库处理方法及装置 | |
CN104899647A (zh) | 城市物流配送地名地址系统 | |
CN111026978A (zh) | 位置查询方法、装置、计算机设备及存储介质 | |
CN103324749B (zh) | 一种基于标准文本地址的空间化解析及纠偏方法 | |
Shao et al. | Trip planning queries in indoor venues | |
CN108776667B (zh) | 一种基于geohash与B-Tree的空间关键词查询方法及装置 | |
CN109885638B (zh) | 一种三维立体空间索引方法及系统 | |
CN105843948B (zh) | 一种移动环境下基于索引技术的景点智能推荐方法 | |
CN108628950B (zh) | 一种基于文本-域倒排的空间文本查询方法及装置 | |
CN111078806B (zh) | 位置查询方法、装置、计算机设备及存储介质 | |
CN108874880B (zh) | 一种基于Trie的空间关键词查询方法及装置 | |
CN111506576A (zh) | 一种基于区域四叉树的地块编码方法及装置 | |
CN116630564B (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 |