CN108628950A - 一种基于文本-域倒排的空间文本查询方法及装置 - Google Patents
一种基于文本-域倒排的空间文本查询方法及装置 Download PDFInfo
- Publication number
- CN108628950A CN108628950A CN201810292840.8A CN201810292840A CN108628950A CN 108628950 A CN108628950 A CN 108628950A CN 201810292840 A CN201810292840 A CN 201810292840A CN 108628950 A CN108628950 A CN 108628950A
- Authority
- CN
- China
- Prior art keywords
- text
- longitude
- latitude
- record
- domain
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000001914 filtration Methods 0.000 claims abstract description 8
- 239000000203 mixture Substances 0.000 claims description 12
- 239000004744 fabric Substances 0.000 claims description 3
- 239000004576 sand Substances 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012946 outsourcing Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 241000031708 Saprospiraceae Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 210000003739 neck Anatomy 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
Abstract
本发明涉及一种基于文本‑域倒排的空间文本查询方法及装置,本发明方法包括:数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串,以该字符串为排序对象按字典序对数据集中的记录排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;空间文本索引建立步骤,对记录集R中的文本建立倒排索引,倒排索引的列表元素为与字符串相对应的id列表,得到文本‑域倒排索引结构;布尔范围查询步骤,检索文本‑域倒排索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回查询范围内的所有位置点。本发明采用文本‑域倒排索引结构可高效支持任意空间范围的文本查询。
Description
技术领域
本发明涉及一种基于文本-域倒排的空间文本查询方法及装置,属于空间文本查询(Spatial Keyword query)领域、基于位置的服务(Location-Based Service,LBS)等领域。
背景技术
随着互联网的发展、GPS移动设备的普及,导致产生了大量具有位置属性的文本数据,且数据量急剧增长,例如:具有文本描述的兴趣点(POIs)、具有位置标识的微博(Twitter)、具有位置与文本标识的图片信息(Flickr)、基于FourSquare的签到信息、含有位置属性的网页等。具有位置属性的文本数据称之为空间文本,空间数据与文本数据彼此赋予对方更详细的表述。面对这样的发展趋势,高效支持空间文本查询亟需高效的索引结构。空间文本查询指以位置、查询关键字为查询条件,返回满足查询条件的相关内容。空间文本查询分为:布尔kNN查询、布尔范围查询、top-k kNN查询与top-k 范围查询。
在空间文本查询领域,已提出许多索引结构,这些索引结构通常组合了空间索引结构与文本索引结构。根据所采用的空间索引结构的不同,可将其分为:基于R-Tree、grid、space-filling curve的空间文本索引;根据所采用的文本索引结构,可将其分为:基于倒排列表与签名文件的空间文本索引。空间索引与文本索引的组合方式为:独立组合、松散组合、紧凑组合。目前,主流的空间文本索引结构是R树家族与倒排列表组合的索引结构。R树采用对象的最小外包矩形(Minimum Bounding Rectangle, MBR)近似表示空间实体。如图8所示,从图中可看出,有许多重叠区域,如R16既属于R1又属于R2,但如图9所示,R6仅属于R2的孩子结点,存在多条查询路径。数据量越大,重叠区域将越多,直接降低查询效率。针对R树的多路径查询问题,R树变体对其进行了改进,检索性能虽有一定的提升,但仍受到R树多路径查询问题的限制。数据量较大时,尤其明显。
发明内容
为了解决现有技术中存在的问题,本发明提供了一种基于文本-域倒排的空间文本查询方法及装置。
本发明的技术方案是:一种基于文本-域倒排的空间文本查询方法,包括:
数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串,以该字符串为排序对象按字典序对数据集中的记录排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间文本索引建立步骤,对记录集R中的文本建立倒排索引,倒排索引的列表元素为与字符串相对应的id列表,得到文本-域倒排索引结构;
布尔范围查询步骤,检索文本-域倒排索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回查询范围内的所有位置点。
所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将D中的位置点编码成长度为n的字符串geoStr;其中,位置点由纬度、经度数据构成;geoStr即geohash编码,表示geohash精度表中n对应的范围区域;
步骤120:以geoStr为排序对象按字典序对数据集中的记录排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,记录r由id、纬度lat、经度lon、字符串geoStr、关键词集items组成,items至少包含一个关键词item。
所述空间文本索引建立步骤,具体为:
步骤210:对Ritems中每个独立元素关键词item,构建一个由rpart组成的倒排索引;其中,Ritems表示记录集R中全部关键词,rpart由item包含于r.items的r.id、r.geoStr组成,r.items表示记录r的关键词集,r.id表示记录r的id,r.geoStr表示记录r的字符串,Rpart表示由一至多行rpart组成的记录集,rÎR;
步骤220:对RpgStrs中每个独立元素geoStr,构建一个由rpart.geoStr等于geoStr的rpart.id组成的倒排列表;其中,RpgStrs表示Rpart中全部geoStr,rpart.geoStr表示rpart的字符串,rpart.id表示rpart的id,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:在文本-域倒排索引结构上快速获取满足查询条件的id;其中,查询条件指查找距离位置点q不大于d且包含全部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检索文本-域倒排索引结构,选取与qitem对应的倒排列表;其中qitemÎqitems;
步骤322:根据查询域对应的geohash编码分别检索步骤321选取的倒排列表,返回满足域查询条件的id列表,倒排列表均被检索后求交集,即为该查询域内满足布尔范围查询条件的id;据上述方法,分别获取查询域内满足布尔范围查询条件的id,之后求并集,即为9个查询域内满足布尔范围查询条件的id;其中,域查询条件指geoStr的前p位与查询域对应的geohash编码相同。
所述步骤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的字符串,以该字符串为排序对象按字典序对数据集中的记录排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间文本索引建立装置,用于对记录集R中的文本建立倒排索引,倒排索引的列表元素为与字符串相对应的id列表,得到文本-域倒排索引结构;
布尔范围查询装置,用于检索文本-域倒排索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回查询范围内的所有位置点。
本发明的有益效果是:本发明采用文本-域倒排索引结构可高效支持任意空间范围的文本查询,如:高效支持美团、百度外卖、去哪儿等基于位置的应用软件提供的附近兴趣点(餐馆、酒店等)查询功能;能有效解决R-树的多路径查询问题;可直接部署于数据库管理系统、分布式存储系统;无缝融合分布式计算框架。
附图说明
图1是基于文本-域倒排的空间文本查询功能模块图;
图2是geohash精度表;
图3是Base32编码规则图;(注:(+ / -)表示加减);
图4是位置点转换为字符串图;
图5是记录集排序图;
图6是文本-域倒排索引结构图;
图7是根据查询关键词选择的文本-域索引图;
图8是基于最小外包矩形划分的空间区域图;
图9是基于图8构建的R-Tree图。
具体实施方式
实施例1:如图1-图9所示,一种基于文本-域倒排的空间文本查询方法,包括:
数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串,以该字符串为排序对象按字典序对数据集中的记录排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间文本索引建立步骤,对记录集R中的文本建立倒排索引,倒排索引的列表元素为与字符串相对应的id列表,得到文本-域倒排索引结构;
布尔范围查询步骤,检索文本-域倒排索引结构,获取满足查询条件的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空间编码方法将D中的位置点转换成长度为8的字符串,实现方法如下:
示例:(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。
通过geohash算法将D中的位置点转换成长度为8的字符串,如图4所示。
步骤120:以geoStr为排序对象按字典序对数据集中的记录排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,记录r由id、纬度lat、经度lon、字符串geoStr、关键词集items组成,items至少包含一个关键词item。如图5所示。
进一步地,可以设置所述空间文本索引建立步骤,具体为:
步骤210:对Ritems中每个独立元素关键词item,构建一个由rpart组成的倒排索引;其中,Ritems表示记录集R中全部关键词,rpart由item包含于r.items的r.id、r.geoStr组成,r.items表示记录r的关键词集,r.id表示记录r的id,r.geoStr表示记录r的字符串,Rpart表示由一至多行rpart组成的记录集,rÎR;
步骤220:对RpgStrs中每个独立元素geoStr,构建一个由rpart.geoStr等于geoStr的rpart.id组成的倒排列表;其中,RpgStrs表示Rpart中全部geoStr,rpart.geoStr表示rpart的字符串,rpart.id表示rpart的id,rpartÎRpart。
文本-域倒排索引结构如图6所示(因受图大小限制,故图中出现了省略号,省略号部分构建方法与其前面一致)。
进一步地,可以设置所述布尔范围查询步骤,具体包括如下步骤:
步骤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;其中,查询条件指查找距离位置点q不大于d且包含全部qitems的id,即布尔范围查询;进一步地,可以设置所述步骤320,具体包括步骤321、步骤322:
步骤321、根据查询关键词{historicalSite,garden}检索文本-域索引结构,选取与关键词historicalSite与garden对应的倒排列表,如图7所示(箭头指向);
步骤322、根据查询域对应的geohash编码分别检索步骤321选取的倒排列表,返回满足域查询条件的id列表,倒排列表均被检索后求交集,即为该查询域内满足布尔范围查询条件的id;据上述方法,分别获取查询域
{9g3rqp,9g3rqr,9g3rw2,9g3rw0,9g3rtb,9g3rmz,9g3rmy,9g3rqn,9g3rqq}内满足布尔范围查询条件的id,之后求并集,即为9个查询域内满足布尔范围查询条件的id;其中,域查询条件指geoStr的前6位与查询域对应的geohash编码相同。
以9g3rqp查询域为例:
根据9g3rqp检索步骤321选取的倒排列表,以“geoStr的前6位与9g3rqp相同”为查询条件,针对查询关键词“historicalSite”,返回的id集为{15,16,18,21};针对查询关键词“garden”,返回的id集为{15,16,18,21},交集为{15,16,18,21},故9g3rqp查询域内满足布尔范围查询条件的id为{15,16,18,21}。
由上述可得,针对查询域{9g3rqr,9g3rw2,9g3rtb,9g3rmz,9g3rqq},任一查询域内,不存在满足布尔范围查询条件的 id;9g3rw0查询域内满足布尔范围查询条件的id为{27};9g3rmy查询域内满足布尔范围查询条件的id为{9};9g3rqn查询域内满足布尔范围查询条件的id为{11}。
由上可知,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),则 (1);
根据公式(1)依次计算位置点集中的位置点与(19.596412 -99.219501)的距离,返回不大于500米的位置点,经计算,满足要求的位置点集为{{19.596261 -99.223194},{19.596776 -99.220447},{19.594354 -99.220102}}。
故满足查询范围内的位置点为{{19.596261 -99.223194},{19.596776 -99.220447},{19.594354 -99.220102}}。
一种基于文本-域倒排的空间文本查询装置,包括:
数据预处理装置,用于将数据集D中所有位置点编码成长度为n的字符串,以该字符串为排序对象按字典序对数据集中的记录排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间文本索引建立装置,用于对记录集R中的文本建立倒排索引,倒排索引的列表元素为与字符串相对应的id列表,得到文本-域倒排索引结构;
布尔范围查询装置,用于检索文本-域倒排索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回查询范围内的所有位置点。
上面结合图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (10)
1.一种基于文本-域倒排的空间文本查询方法,其特征在于:包括:
数据预处理步骤,将数据集D中所有位置点编码成长度为n的字符串,以该字符串为排序对象按字典序对数据集中的记录排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间文本索引建立步骤,对记录集R中的文本建立倒排索引,倒排索引的列表元素为与字符串相对应的id列表,得到文本-域倒排索引结构;
布尔范围查询步骤,检索文本-域倒排索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回查询范围内的所有位置点。
2.根据权利要求1所述的基于文本-域倒排的空间文本查询方法,其特征在于:所述数据预处理步骤,具体包括如下步骤:
步骤110:给定一个由一系列位置点、关键词集构成的数据集D,通过geohash空间编码方法将D中的位置点编码成长度为n的字符串geoStr;其中,位置点由纬度、经度数据构成;geoStr即geohash编码,表示geohash精度表中n对应的范围区域;
步骤120:以geoStr为排序对象按字典序对数据集中的记录排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;其中,记录r由id、纬度lat、经度lon、字符串geoStr、关键词集items组成,items至少包含一个关键词item。
3.根据权利要求1所述的基于文本-域倒排的空间文本查询方法,其特征在于:所述空间文本索引建立步骤,具体为:
步骤210:对Ritems中每个独立元素关键词item,构建一个由rpart组成的倒排索引;其中,Ritems表示记录集R中全部关键词,rpart由item包含于r.items的r.id、r.geoStr组成,r.items表示记录r的关键词集,r.id表示记录r的id,r.geoStr表示记录r的字符串,Rpart表示由一至多行rpart组成的记录集,rÎR;
步骤220:对RpgStrs中每个独立元素geoStr,构建一个由rpart.geoStr等于geoStr的rpart.id组成的倒排列表;其中,RpgStrs表示Rpart中全部geoStr,rpart.geoStr表示rpart的字符串,rpart.id表示rpart的id,rpartÎRpart。
4.根据权利要求1所述的基于文本-域倒排的空间文本查询方法,其特征在于:所述布尔范围查询步骤,具体包括如下步骤:
步骤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;其中,查询条件指查找距离位置点q不大于d且包含全部qitems的id,即布尔范围查询;
步骤330:根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围,根据经纬度范围对与步骤320返回的id相对应的位置点进行筛选,最终得到id候选集;
步骤340:计算候选集中id对应的位置点到查询位置点q的距离dq:若dq≤d,则返回该位置点,否则,不返回。
5.根据权利要求2所述的基于文本-域倒排的空间文本查询方法,其特征在于:所述步骤110,包括下列步骤111、112:
步骤111:根据geohash精度表确定geohash编码长度n;
步骤112:通过geohash空间编码方法将所有位置点编码成长度为n的字符串。
6.根据权利要求2或4所述的基于文本-域倒排的空间文本查询方法,其特征在于:通过geohash空间编码方法将位置点编码成字符串,具体为:首先,将经纬度范围看作二维平面坐标系;然后,采用二分法对经度/纬度进行划分,根据位置点经度/纬度在划分结果中的位置分别赋值0或1,直到划分次数满足对应的经/纬度位串的位数;之后,通过位交错方法合并经度位串与纬度位串;最后,通过Base32编码将经纬度位串编码为相应长度的字符串。
7.根据权利要求4所述的基于文本-域倒排的空间文本查询方法,其特征在于:所述步骤310中,获取qs周围8个区域的geohash编码的方法:根据qs的经纬度位串,东/西方向的区域编码:经度位串不变,纬度位串加/减1,通过位交错方法得到该区域的经纬度位串;南/北方向的区域编码:纬度位串不变,经度位串减/加1,通过位交错方法得到该区域的经纬度位串;东北/西南方向的区域编码,经纬度位串均加/减1,通过位交错方法得到该区域的经纬度位串;东南方向的区域编码:纬度位串加1,经度位串减1,通过位交错方法得到该区域的经纬度位串;西北方向的区域编码:纬度位串减1,经度位串加1,通过位交错方法得到该区域的经纬度位串;之后,通过Base32编码将以上8个位串进行编码即可获得qs周围8个区域的geohash编码。
8.根据权利要求4所述的基于文本-域倒排的空间文本查询方法,其特征在于:所述步骤320具体为:
步骤321:根据qitems检索文本-域倒排索引结构,选取与qitem对应的倒排列表;其中qitemÎqitems;
步骤322:根据查询域对应的geohash编码分别检索步骤321选取的倒排列表,返回满足域查询条件的id列表,倒排列表均被检索后求交集,即为该查询域内满足布尔范围查询条件的id;据上述方法,分别获取查询域内满足布尔范围查询条件的id,之后求并集,即为9个查询域内满足布尔范围查询条件的id;其中,域查询条件指geoStr的前p位与查询域对应的geohash编码相同。
9.根据权利要求4所述的基于文本-域倒排的空间文本查询方法,其特征在于:所述步骤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.一种基于文本-域倒排的空间文本查询装置,其特征在于:包括:
数据预处理装置,用于将数据集D中所有位置点编码成长度为n的字符串,以该字符串为排序对象按字典序对数据集中的记录排序并生成编号id,每一行数据称为一条记录r,则由一至多行记录r组成的数据集称为记录集R;
空间文本索引建立装置,用于对记录集R中的文本建立倒排索引,倒排索引的列表元素为与字符串相对应的id列表,得到文本-域倒排索引结构;
布尔范围查询装置,用于检索文本-域倒排索引结构,获取满足查询条件的id,经过滤得到id候选集,并对候选集验证返回查询范围内的所有位置点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810292840.8A CN108628950B (zh) | 2018-04-04 | 2018-04-04 | 一种基于文本-域倒排的空间文本查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810292840.8A CN108628950B (zh) | 2018-04-04 | 2018-04-04 | 一种基于文本-域倒排的空间文本查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108628950A true CN108628950A (zh) | 2018-10-09 |
CN108628950B CN108628950B (zh) | 2022-07-19 |
Family
ID=63704801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810292840.8A Active CN108628950B (zh) | 2018-04-04 | 2018-04-04 | 一种基于文本-域倒排的空间文本查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108628950B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111353008A (zh) * | 2019-12-26 | 2020-06-30 | 中科星图股份有限公司 | 一种北斗位置流数据实时空间聚合方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080306911A1 (en) * | 2007-06-08 | 2008-12-11 | Wayne Loofbourrow | Ordered index |
CN102201001A (zh) * | 2011-04-29 | 2011-09-28 | 西安交通大学 | 基于倒排技术的快速检索方法 |
CN103092844A (zh) * | 2011-10-28 | 2013-05-08 | 腾讯科技(深圳)有限公司 | 一种索引建立方法和系统、搜索方法和系统 |
CN103150309A (zh) * | 2011-12-07 | 2013-06-12 | 清华大学 | 一种空间方向感知地图兴趣点搜索方法和系统 |
CN104794237A (zh) * | 2015-05-07 | 2015-07-22 | 中国人民大学 | 网页信息处理方法及装置 |
WO2015142369A1 (en) * | 2014-03-20 | 2015-09-24 | Facebook, Inc. | Polygon-based indexing of places |
CN105404675A (zh) * | 2015-11-20 | 2016-03-16 | 苏州大学 | Ranked反近邻空间关键字查询方法及装置 |
CN106156195A (zh) * | 2015-04-20 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 基于位置信息的搜索方法及其系统 |
CN107194560A (zh) * | 2017-05-12 | 2017-09-22 | 东南大学 | Lbsn中基于好友聚类的社交搜索评价方法 |
CN107766433A (zh) * | 2017-09-19 | 2018-03-06 | 昆明理工大学 | 一种基于Geo‑BTree的范围查询方法及装置 |
CN107798054A (zh) * | 2017-09-04 | 2018-03-13 | 昆明理工大学 | 一种基于Trie的范围查询方法及装置 |
-
2018
- 2018-04-04 CN CN201810292840.8A patent/CN108628950B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080306911A1 (en) * | 2007-06-08 | 2008-12-11 | Wayne Loofbourrow | Ordered index |
CN102201001A (zh) * | 2011-04-29 | 2011-09-28 | 西安交通大学 | 基于倒排技术的快速检索方法 |
CN103092844A (zh) * | 2011-10-28 | 2013-05-08 | 腾讯科技(深圳)有限公司 | 一种索引建立方法和系统、搜索方法和系统 |
CN103150309A (zh) * | 2011-12-07 | 2013-06-12 | 清华大学 | 一种空间方向感知地图兴趣点搜索方法和系统 |
WO2015142369A1 (en) * | 2014-03-20 | 2015-09-24 | Facebook, Inc. | Polygon-based indexing of places |
CN106156195A (zh) * | 2015-04-20 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 基于位置信息的搜索方法及其系统 |
CN104794237A (zh) * | 2015-05-07 | 2015-07-22 | 中国人民大学 | 网页信息处理方法及装置 |
CN105404675A (zh) * | 2015-11-20 | 2016-03-16 | 苏州大学 | Ranked反近邻空间关键字查询方法及装置 |
CN107194560A (zh) * | 2017-05-12 | 2017-09-22 | 东南大学 | Lbsn中基于好友聚类的社交搜索评价方法 |
CN107798054A (zh) * | 2017-09-04 | 2018-03-13 | 昆明理工大学 | 一种基于Trie的范围查询方法及装置 |
CN107766433A (zh) * | 2017-09-19 | 2018-03-06 | 昆明理工大学 | 一种基于Geo‑BTree的范围查询方法及装置 |
Non-Patent Citations (3)
Title |
---|
CHENGYUAN ZHANG等: "Inverted Linear Quadtree: Efficient Top K Spatial Keyword Search", 《IEEE TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING》 * |
刘思彤: "空间文本数据的查询处理技术研究", 《中国博士学位论文全文数据库 (信息科技辑)》 * |
张榆等: "一种基于HBase的高效空间关键字查询策略", 《小型微型计算机系统》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111353008A (zh) * | 2019-12-26 | 2020-06-30 | 中科星图股份有限公司 | 一种北斗位置流数据实时空间聚合方法 |
CN111353008B (zh) * | 2019-12-26 | 2023-07-25 | 中科星图股份有限公司 | 一种北斗位置流数据实时空间聚合方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108628950B (zh) | 2022-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108846013B (zh) | 一种基于geohash与Patricia Trie的空间关键词查询方法及装置 | |
CN107798054B (zh) | 一种基于Trie的范围查询方法及装置 | |
Rocha-Junior et al. | Top-k spatial keyword queries on road networks | |
CN103927933B (zh) | 一种海量移动目标渲染的方法及装置 | |
US7606687B2 (en) | Proximity search methods using tiles to represent geographical zones | |
CN103150309B (zh) | 一种空间方向感知地图兴趣点搜索方法和系统 | |
US7634465B2 (en) | Indexing and caching strategy for local queries | |
CN107766433A (zh) | 一种基于Geo‑BTree的范围查询方法及装置 | |
US20150356088A1 (en) | Tile-based geocoder | |
CN107153711A (zh) | 地理信息数据处理方法及装置 | |
CN111078807B (zh) | 位置查询方法、装置、计算机设备及存储介质 | |
CN104394509A (zh) | 一种高效的差分扰动位置隐私保护系统及方法 | |
CN104376112B (zh) | 一种路网上空间关键字检索的方法 | |
CN108776666A (zh) | 一种基于关键词倒排与Trie的空间关键词查询方法及装置 | |
WO2012082859A1 (en) | High efficiency prefix search algorithm supporting interactive, fuzzy search on geographical structured data | |
CN108763522A (zh) | Poi检索排序方法、装置及计算机可读存储介质 | |
CN108549690A (zh) | 基于空间距离约束的空间关键字查询方法及系统 | |
CN103914456A (zh) | 一种数据存储方法和系统 | |
CN109885638B (zh) | 一种三维立体空间索引方法及系统 | |
CN105843948B (zh) | 一种移动环境下基于索引技术的景点智能推荐方法 | |
CN106649425A (zh) | 一种顾及空间邻近性的矢量空间数据编码方法 | |
CN108628950A (zh) | 一种基于文本-域倒排的空间文本查询方法及装置 | |
CN108776667B (zh) | 一种基于geohash与B-Tree的空间关键词查询方法及装置 | |
CN101882164A (zh) | 用于存储多维知识的数据仓库模型 | |
CN104123357A (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 |