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

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

Info

Publication number
CN108874880A
CN108874880A CN201810419804.3A CN201810419804A CN108874880A CN 108874880 A CN108874880 A CN 108874880A CN 201810419804 A CN201810419804 A CN 201810419804A CN 108874880 A CN108874880 A CN 108874880A
Authority
CN
China
Prior art keywords
geostr
longitude
latitude
keyword
trie
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
CN201810419804.3A
Other languages
English (en)
Other versions
CN108874880B (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 CN201810419804.3A priority Critical patent/CN108874880B/zh
Publication of CN108874880A publication Critical patent/CN108874880A/zh
Application granted granted Critical
Publication of CN108874880B publication Critical patent/CN108874880B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种基于Trie的空间关键词查询方法及装置
技术领域
本发明涉及一种基于Trie的空间关键词查询方法及装置,属于空间关键词查询(Spatial Keyword query)领域、基于位置的服务(Location-Based Service,LBS)等领域。
背景技术
近年来,随着移动设备的普及、定位技术的快速发展,导致产生了大量基于位置的服务,如导航服务(高德地图、百度地图、腾讯地图等)根据当前的交通状态实时为用户推荐到达目的地的最优路线;社交服务(如:Foursquare、Twitter、微信、陌陌等)允许用户共享自己的地理位置并添加相应描述信息供其他用户参考;食住服务(如:美团外卖、饿了么、去哪儿、携程等)允许用户查询附近兴趣点;娱乐服务(如:Wikitude、全城热斗等)为用户提供更逼真的游戏环境。这些LBS服务产生了大量具有位置属性的文本数据,即空间文本。面对这样的发展趋势,高效支持空间文本查询亟需高效的空间文本索引结构。根据应用场景,空间文本查询可分为空间关键词查询与分发/订阅查询。
目前,国内外对空间文本索引结构进行了广泛而又深入的研究,这些索引结构通常组合空间索引结构与文本索引结构。根据所采用的空间索引结构的不同,可将其分为:基于R-Tree及其变体、grid/Quad-Tree、space-filling curve的空间文本索引;根据所采用的文本索引结构,可将其分为:基于倒排列表与签名文件的空间文本索引。空间索引与文本索引的组合方式分为:独立组合、松散组合、紧凑组合。据空间关键词查询领域国内外研究现状可知,R-Tree及其变体与倒排索引组合的索引结构是主流的空间文本索引结构。R-Tree的变体以面积最小原则、重叠区域最小原则、周长最小原则和存储利用率较高原则为导向对R-Tree进行优化,但检索效率仍受R-Tree多路径查询问题的制约。
发明内容
为高效支持任意空间范围的关键词查询,本发明提供了一种基于Trie的空间关键词查询方法及装置。
本发明的技术方案是:一种基于Trie的空间关键词查询方法,包括:
数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串geoStr,根据字符串geoStr后缀ssuf按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中ssuf指字符串geoStr的后n-m位字符,m≤n,m表示字符串geoStr前缀部分的位数;
空间关键词索引建立步骤,对字符串前缀spre构建Trie,Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的geoStr前缀sprei,sprei指第i个字符串geoStr的前m位字符,spre指字符串geoStr的前m位字符;
空间关键词查询步骤,检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将数据集D中的位置点编码成长度为n的字符串geoStr;其中,位置点由纬度、经度数据构成;其中geoStr即geohash编码,表示geohash精度表中n对应的范围区域,
步骤120:将每一个geoStr分为m位前缀部分spre和n-m位后缀部分ssuf,根据ssuf按字典序对数据集D中每行数据排序并编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,R中每行数据r由id、纬度lat、经度lon、字符串geoStr、关键词集items组成,items至少包含一个关键词item。
所述空间关键词索引建立步骤,具体为:
步骤210:对Rspre构建Trie索引结构,每个spre可映射为Trie中一条从根到叶节点的路径,叶节点指向根据该域内关键词构建的倒排索引;其中,Rspre表示R中所有spre,spre可称为该叶节点的前缀,该域指从根节点到叶节点所构成的前缀sprei,i表示Rspre中第i个字符串;
步骤220:对Ritems中每个独立元素item,构建一个由包含item的rpart.id组成的倒排列表;其中,rpart表示R中r.geoStr的前m位等于sprei的r.id、r.items,r.geoStr表示r的geoStr,r.id表示r的id,r.items表示r的关键词集,Rpart表示由一至多行rpart组成的数据集,Ritems表示Rpart中全部关键词,rpart.id表示rpart的id;
步骤230:对Rsuf构建geoStr后缀ssuf与id的映射表;其中,Rsuf表示R中所有ssuf。
所述空间关键词查询步骤,具体包括如下步骤:
步骤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:若d>d1,根据geohash编码检索Trie选取待检索的倒排列表;反之,若d≤d1,根据geohash编码前m位检索Trie选取待检索的倒排列表;
步骤322:若d>d1,检索步骤321选取的倒排列表,分别获取包含查询关键词的id列表,并求交集,即为该查询域内满足查询条件的id;反之,若d≤d1,检索步骤321选取的倒排列表,分别获取包含查询关键词的id列表,求交集得到集合Sid,之后检索映射表,返回满足匹配条件的id列表,与Sid求交集,即为该查询域内满足查询条件的id;其中,匹配条件指SufStr等于geohash编码末尾p-m位,SufStr表示映射表中后缀ssuf的前p-m位;
据上述方法分别获取每个查询域内满足查询条件的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的字符串geoStr,根据字符串geoStr后缀ssuf按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中ssuf指字符串geoStr的后n-m位字符,m≤n,m表示字符串geoStr前缀部分的位数;
空间关键词索引建立装置,用于对字符串前缀spre构建Trie,Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的geoStr前缀sprei,sprei指第i个字符串geoStr的前m位字符,spre指字符串geoStr的前m位字符;
空间关键词查询装置,用于检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
本发明的有益效果是:本发明可高效支持任意空间范围的关键词查询;通过空间关键词索引结构可高效支持美团外卖等LBS提供的附近兴趣点(餐饮店、公园等)查询功能,同时,存储空间开销较低;避免了R-Tree的多路径查询问题;无缝融合分布式并行计算框架。
附图说明
图1是基于Trie的空间关键词查询功能模块图;
图2是geohash精度表;
图3是Base32编码规则图;(注:(+ / -)表示加减);
图4是位置点转换为字符串图;
图5是据字符串后缀排序记录集图;
图6是Trie与关键词倒排组合图;
图7是字符串后缀与id的映射图。
具体实施方式
实施例1:如图1-图7所示,一种基于Trie的空间关键词查询方法,包括:数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串geoStr,根据字符串geoStr后缀ssuf按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中ssuf指字符串geoStr的后n-m位字符,m≤n,m表示字符串geoStr前缀部分的位数;
空间关键词索引建立步骤,对字符串前缀spre构建Trie,Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的geoStr前缀sprei,sprei指第i个字符串geoStr的前m位字符,spre指字符串geoStr的前m位字符;
空间关键词查询步骤,检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
进一步地,可以设置所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将D中的位置点编码成长度为n的字符串geoStr;其中,位置点由纬度、经度数据构成,表示POI(如:餐馆、酒店、公园等)的地理坐标,关键词集表示POI的文本属性(如:含名胜古迹的公园);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分为m位前缀部分spre和n-m位后缀部分ssuf,根据ssuf按字典序对D中每行数据排序并编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;将m值设置为“5”,如图5所示;其中,m≤n;R中每行数据r由id、纬度(lat)、经度(lon)、字符串(geoStr)、关键词集(items)组成,items至少包含一个item;spre与ssuf亦表示区域。
进一步地,可以设置所述空间关键词索引建立步骤,具体为:
步骤210:对Rspre构建Trie索引结构,每个spre可映射为Trie中一条从根到叶节点的路径,叶节点指向根据该域内关键词构建的倒排索引;其中,Rspre表示R中所有spre,spre可称为该叶节点的前缀,该域指从根节点到叶节点所构成的前缀sprei,i表示Rspre中第i个字符串;
步骤220:对Ritems中每个独立元素item,构建一个由包含item的rpart.id组成的倒排列表;其中,rpart表示R中r.geoStr的前m位等于sprei的r.id、r.items,r.geoStr表示r的geoStr,r.id表示r的id,r.items表示r的关键词集,Rpart表示由一至多行rpart组成的数据集,Ritems表示Rpart中全部关键词,rpart.id表示rpart的id;
步骤230:对Rsuf构建geoStr后缀ssuf与id的映射表;其中,Rsuf表示R中所有ssuf。
根据步骤210、220、230构建的空间关键词索引结构如图6、7所示,其中,图中仅给出根据r.geoStr的前5位等于“9g3rq”的r.items构建的倒排列表,索引结构图呈现形式与数据集的分布、关键词类别、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:检索空间关键词索引结构返回满足查询条件的id;其中,查询条件指查询域内包含全部qitems的id;进一步地,可以设置所述步骤320,具体包括步骤321、步骤322:
步骤321:因500<610(d1应选取geohash长度为6所对应的距离,由图2可知,其表示范围距离610m),根据geohash编码前5位检索Trie选取待检索的倒排列表;
步骤322:检索步骤321选取的倒排列表,分别获取包含查询关键词的id列表,求交集得到集合Sid,之后检索映射表,返回满足匹配条件的id列表,与Sid求交集,即为该查询域内满足查询条件的id;其中,SufStr表示映射表中后缀ssuf的第一位,匹配条件指SufStr等于geohash编码末尾一位;
根据m=5,查询域{9g3rqp,9g3rqr,9g3rw2,9g3rw0,9g3rtb,9g3rmz,9g3rmy,
9g3rqn,9g3rqq}可组合为{9g3rq,9g3rw,9g3rt,9g3rm},以查询域“9g3rq”为例,检索空间关键词索引结构后,包含查询关键词“historicalSite”的
id{10,14,15,17,20},包含查询关键词“garden”的id{10,14,15,17,20},求交集即得“9g3rq”域内满足查询条件的id为{10,14,15,17,20}。后缀表中以“p”为起始字符的id{11,12,13,14,15,16,17,18,19,20,21},求交集即得“9g3rqp”域内满足查询条件的id{14,15,17,20};后缀表中以“r”为起始字符的id{24,25},“9g3rqr”域内没有满足查询条件的id;后缀表中以“n”为起始字符的id{10},“9g3rqn”域内满足查询条件的id{10};后缀表中以“q”为起始字符的id{22,23},“9g3rqq”域内没有满足查询条件的id。并集为{10,14,15,17,20},即为查询域{9g3rqp,9g3rqr,9g3rqn,9g3rqq}内满足查询条件的id。
据步骤321与322所述方法,分别获取查询域内满足查询条件的id,之后求并集,即为9个查询域内满足查询条件的id{1,10,14,15,17,20,28};
步骤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{1,10,14,15,17,20,28}进行过滤并返回经纬度范围内的位置点。如:id为28时,其纬经度为(19.589223 -99.23521),19.589223不位于[19.591917,19.600907]内,故过滤id为9的位置点。经过滤后,候选集为{14,17,20}。
步骤340、计算候选集{14,17,20}中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}}。
一种基于Trie的空间关键词查询装置,包括:
数据预处理装置,用于将数据集D中所有位置点编码成长度为n的字符串geoStr,根据字符串geoStr后缀ssuf按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中ssuf指字符串geoStr的后n-m位字符,m≤n,m表示字符串geoStr前缀部分的位数;
空间关键词索引建立装置,用于对字符串前缀spre构建Trie,Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的geoStr前缀sprei,sprei指第i个字符串geoStr的前m位字符,spre指字符串geoStr的前m位字符;
空间关键词查询装置,用于检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
实施例2:如实施例1,给出了d≤d1情况下,具体的实施过程,本实施例给出的是d>d1情况,采用实施例1中的数据对此处进行说明如下:给定查询位置点(19.596412 -99.219501)、查询距离范围2000米、查询关键词{historicalSite,garden},由geohash精度表可知,需p对应的距离误差不小于2000且为最小值,则p值应设置为5,通过geohash算法将(19.596412 -99.219501)编码为5位长度的字符串9g3rq。9g3rq周围8个区域的geohash编码为:9g3rw、9g3rx、9g3rr、9g3rp、9g3rn、9g3rj、9g3rm、9g3rt,将9g3rq及其周围8个区域作为查询域。因2000>610,根据geohash编码检索Trie选取待检索的倒排列表,之后检索选取的倒排列表,分别获取包含查询关键词的id列表,并求交集,即为该查询域内满足查询条件的id。以查询域“9g3rq”为例,包含查询关键词“historicalSite”的id{10,14,15,17,20},包含查询关键词“garden”的id{10,14,15,17,20},交集为{10,14,15,17,20},即为该查询域内满足查询条件的id。据前述方法分别获取每个查询域内满足查询条件的id,之后求并集,即为9个查询域内满足查询条件的id{1,10,14,15,17,20,28}。
上面结合图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

