位置搜索方法和位置搜索引擎技术

技术编号:9872542 阅读:268 留言:0更新日期:2014-04-04 05:37
本发明专利技术公开了一种位置搜索方法和引擎,涉及移动对象的位置搜索技术领域。该位置搜索引擎包括主控进程、缺省进程和多个缓存进程,主控进程记录了所有缓存进程的管辖区域信息,并负责把搜索请求转发给对应的缓存进程或缺省进程去处理,然后接收它们的处理结果,最后把结果返回给请求者。该引擎通过分布式进程内缓存来提高搜索效率,一个缓存进程负责一个由多个相连的网格构成的矩形区域,并且用二维数组来组织这些网格信息以及落入该网格范围内的所有对象的信息,这些对象以哈希表的结构进行组织,以对象的唯一标识作为键值。这样缓存进程只需要进行简单的数组下标换算就可以快速定位并获取其管辖范围内的任意网格和对象,从而提升搜索的效率。

【技术实现步骤摘要】
位置搜索方法和位置搜索引擎
本专利技术涉及移动对象的位置搜索
,特别涉及一种位置搜索方法和位置搜索引擎。
技术介绍
近年来,智能便携终端的普及使得针对移动的人和物的位置信息的采集变得容易。面向这些移动对象的位置搜索需求也开始多起来。例如,基于手机客户端的社交软件,通常会提供搜索周边过客的功能。与POI (Point of Interest,兴趣点)等静态信息不同,移动物体的位置更新频繁,所以面向移动物体的位置搜索引擎要处理的位置更新请求要多于位置搜索请求。通过传统的添加索引来提高引擎性能的方式并不可取。目前,有很多第三方产品都提供位置搜索的功能,如oracle的空间搜索模块,Iucene的空间扩展模块,以及最近两年开始流行的nosql数据库mongodb。它们的基本原理大体类似,即,建立索引阶段包括对位置进行网格化编码,对编码建立索引;搜索阶段又分粗过滤和精确过滤两个阶段,粗过滤指找出覆盖搜索范围的所有网格内的对象;精确过滤指对粗过滤的结果进行精确的匹配计算。它们的搜索过程涉及到从持久性存储访问大量的数据,影响性能;另外,基于索引的方式,也不适合移动物体位置信息频繁更新的情况。
技术实现思路
本专利技术的专利技术人发现上述现有技术中存在问题,并因此针对问题中的至少一个问题提出了一种新的技术方案。本专利技术的一个目的是提供一种高效、快速的位置搜索技术方案。根据本专利技术的第一方面,提供了一种位置搜索方法,包括:主控进程确定与位置搜索范围有交集的目标网格区域,其中,主控进程记录缓存进程与网格区域的对应关系;主控进程确定与目标网格区域相关的缓存进程,其中,每个缓存进程维护一个矩形网格区域,在内存中通过二维数组记录矩形网格区域内每个网格内的对象信息;缓存进程确定位于目标网格区域中的对象作为候选结果对象;从候选结果对象中确定搜索结果对象。可选地,该方法还包括:主控进程确定缺省进程中位于位置搜索范围内的网格;确定缺省进程位于位置搜索范围内的网格集中的对象作为候选结果对象。可选地,主控进程确定与位置搜索范围有交集的缓存进程包括:主控进程确定所管辖的网格集与位置搜索范围包括的网格集有交集的缓存进程。可选地,缓存进程以哈希表的数据结构、以对象的唯一标识作为键值组织网格内的对象的信息。可选地,该方法还包括:主控进程接收对象的位置变更请求,对象的位置变更请求包括位置变更对象的当前位置和上次的位置信息;主控进程根据位置变更对象的当前位置和上次的位置信息分别确定位置变更对象的当前网格和上次所在网格;如果当前网格和上次所在网格不同,确定当前网格所属的当前缓存进程,将位置变更对象的信息写入当前缓存进程,清除位置变更对象的上次所在网格信息。可选地,该方法还包括:当前缓存进程向以当前网格为中心的九宫格内的有位置提醒需求的对象发出位置提醒信息。根据本专利技术的另一方面,提供一种位置搜索引擎,包括:主控单元,用于记录缓存控制单元与网格区域的对应关系,确定与位置搜索范围有交集的目标网格区域;确定与目标网格区域相关的缓存控制单元;缓存控制单元,用于维护一个矩形网格区域,在内存中通过二维数组记录矩形网格区域内每个网格内的对象信息;确定位于目标网格区域中的对象作为候选结果对象,从候选结果对象中确定搜索结果对象。可选地,位置搜索引擎还包括缺省控制单元,用于维护所有的网格集;主控单元确定缺省控制单元中位于位置搜索范围内的网格;缺省控制单元确定位于位置搜索范围内的网格集中的对象作为候选结果对象,从候选结果对象中确定搜索结果对象。可选地,缓存控制单元以哈希表的数据结构、以对象的唯一标识作为键值组织网格内的对象的信息。可选地,主控单元还接收对象的位置变更请求,对象的位置变更请求包括位置变更对象的当前位置和上次的位置信息;根据位置变更对象的当前位置和上次的位置信息分别确定位置变更对象的当前网格和上次所在网格;如果当前网格和上次所在网格不同,确定当前网格所属的当前缓存控制单元,将位置变更对象的信息写入当前缓存控制单元,清除位置变更对象的上次所在网格信息。可选地,当前缓存控制单元还向以当前网格为中心的九宫格内的有位置提醒需求的对象发出位置提醒信息。本专利技术的一个优点在于,通过缓存进程将网格对象信息存储在内存中,以二维数组的方式进行组织,便于快速索引和检索,从而实现高效、快速的位置搜索方法和引擎。通过以下参照附图对本专利技术的示例性实施例的详细描述,本专利技术的其它特征及其优点将会变得清楚。【附图说明】构成说明书的一部分的附图描述了本专利技术的实施例,并且连同说明书一起用于解释本专利技术的原理。参照附图,根据下面的详细描述,可以更加清楚地理解本专利技术,其中:图1示出本专利技术的位置搜索实现方法的一个实施例的流程图。图2是本专利技术位置搜索引擎的一个实施例的结构示意图。图3覆盖搜索范围的最小网格集的不意图。图4示出本专利技术搜索引擎处理对象位置变更请求的一个实施例的流程图。图5示出本专利技术搜索引擎处理位置搜索请求的一个实施例的流程图。图6示出本专利技术搜索引擎处理位置搜索请求的另一个实施例的流程图。图7示出本专利技术位置搜索装置的一个实施例的结构图。【具体实施方式】现在将参照附图来详细描述本专利技术的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本专利技术的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本专利技术及其应用或使用的任何限制。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。为了便于位置搜索处理,可以将位置信息网格化,并为每个网格区域分配一个网格编码。例如,把地图用分别与赤道和子午线平行的线条分割成网状,即,从赤道和子午线开始,每隔0.001度画一条线,则不难算出每个网格西南角的经纬度值,以该经纬度值的组合作为该网格的编码,唯一标记该网格。每一个被搜索的对象,除了有以经纬度表示的精确位置信息之外,增加了覆盖它的网格的编码信息。图1示出本专利技术的位置搜索实现方法的一个实施例的流程图。如图1所示,步骤102,主控进程确定与位置搜索范围有交集的目标网格区域,其中,主控进程记录缓存进程与网格区域的对应关系。主控进程收到位置搜索请求后,根据位置搜索请求确定位置搜索范围。步骤104,主控进程确定与目标网格区域相关的缓存进程,其中,每个缓存进程维护一个矩形网格区域,在内存中通过二维数组记录矩形网格区域内每个网格内的对象信息。主控进程根据缓存进程与网格区域的对应关系确定与目标网格区域相关的缓存进程,将位置搜索请求转发给缓存进程。步骤106,缓存进程确定位于目标网格区域中的对象作为候选结果对象。例如,计算出能够覆盖全部被搜索范围(通常为圆形范围)的最小的网格集,然后根据这些网格的编码获取到所有这些网格里的被搜本文档来自技高网...
位置搜索方法和位置搜索引擎