Claims (10)

1.一种基于Trie的空间关键词查询方法,其特征在于:包括:
数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串geoStr,根据字符串geoStr后缀ssuf按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中ssuf指字符串geoStr的后n-m位字符,m≤n,m表示字符串geoStr前缀部分的位数;
空间关键词索引建立步骤,对字符串前缀spre构建Trie,Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的geoStr前缀sprei,sprei指第i个字符串geoStr的前m位字符,spre指字符串geoStr的前m位字符;
空间关键词查询步骤,检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
2.根据权利要求1所述的基于Trie的空间关键词查询方法,其特征在于:所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将数据集D中的位置点编码成长度为n的字符串geoStr;其中,位置点由纬度、经度数据构成;其中geoStr即geohash编码,表示geohash精度表中n对应的范围区域,
步骤120:将每一个geoStr分为m位前缀部分spre和n-m位后缀部分ssuf,根据ssuf按字典序对数据集D中每行数据排序并编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,R中每行数据r由id、纬度lat、经度lon、字符串geoStr、关键词集items组成,items至少包含一个关键词item。
3.根据权利要求1所述的基于Trie的空间关键词查询方法,其特征在于:所述空间关键词索引建立步骤,具体为:
步骤210:对Rspre构建Trie索引结构,每个spre可映射为Trie中一条从根到叶节点的路径,叶节点指向根据该域内关键词构建的倒排索引;其中,Rspre表示R中所有spre,spre可称为该叶节点的前缀,该域指从根节点到叶节点所构成的前缀sprei,i表示Rspre中第i个字符串;
步骤220:对Ritems中每个独立元素item,构建一个由包含item的rpart.id组成的倒排列表;其中,rpart表示R中r.geoStr的前m位等于sprei的r.id、r.items,r.geoStr表示r的geoStr,r.id表示r的id,r.items表示r的关键词集,Rpart表示由一至多行rpart组成的数据集,Ritems表示Rpart中全部关键词,rpart.id表示rpart的id;
步骤230:对Rsuf构建geoStr后缀ssuf与id的映射表;其中,Rsuf表示R中所有ssuf。
4.根据权利要求3所述的基于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所述的基于Trie的空间关键词查询方法,其特征在于:所述步骤110,包括下列步骤111、112:
步骤111:根据geohash精度表确定geohash编码长度n;
步骤112:通过geohash空间编码方法将所有位置点编码成长度为n的字符串。
6.根据权利要求2或4所述的基于Trie的空间关键词查询方法,其特征在于:通过geohash空间编码方法将位置点编码成字符串,具体为:首先,将经纬度范围看作二维平面坐标系;然后,采用二分法对经度/纬度进行划分,根据位置点经度/纬度在划分结果中的位置分别赋值0或1,直到划分次数满足对应的经/纬度位串的位数;之后,通过位交错方法合并经度位串与纬度位串;最后,通过Base32编码将经纬度位串编码为相应长度的字符串。
7.根据权利要求4所述的基于Trie的空间关键词查询方法,其特征在于:所述步骤310中,获取qs周围8个区域的geohash编码的方法:根据qs的经纬度位串,东/西方向的区域编码:经度位串不变,纬度位串加/减1,通过位交错方法得到该区域的经纬度位串;南/北方向的区域编码:纬度位串不变,经度位串减/加1,通过位交错方法得到该区域的经纬度位串;东北/西南方向的区域编码,经纬度位串均加/减1,通过位交错方法得到该区域的经纬度位串;东南方向的区域编码:纬度位串加1,经度位串减1,通过位交错方法得到该区域的经纬度位串;西北方向的区域编码:纬度位串减1,经度位串加1,通过位交错方法得到该区域的经纬度位串;之后,通过Base32编码将以上8个位串进行编码即可获得qs周围8个区域的geohash编码。
8.根据权利要求4所述的基于Trie的空间关键词查询方法,其特征在于:所述步骤320具体为:
步骤321:若d>d1,根据geohash编码检索Trie选取待检索的倒排列表;反之,若d≤d1,根据geohash编码前m位检索Trie选取待检索的倒排列表;
步骤322:若d>d1,检索步骤321选取的倒排列表,分别获取包含查询关键词的id列表,并求交集,即为该查询域内满足查询条件的id;反之,若d≤d1,检索步骤321选取的倒排列表,分别获取包含查询关键词的id列表,求交集得到集合Sid,之后检索映射表,返回满足匹配条件的id列表,与Sid求交集,即为该查询域内满足查询条件的id;其中,匹配条件指SufStr等于geohash编码末尾p-m位,SufStr表示映射表中后缀ssuf的前p-m位;
据上述方法分别获取每个查询域内满足查询条件的id,之后求并集,即为9个查询域内满足查询条件的id。
9.根据权利要求4所述的基于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.一种基于Trie的空间关键词查询装置,其特征在于:包括:
数据预处理装置,用于将数据集D中所有位置点编码成长度为n的字符串geoStr,根据字符串geoStr后缀ssuf按字典序对数据集D中的每行数据排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中ssuf指字符串geoStr的后n-m位字符,m≤n,m表示字符串geoStr前缀部分的位数;
空间关键词索引建立装置,用于对字符串前缀spre构建Trie,Trie的叶节点指向根据该域内关键词构建的倒排索引,倒排索引的列表元素为关键词及与其相对应的id列表,得到空间关键词索引结构;其中,该域指从根节点到叶节点所构成的geoStr前缀sprei,sprei指第i个字符串geoStr的前m位字符,spre指字符串geoStr的前m位字符;
空间关键词查询装置,用于检索空间关键词索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回满足空间查询条件的位置点。
CN201810419804.3A 2018-05-04 2018-05-04 一种基于Trie的空间关键词查询方法及装置 Active CN108874880B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810419804.3A CN108874880B (zh) 2018-05-04 2018-05-04 一种基于Trie的空间关键词查询方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810419804.3A CN108874880B (zh) 2018-05-04 2018-05-04 一种基于Trie的空间关键词查询方法及装置

Publications (2)

Publication Number Publication Date
CN108874880A true CN108874880A (zh) 2018-11-23
CN108874880B CN108874880B (zh) 2021-11-23

Family

ID=64327566

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810419804.3A Active CN108874880B (zh) 2018-05-04 2018-05-04 一种基于Trie的空间关键词查询方法及装置

Country Status (1)

Country Link
CN (1) CN108874880B (zh)

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》 *
孙芳媛: ""基于倒排索引和字典树的站内搜索引擎的设计与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Also Published As

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

Similar Documents

Publication Publication Date Title
CN108846013A (zh) 一种基于geohash与Patricia Trie的空间关键词查询方法及装置
US7606687B2 (en) Proximity search methods using tiles to represent geographical zones
JP5027985B2 (ja) 地理データベースを形成、更新、及び使用する方法及びシステム
Gionis et al. Customized tour recommendations in urban areas
US7953548B2 (en) Location-based information determination
US6574554B1 (en) System and method for calculating a navigation route based on non-contiguous cartographic map databases
CN104598506B (zh) 地理位置点的地址生成、查询方法和装置
EP2795255B1 (en) System and method for using skyline queries to search for points of interest along a route
CN103884345B (zh) 兴趣点信息采集方法、显示方法、装置及系统
US9677904B2 (en) Generating travel time data
CN107798054A (zh) 一种基于Trie的范围查询方法及装置
CN107766433A (zh) 一种基于Geo‑BTree的范围查询方法及装置
US20110087425A1 (en) Navigation system with map compression and method of operation thereof
CN108776666A (zh) 一种基于关键词倒排与Trie的空间关键词查询方法及装置
WO2001092827A1 (en) A method, system, and article of manufacture for minimizing travel time to a user selected location
EP2179385A2 (en) Routing methods for multiple geographical entities
CN100334429C (zh) 电子地图数据存储与更新的方法
CN107659596B (zh) 一种动态导航的方法及装置、终端
US20110246478A1 (en) Navigation system with indexed term searching and method of operation thereof
Ge et al. MPG: not so random exploration of a city
CN105843948B (zh) 一种移动环境下基于索引技术的景点智能推荐方法
CN109885638A (zh) 一种三维立体空间索引方法及系统
CN108776667B (zh) 一种基于geohash与B-Tree的空间关键词查询方法及装置
CN112699640A (zh) 基于PostgreSQL的地理编码方法和系统
CN108874880A (zh) 一种基于Trie的空间关键词查询方法及装置

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