【技术保护点】
一种位置搜索方法,其特征在于,包括:主控进程确定与位置搜索范围有交集的目标网格区域,其中,主控进程记录缓存进程与网格区域的对应关系;主控进程确定与目标网格区域相关的缓存进程,其中,每个缓存进程维护一个矩形网格区域,在内存中通过二维数组记录矩形网格区域内每个网格内的对象信息;缓存进程确定位于目标网格区域中的对象作为候选结果对象;从候选结果对象中确定搜索结果对象。

【技术特征摘要】
1.一种位置搜索方法,其特征在于,包括: 主控进程确定与位置搜索范围有交集的目标网格区域,其中,主控进程记录缓存进程与网格区域的对应关系; 主控进程确定与目标网格区域相关的缓存进程,其中,每个缓存进程维护一个矩形网格区域,在内存中通过二维数组记录矩形网格区域内每个网格内的对象信息; 缓存进程确定位于目标网格区域中的对象作为候选结果对象; 从候选结果对象中确定搜索结果对象。2.根据权利要求1的方法,其特征在于,还包括: 主控进程确定缺省进程中位于位置搜索范围内的网格; 确定缺省进程位于位置搜索范围内的网格集中的对象作为候选结果对象。3.根据权利要求1的方法,其特征在于,主控进程确定与位置搜索范围有交集的缓存进程包括: 主控进程确定所管辖的网格集与位置搜索范围包括的网格集有交集的缓存进程。4.根据权利要求1的方法,其特征在于,缓存进程以哈希表的数据结构、以对象的唯一标识作为键值组织网格内的对象的信息。5.根据权利要求1的方法,其特征在于,还包括: 主控进程接收对象的位置变更请求,对象的位置变更请求包括位置变更对象的当前位置和上次的位置信息; 主控进程根据位置变更对象的当前位置和上次的位置信息分别确定位置变更对象的当前网格和上次所在网格; 如果当前网格和上次所在网格不同,确定当前网格所属的当前缓存进程,将位置变更对象的信息写入当前缓存进程,清除位置变更对象的上次所在网格信息。6.根据权利要求5的方法,其特征在于,还包括: 当前缓存进程向以当前网格为中心的九宫格内的...

【专利技术属性】
技术研发人员:袁立宇王爱宝徐雄张涛杨德利杨翊平梁冰
申请(专利权)人:中国电信股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1