一种基于位置的数据查询方法及装置的制造方法

xiaoxiao2021-2-28  202

一种基于位置的数据查询方法及装置的制造方法
【技术领域】
[0001]本发明涉及信息处理技术领域,特别是涉及一种基于位置的数据查询方法及装置。
【背景技术】
[0002]目前,移动终端中的应用软件中,通常会存在基于LBS(Locat1nBased Service,基于位置的服务)的查询功能,以让用户了解到周围人群的动态信息,例如:视频应用中,存在“附近的人正在看”功能,通过进入该功能,用户可以了解到周边人群正在看哪些视频;交友应用中,存在“附近的人正在玩”功能,用户可以了解到周边人群正在玩哪些游戏。
[0003]现有技术中,当用户利用LBS功能时,应用软件会向相应服务器发送该用户的当前位置信息,如经玮度信息,进而,服务器分别计算当前位置信息与之前被允许获取的其他用户的位置信息的距离,然后,基于所计算得到的距离,向用户反馈相应的结果信息,例如:返回最近距离对应的其他用户的位置信息及用户信息。
[0004]可见,现有技术中服务器的计算量是用户请求数量与所有被允许获取的其他用户的位置信息数据乘积的值,每次处理用户查询请求时,都需要重新进行计算。该种方式,当用户基数很大,或者用户查询请求量很多时,服务器的计算量很大,压力大,特别是涉及到例如“观看记录汇总和展示”等的查询处理时,会给服务器造成非常大的压力。

【发明内容】

[0005]本发明实施例提供了一种基于位置的数据查询方法及装置,以减少服务器的计算量,从而降低由于用户基数大或用户请求量多给服务器造成的计算压力。具体技术方案如下:
[0006]第一方面,本发明实施例提供了一种基于位置的数据查询方法,应用于服务器,所述方法包括步骤:
[0007]接收用户通过终端发出的基于位置的查询请求,所述查询请求携带所述终端所在位置的目标经玮度信息;
[0008]将所述目标经玮度信息按照预设地址编码方式转换成目标一维字符串信息;
[0009]从预先构建的多叉树索引中,确定查找路径上的节点标识的组合与该目标一维字符串信息相同的目标叶子节点;所述多叉树索引基于预先获得的各个终端的经玮度信息所对应的一维字符串信息形成且叶子节点所对应查找路径上的节点标识的组合与预先获得的一维字符串信息相同,其中,叶子节点存储有与相应一维字符串信息所对应经玮度信息以及该经玮度信息所对应用户信息;
[0010]基于所述目标叶子节点所对应的存储信息,确定所述查询请求所对应的结果信息;
[0011 ]将所述查询请求所对应的结果信息反馈给所述终端。
[0012]可选的,所述查询请求携带信息还包括所述终端的用户信息;
[0013]所述基于所述目标叶子节点所对应的存储信息,确定所述查询请求所对应的结果信息,包括:
[0014]根据查询请求携带的所述终端的用户信息和所述目标叶子节点所对应的储存信息,得到所述查询请求所对应的结果信息。
[0015]可选的,所述预设地址编码方式为geohash编码方式。
[0016]可选的,所述多叉树索引的建立方式具体为:
[0017]将预先获得的各个终端的经玮度信息所对应的一维字符串信息的每两位分离为一组子信息;
[0018]以根节点为起点,向下分离节点标识00、01、10、11四个中的一个或多个的有序排列的子节点,每个子节点继续分离所述四个中的一个或多个的有序排列的子节点,以此类推,建立一个多叉树索引,所述多叉树索引中,每个一维字符串信息的各组子信息依次对应于相应叶子节点所对应查找路径上的每层节点标识,并且,每个一维字符串信息所对应经玮度信息和该经玮度信息所对应的用户信息存储在相应叶子节点中。
[0019]可选的,在查找到所述目标叶子节点之后,确定所述查询请求所对应的结果信息之前,所述方法还包括:
[0020]从预先构建的方形编码图中,查找位于所述目标叶子节点预定方向的叶子节点;其中,所述方形编码图内规则地分布有与目标一维字符串信息位数相同的所有二进制字符串信息,且分布方式依据横坐标从左到右依次为0和1以及纵坐标从下往上依次为0和1的行走方式所确定;
[0021 ]所述基于所述目标叶子节点所对应的目标存储信息,确定所述查询请求所对应的结果信息,包括:
[0022]基于所述目标叶子节点所对应的存储信息和位于所述目标节点预定方向的叶子节点所对应的存储信息,得到所述查询请求所对应的结果信息。
[0023]可选的,所述基于所述目标叶子节点所对应的存储信息和位于所述目标节点预定方向的叶子节点所对应的存储信息,确定所述查询请求所对应的结果信息,包括:
[0024]比较所述目标叶子节点和位于所述目标节点预定方向的叶子节点对应储存的用户的经玮度信息,确定与所述目标经玮度信息距离最近的用户所对应的用户信息和/或位置信息作为结果信息。
[0025]可选的,本发明实施例所提供的一种基于位置的数据查询方法还包括:
[0026]周期性地获得各个终端的经玮度信息,并在每次获得各个终端的经玮度信息后,基于当前所获得的经玮度信息所对应的一维字符串信息进行多叉树索引的构建,构建完成后,将当前所建立的多叉树索引作为待利用的多叉树索引。
[0027]第二方面,本发明实施例还提供了一种基于位置的数据查询装置,应用于服务器,所述装置包括:
[0028]查询请求接收模块,用于接收用户通过终端发出的基于位置的查询请求,所述查询请求携带所述终端所在位置的目标经玮度信息;
[0029]信息转换模块,用于将所述目标经玮度信息按照预设地址编码方式转换成目标一维字符串信息;
[0030]查找模块,用于从预先构建的多叉树索引中,确定查找路径上的节点标识的组合与该目标一维字符串信息相同的目标叶子节点,所述多叉树索引基于预先获得的各个终端的经玮度信息所对应的一维字符串信息形成且叶子节点所对应查找路径上的节点标识的组合与预先获得的一维字符串信息相同,其中,叶子节点存储有与相应一维字符串信息所对应经玮度信息以及该经玮度信息所对应用户信息;
[0031 ]结果信息确定模块,用于基于所述目标叶子节点所对应的存储信息,确定所述查询请求所对应的结果信息;
[0032]结果信息反馈模块,用于将所述查询请求所对应的结果信息反馈给所述终端。
[0033]可选的,所述查询请求携带信息还包括所述终端的用户信息;
[0034]所述结果信息确定模块,包括:第一结果信息确定单元,用于根据查询请求携带的所述终端的用户信息和所述目标叶子节点所对应的储存信息,得到所述查询请求所对应的结果?目息。
[0035]可选的,所述预设地址编码方式为geohash编码方式。
[0036]可选的,所述多叉树索引通过索引建立模块预先构建;
[0037]其中,所述索引建立模块,包括:
[0038]分组单元,用于将预先获得的各个终端的经玮度信息所对应的一维字符串信息的每两位分离为一组子信息;
[0039]构建单元,用于以根节点为起点,向下分离节点标识为00、01、10、11四个中的一个或多个的有序排列的子节点,每个子节点继续分离所述四个中的一个或多个的有序排列的子节点,以此类推,建立一个多叉树索引,所述多叉树索引中,每个一维字符串信息的各组子信息依次对应于相应叶子节点所对应查找路径上的每层节点标识,并且,每个一维字符串信息所对应经玮度信息和该经玮度信息所对应的用户信息存储在相应叶子节点中。
[0040]可选的,本发明实施例所提供的一种基于位置的数据查询装置,还包括:
[0041 ]叶子节点查找模块,用于在查找到所述目标叶子节点之后,确定所述查询请求所对应的结果信息之前,从预先构建的方形编码图中,查找位于所述目标节点预定方向的叶子节点;其中,所述方形编码图内规则地分布有与目标一维字符串信息位数相同的所有二进制字符串信息,且分布方式依据横坐标从左到右依次为0和1以及纵坐标从下往上依次为0和1的行走方式所确定;
[0042]所述结果信息 确定模块,包括:
[0043]第二结果信息确定单元,用于基于所述目标叶子节点所对应的存储信息和位于所述目标节点预定方向的叶子节点所对应的存储信息,得到所述查询请求所对应的结果信息。
[0044]可选的,所述第二结果信息确定单元具体用于:比较所述目标叶子节点和位于所述目标节点预定方向的叶子节点对应储存的用户的经玮度信息,确定与目标经玮度信息距离最近的用户所对应的用户信息和/或位置信息作为结果信息。
[0045]可选的,本发明实施例所提供的一种基于位置的数据查询装置,还包括:
[0046]索引更新模块,用于周期性地获得各个终端的经玮度信息,并在每次获得各个终端的经玮度信息后,基于当前所获得的经玮度信息所对应的一维字符串信息进行多叉树索引的构建,构建完成后,将当前所建立的多叉树索引作为待利用的多叉树索引。
[0047]与现有技术相比,本发明实施例提供的一种基于位置的数据查询方法及装置,月艮务器基于预先获得的各个终端的经玮度信息所对应的一维字符串信息形成多叉树索引;进而,在接收到携带有目标经玮度信息的基于位置的查询请求后,将目标经玮度信息按照预设地址编码方式转换成目标一维字符串信息,并利用该目标一维字符串信息来遍历多叉树索引以得到结果信息,而并非将目标经玮度信息与预先获得的各个终端的经玮度信息的逐一计算,因此,通过本方案可以减少服务器的计算量,降低由于用户基数大或用户请求量多给服务器造成的计算压力。
【附图说明】
[0048]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0049]图1为本发明实施例所提供的多叉树索引的示意图;
[0050]图2为本发明实施例所提供的方形编码图的示意图;
[0051 ]图3为本发明实施例所提供的一种基于位置的数据查询方法的第一种流程图;
[0052]图4为本发明实施例所提供的一种基于位置的数据查询方法的第二种流程图;
[0053]图5为本发明实施例所提供的一种基于位置的数据查询装置的结构示意图。
【具体实施方式】
[0054]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0055]为了减少服务器对基于位置的数据查询请求的计算量,从而降低由于用户基数大或用户请求量多给服务器造成的计算压力,本发明实施例提供了一种基于位置的数据查询方法及装置。
[0056]下面首先对本发明实施例所提供的第一种基于位置的数据查询方法进行介绍。
[0057]如图3所示,一种基于位置的数据查询方法,可以包括:
[0058]S101,接收用户通过终端发出的基于位置的查询请求,所述查询请求携带所述终端所在位置的目标经玮度信息;
[0059]其中,当用户希望基于位置查找所需信息时,可以通过终端上的交互界面来向服务器发出基于位置的查询请求,相应的,该服务器可以接收用户通过终端发出的基于位置的查询请求,该查询请求携带该终端所在位置的目标经玮度信息。
[0060]举例而言,在视频应用中,基于位置的查询请求可以为:查询附近位置的用户正在看什么视频的请求,或者,查找与自己最近的用户正在看什么视频的请求,等等;在交友应用中,该基于位置的查询请求可以为:查询附近位置的用户正在玩什么游戏的请求,或者,查找与自己最近的用户正在玩什么游戏的请求,等等。
[0061]更近一步的,所述查询请求携带信息还可以包括该终端的用户信息,其中,该用户信息可以包括:用户标识以及所处理对象的对象标识。举例而言,在视频应用中,该所处理对象为所看视频,基于位置的查询请求可以为:查询附近位置与自己的观看同一视频的用户,或者,查询附近观看同一视频的用户中距离最近的用户,等等;在交友应用中,该所处理对象为所玩游戏的游戏,该基于位置的查询请求可以为:查询附近位置与自己所玩游戏相同的用户,或者,查询附近玩同一游戏的用户中距离最近的用户。
[0062]举例而言,假设经度信息为101.37,玮度信息为39.40的用户D正在观看《盗墓笔记》,那么,该用户D所发出的查询请求携带的信息可以为:经玮度信息39.40(玮度),101.37(经度),或者,也可以为:经玮度信息和正在观看的视频《盗墓笔记》。
[0063]S102,将该目标经玮度信息按照预设地址编码方式转换成目标一维字符串信息;
[0064]在接收用户通过终端发出的基于位置的查询请求后,可以将该目标经玮度信息按照预设地址编码方式转换成目标一维字符串信息。
[0065]其中,在一种实现方式中,可以通过geohash编码方式将目标经玮度信息转换成目标一维字符串信息。举例而言,将上述的用户D的经玮度信息转换为16位的一维字符串信息,具体方法如下:
[0066]首先,将玮度信息转换为8位的一维字符串信息:
[0067](1)将地球玮度区间[-90,90]进行二分为[-90,0),[0,90],称为左右区间,如果给定的玮度属于左区间,则标记为0,属于右区间,则标记为1。
[0068]例如,将地球玮度区间[-90,90]进行二分为[_90,0),[0,90],可以确定用户0的玮度39.40属于右区间[0,90],标记为1;
[0069](2)再将区间[0,90]进行二分为[0,45),[45,90],可以确定玮度39.40属于左区间[0,45),标记为0;
[0070]重复上述过程,玮度39.40总是属于某个区间[a,b],随着每次迭代区间[a,b]在缩小,并越来越接近39.40;
[0071]重复八次迭代后,产生一个与用户D玮度对应的一位字符串信息10111000;其中,序列的长度与区间划分次数相同,可以根据实际需要进行设定,并且,划分次数越多,精度越高,在此不做具体限定。
[0072]其次,将经度信息转换为8位的一维字符串信息:
[0073]通过与玮度信息相同的转换方式,将经度信息转换为8位的一维字符串信息,例如:得到与用户D的经度对应的一位字符串信息11001000;
[0074]再次,将与玮度对应的一位字符串信息放在奇数位,与经度对应的一位字符串信息放在偶数位,两个一维字符串交叉组合成一个一位字符串信息1101101011000000;该一位字符串信息即为用户D的经玮度信息对应的一位字符串信息。
[0075]需要强调的是,上述的将该目标经玮度信息按照预设地址编码方式转换成目标一维字符串信息的具体实现方式仅仅作为示例,并不应该构成对本发明实施例的限定。
[0076]S103,从预先构建的多叉树索引中,确定查找路径上的节点标识的组合与该目标一维字符串信息相同的目标叶子节点;
[0077]其中,在执行步骤S101和步骤S102之前,需要基于预先获得的各个终端的经玮度信息所对应的一维字符串信息建立一个多叉树索引,进而,在获得目标一维字符串信息后,可以从预先构建的多叉树索引中,确定查找路径上的节点标识的组合与该目标一维字符串信息相同的目标叶子节点。其中,该多叉树索引中,叶子节点所对应查找路径上的节点标识的组合与预先获得的一维字符串信息相同,其中,叶子节点存储有与相应一维字符串信息所对应经玮度信息以及该经玮度信息所对应用户信息。需要强调的是,本实施例中,所述叶子节点为没有分离为子节点的最后一层节点;每一个子节点对应的一维字符串信息所分离的子信息为该节点的节点标识。
[0078]具体的,多叉树索引的建立方式可以是:
[0079]将预先获得的各个终端的经玮度信息所对应的一维字符串信息的每两位分离为一组子信息 ;以根节点为起点,向下分离节点标识00、01、10、11四个中的一个或多个的有序排列的子节点,每个子节点继续分离所述四个中的一个或多个的有序排列的子节点,以此类推,建立一个多叉树索引,该多叉树索引中,每个一维字符串信息的各组子信息依次对应于相应叶子节点所对应查找路径上的每层节点标识,并且,每个一维字符串信息所对应经玮度信息和该经玮度信息所对应的用户信息存储在相应叶子节点中。
[0080]可以理解的是,各个终端的经玮度信息所对应的一维字符串信息的形成方式可以参照上述的将该目标经玮度信息按照预设地址编码方式转换成目标一维字符串信息的方式。例如,如图1所示,预先获得了用户A的位置为39.92,101.49,对应的一位字符串信息为1101101011000000,在观看视频《盗墓笔记》;用户B的位置为39.39,101.36,对应的一位字符串信息为1101101011000000,在观看视频《花千骨》;用户C的位置为39.36,101.30,对应的一位字符串信息为1101101001101010,在观看视频《盗墓笔记》;分别将用户A、B、C的经玮度信息所对应的一位字符串信息的每两位分离为一组子信息;用户A对应的一维字符串信息所分离的子信息为:11,01,10,10,11,00,00,00;用户B对应的一维字符串信息所分离的子信息为:11,01,10,10,11,00,00,00;用户C对应的一维字符串信息所分离的子信息为:11,01,10,10,01,10,10,10;以根节点为起点,根据用户六、8、(:所对应的子信息分离节点;由于用户A、B、C所对应的第一组子信息都是11,所以将根节点分离为第一层子节点11,按照同样的方式,继续分离为第二层子节点01,第三层子节点10,第四层子节点10,由于用户A、B所对应的第五组子信息是10,用户C所对应的第五组子信息是01,所以分离为第五层子节点10和01,第五层子节点10按照用户A、B所对应的子信息分离为第六层子节点00,再分离为第七层子节点00,最后分离为第八层叶子节点00;第五层子节点01按照用户C所对应的子信息分离为第六层子节点10,再分离为第七层子节点10,最后分离为第八层叶子节点10,多叉树索引建立完成。
[0081]需要说明的是,每一个节点都可以分离为00、01、10、11四个有序排列的子节点,实际应用时,可以根据预先获得的各个终端的经玮度信息所对应的一维字符串信息的不同,在需要分离的时候才将对应的节点进行分离,避免索引上出现过多无用的节点,提高计算速度;其中,多叉树索引的每一个相同层级的子节点可以通过有序排列,来减少查询计算量,进一步提升查询速度。另外,需要强调的是,用户信息可以包括:用户标识和所处理对象的对象标识,举例而言,对于视频应用而言,所处理对象为用户正在观看的视频,对于交友应用而言,所处理对象为用户正在玩的游戏。另外,所谓每个一维字符串信息所对应经玮度信息和该经玮度信息所对应的用户信息存储在相应叶子节点中,举例而言:如图1所示,用户A、B、C的经玮度信息和各自正在观看的视频信息分别存储在相应的第八层叶子节点00和10中,其中,由于用户A和B的经玮度信息对应的一位字符串信息相同,用户A和B的经玮度信息和用户信息存储在同一叶子节点00中。
[0082]进一步的,对于确定查找路径上的节点标识的组合与该目标一维字符串信息相同的目标叶子节点的具体方式,举例而言:用户D的经玮度信息对应的一位字符串信息为1101101011000000,分离为子信息11,01,10,10,11,00,00,00,在上述建立的多叉树索引中,从根节点开始,由上到下,查找节点标识与子信息相同的节点,经过八次查找,找到第八层节点标识为00的叶子节点,即为所要查找的目标叶子节点。
[0083]S104,基于该目标叶子节点所对应的存储信息,确定该查询请求所对应的结果信息;
[0084]具体的,可以根据查询请求所请求的内容,来基于所述该目标叶子节点所对应的存储信息,确定得到所述该查询请求所对应的结果信息。举例而言:可以将该目标叶子节点所对应的存储信息中的用户信息中的用户标识、所处理对象的对象标识以及通过位置信息所计算得到的距离信息中的一种或多种作为结果信息;或者,可以比较所述该目标叶子节点对应储存预先获得的各个终端的用户的经玮度信息,确定与该查询请求携带的目标经玮度信息距离最近的用户所对应的用户信息中的用户标识、所处理对象的对象标识以及通过位置信息所计算得到的距离信息中的一种或多种作为结果信息。
[0085]例如,
[0086]用户D所对应的目标叶子节点中存储有用户A和B的经玮度信息和相应的用户信息;
[0087]如果用户D发出的查询请求为“附近的人在观看什么视频”,则将用户A正在观看《盗墓笔记》和用户B正在观看《花千骨》作为结果信息;
[0088]如果用户D发出的查询请求为“附近有几个人在看与自己相同的视频”,则将有一个用户A正在观看《盗墓笔记》作为结果信息;
[0089]如果用户D发出的查询请求为“附近有几个人在看《花千骨》”,则将有一个用户BE在观看《花千骨》作为结果信息。
[0090]如果用户D发出的查询请求为“与自己观看相同视频的附近的人的位置”,则将用户A的位置39.92,101.49作为结果信息;当然,结果信息并不局限于此。
[0091 ] S105,将该查询请求所对应的结果信息反馈给该终端。
[0092]其中,在获得该查询请求所对应的结果信息后,可以将该查询请求所对应的结果信息反馈给该终端。具体的,可以根据实际需要采用多种方式来将结果信息反馈给终端,在此不做具体限定。
[0093]需要说明的是,上述方法还可以包括周期性地获得各个终端的经玮度信息,并在每次获得各个终端的经玮度信息后,基于当前所获得的经玮度信息所对应的一维字符串信息进行多叉树索引的构建,构建完成后,将当前所建立的多叉树索引作为待利用的多叉树索引,实现多叉树索引的实时更新,保证查询结果的准确。当接收到的多个查询请求处于该周期内时,在处理查询请求时不需要多次建立多叉树索引。
[0094]与现有技术相比,本发明实施例提供的一种基于位置的数据查询方法及装置,月艮务器基于预先获得的各个终端的经玮度信息所对应的一维字符串信息形成多叉树索引;进而,在接收到携带有目标经玮度信息的基于位置的查询请求后,将目标经玮度信息按照预设地址编码方式转换成目标一维字符串信息,并利用该目标一维字符串信息来遍历多叉树索引以得到结果信息,而并非将目标经玮度信息与预先获得的各个终端的经玮度信息的逐一计算,因此,通过本方案可以减少服务器的计算量,降低由于用户基数大或用户请求量多给服务器造成的计算压力。
[0095]下面对本发明实施例所提供的第二种基于位置的数据查询方法进行介绍。
[0096]如图4所示,一种基于位置的数据查询方法,可以包括:
[0097]S201,接收用户通过终端发出的基于位置的查询请求,所述查询请求携带所述终端所在位置的目标经玮度信息;
[0098]S202,将所述目标经玮度信息按照预设地址编码方式转换成目标一维字符串信息;
[0099]S203,从预先构建的多叉树索引中,确定查找路径上的节点标识的组合与该目标一维字符串信息相同的目标叶子节点;
[0100]上述三个步骤分别与步骤S101、步骤S102、步骤S103相似,相关之处参见步骤S101、步骤S102、步骤S103的部分说明即可。
[0101]S204,从预先构建的方形编码图中,查找位于该目标叶子节点预定方向的叶子节占.
[0102]具体的,如图2所示,方形编码图内规则地分布有与目标一维字符串信息位数相同的所有二进制字符串信息(此处以一位字符串信息为四位为例),且分布方式依据横坐标从左到右依次为0和1以及纵坐标从下往上依次为0和1的行走方式所确定;
[0103]其中,所述目标叶子节点预定方向的叶子节点为,在方形编码图上,与该目标叶子节点所对应的一维字符串信息所在方块周围的方块中的一位字符串信息所对应的叶子节点。
[0104]需要说明的是,所述预定方向可以为四个方向、八个方向或者任一指定的若干方向。例如,假设目标叶子节点对应的一位字符串信息为1100,则分别与一位字符串信息0111、1101、1111、1110、1011、1001、0011和0110对应的叶子节点即为该目标叶子节点预定八个方向的叶子节点。
[0105]S205,基于该目标叶子节点所对应的存储信息和位于该目标节点预定方向的叶子节点所对应的存储信息,得到该查询请求所对应的结果信息;
[0106]具体的,可以根据查询请求所请求的内容,来基于该目标叶子节点所对应的存储信息和位于该目标节点预定方向的叶子节点所对应的存储信息,得到该查询请求所对应的结果信息。举例而言:可以将该目标叶子节点和位于该目标节点预定方向的叶子节点所对应的存储信息中的用户信息中的用户标识、所处理对象的对象标识以及通过位置信息所计算得到的距离信息中的一种或多种作为结果信息;或者,可以比较该目标叶子节点和位于该目标节点预定方向的叶子节点对应储存预先获得的各个终端的用户的经玮度信息,确定与该查询请求携带的目标经玮度信息距离最近的用户所对应用户信息中的用户标识、所处理对象的对象标识以及通过位置信息所计算得到的距离信息中的一种或多种作为结果信息,这样可以找到所对应一维字符串信息与目标叶子节点对应的一维字符串信息相差较大,但是实际经玮度位置与目标经玮度位置距离较近的用户位置及其对应的用户信息。
[0107]例如,在查找到用户D随对应的目标叶子节点后,发现该目标叶子节点中存储有用户A和B的经玮度信息和相应的用户信息;然后查找该目标叶子节点预定八个方向的叶子节点,发现存储有用户C的经玮度信息及用户信息的第八层叶子节点10。比较用户A、B、C与用户D的距离,发现用户C与用户D的距离比用户A与用户D的距离小;
[0108]如果用户D发出的查询请求为“与自己观看相同视频且距离自己最近的人”,则将用户C作为结果信息;
[0109]如果用户D发出的查询请求为“距离自己最近的人在观看什么视频”,则将用户C在观看《盗墓笔记》作为结果信息;当然,结果信息并不局限于此。
[0110]S206,将该查询请求所对应的结果信息反馈给该终端。
[0111]具体的,可以根据实际需要采用多种方式来将结果信息反馈给终端,在此不做具体限定。
[0112]需要说明的是,上述方法还包括周期性地获得各个终端的经玮度信息,并在每次获得各个终端的经玮度信息后,基于当前所获得的经玮度信息所对应的一维字符串信息进行多叉树索引的构建,构建完成后,将当前所建立的多叉树索引作为待利用的多叉树索引,实现多叉树索引的实时更新,保证查询结果的准确。当接收到的多个查询请求处于该周期内时,在处理时不需要多次建立多叉树索引。
[0113]本实施例所述方案在上述实施例的基础上,增加了对方形编码图的搜寻,可以降低由于用户基数大或用户请求量多给服务器造成的计算压力的前提下,提高结果信息的精准性。
[0114]相应于上述方法实施例,本发明实施例还提供了一种基于位置的数据查询装置,如图5所示,所述装置,可以包括:
[0115]查询请求接收模块510,用于接收用户通过终端发出的基于位置的查询请求,所述查询请求携带所述终端所在位置的目标经玮度信息;
[0116]信息转换模块520,用于将所述目标经玮度信息按照预设地址编码方式转换成目标一维字符串信息;
[0117]查找模块530,用于从预先构建的多叉树索引中,确定查找路径上的节点标识的组合与该目标一维字符串信息相同的目标叶子节点;其中,叶子节点存储有与相应一维字符串信息所对应经玮度信息以及该经玮度信息所对应用户信息;
[0118]结果信息确定模块540,用于基于所述目标叶子节点所对应的存储信息,确定所述查询请求所对应的结果信息;
[0119]结果信息反馈模块550,用于将所述查询请求所对应的结果信息反馈给所述终端。
[0120]与现有技术相比,本发明实施例提供的一种基于位置的数据查询方法及装置,月艮务器基于预先获得的各个终端的经玮度信息所对应的一维字符串信息形成多叉树索引;进而,在接收到携带有目标经玮度信息的基于位置的查询请求后,将目标经玮度信息按照预设地址编码方式转换成目标一维字符串信息,并利用该目标一维字符串信息来遍历多叉树索引以得到结果信息,而并非将目标经玮度信息与预先获得的各个终端的经玮度信息的逐一计算,因此,通过本方案可以减少服务器的计算量,降低由于用户基数大或用户请求量多给服务器造成的计算压力。
[0121 ]更进一步的,所述查询请求携带信息还包括所述终端的用户信息;
[0122]相应的,所述结果信息确定模块540,可以包括:第一结果信息确定单元,用于根据查询请求携带的所述终端的用户信息和所述目标叶子节点所对应的储存信息,得到所述查询请求所对应的结果信息。
[0123]具体的,所述预设地址编码方式为geohash编码方式。
[0124]具体的,所述多叉树索引通过索引建立模块预先构建;
[0125]其中,所述索引建立模块,可以包括:
[0126]分组单元,用于将预先获得的各个终端的经玮度信息所对应的一维字符串信息的每两位分离为一组子信息;
[0127]构建单元,用于以根节点为起点,向下分离节点标识为00、01、10、11四个中的一个或多个的有序排列的子节点,每个子节点继续分离所述四个中的一个或多个的有序排列的子节点,以此类推,建立一个多叉树索引,所述多叉树索引中,每个一维字符串信息的各组子信息依次对应于相应叶子节点所对应查找路径上的每层节点标识,并且,每个一维字符串信息所对应经玮度信息和该经玮度信息所对应的用户信息存储在相应叶子节点中。
[0128]更进一步的,本发明实施例所提供的一种基于位置的数据查询装置还可以包括:
[0129]叶子节点查找模块,用于在查找到所述目标叶子节点之后,确定所述查询请求所对应的结果信息之前,从预先构建的方形编码图中,查找位于所述目标节点预定方向的叶子节点;其中,所述方形编码图内规则地分布有与目标一维字符串信息位数相同的所有二进制字符串信息,且分布方式依据横坐标从左到右依次为0和1以及纵坐标从下往上依次为0和1的行走方式所确定;
[0130]所述结果信息确定模块540,可以包括:
[0131 ]第二结果信息确定单元,用于基于所述目标叶子节点所对应的存储信息和位于所述目标节点预定方向的叶子节点所对应的存储信息,得到所述查询请求所对应的结果信息。
[0132]具体的,所述第二结果信息确定单元具体用于:比较所述目标叶子节点和位于所述目标节点预定方向的叶子节点对应储存的用户的经玮度信息,确定与目标经玮度信息距离最近的用户所对应的用户信息和/或位置信息作为结果信息。
[0133]更进一步的,本发明实施例所提供的一种基于位置的数据查询装置还可以包括:
[0134]索引更新模块,用于周期性地获得各个终端的经玮度信息,并在每次获得各个终端的经玮度信息后,基于当前所获得的经玮度信息所对应的一维字符串信息进行多叉树索引的构建,构建完成后,将当前所建立的多叉树索引作为待利用的多叉树索引。
[0135]对于装置实施例而言,由于其基本相似与方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0136]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0137]本说明 书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0138]以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
【主权项】
1.一种基于位置的数据查询方法,其特征在于,应用于服务器,所述方法包括步骤: 接收用户通过终端发出的基于位置的查询请求,所述查询请求携带所述终端所在位置的目标经玮度信息; 将所述目标经玮度信息按照预设地址编码方式转换成目标一维字符串信息; 从预先构建的多叉树索引中,确定查找路径上的节点标识的组合与该目标一维字符串信息相同的目标叶子节点;所述多叉树索引基于预先获得的各个终端的经玮度信息所对应的一维字符串信息形成且叶子节点所对应查找路径上的节点标识的组合与预先获得的一维字符串信息相同,其中,叶子节点存储有与相应一维字符串信息所对应经玮度信息以及该经玮度信息所对应用户信息; 基于所述目标叶子节点所对应的存储信息,确定所述查询请求所对应的结果信息; 将所述查询请求所对应的结果信息反馈给所述终端。2.如权利要求1所述的方法,其特征在于,所述查询请求携带信息还包括所述终端的用户信息; 所述基于所述目标叶子节点所对应的存储信息,确定所述查询请求所对应的结果信息,包括: 根据查询请求携带的所述终端的用户信息和所述目标叶子节点所对应的储存信息,得到所述查询请求所对应的结果信息。3.如权利要求1所述的方法,其特征在于,所述预设地址编码方式为geohash编码方式。4.如权利要求1所述的方法,其特征在于,所述多叉树索引的建立方式具体为: 将预先获得的各个终端的经玮度信息所对应的一维字符串信息的每两位分离为一组子信息; 以根节点为起点,向下分离节点标识00、01、10、11四个中的一个或多个的有序排列的子节点,每个子节点继续分离所述四个中的一个或多个的有序排列的子节点,以此类推,建立一个多叉树索引,所述多叉树索引中,每个一维字符串信息的各组子信息依次对应于相应叶子节点所对应查找路径上的每层节点标识,并且,每个一维字符串信息所对应经玮度信息和该经玮度信息所对应的用户信息存储在相应叶子节点中。5.如权利要求1所述的方法,其特征在于,在查找到所述目标叶子节点之后,确定所述查询请求所对应的结果信息之前,所述方法还包括: 从预先构建的方形编码图中,查找位于所述目标叶子节点预定方向的叶子节点;其中,所述方形编码图内规则地分布有与目标一维字符串信息位数相同的所有二进制字符串信息,且分布方式依据横坐标从左到右依次为0和1以及纵坐标从下往上依次为0和1的行走方式所确定; 所述基于所述目标叶子节点所对应的目标存储信息,确定所述查询请求所对应的结果信息,包括: 基于所述目标叶子节点所对应的存储信息和位于所述目标节点预定方向的叶子节点所对应的存储信息,得到所述查询请求所对应的结果信息。6.如权利要求5所述的方法,其特征在于,所述基于所述目标叶子节点所对应的存储信息和位于所述目标节点预定方向的叶子节点所对应的存储信息,确定所述查询请求所对应的结果信息,包括: 比较所述目标叶子节点和位于所述目标节点预定方向的叶子节点对应储存的用户的经玮度信息,确定与所述目标经玮度信息距离最近的用户所对应的用户信息和/或位置信息作为结果信息。7.如权利要求1-6任一项所述的方法,其特征在于,还包括: 周期性地获得各个终端的经玮度信息,并在每次获得各个终端的经玮度信息后,基于当前所获得的经玮度信息所对应的一维字符串信息进行多叉树索引的构建,构建完成后,将当前所建立的多叉树索引作为待利用的多叉树索引。8.一种基于位置的数据查询装置,其特征在于,应用于服务器,所述装置包括: 查询请求接收模块,用于接收用户通过终端发出的基于位置的查询请求,所述查询请求携带所述终端所在位置的目标经玮度信息; 信息转换模块,用于将所述目标经玮度信息按照预设地址编码方式转换成目标一维字符串信息; 查找模块,用于从预先构建的多叉树索引中,确定查找路径上的节点标识的组合与该目标一维字符串信息相同的目标叶子节点,所述多叉树索引基于预先获得的各个终端的经玮度信息所对应的一维字符串信息形成且叶子节点所对应查找路径上的节点标识的组合与预先获得的一维字符串信息相同,其中,叶子节点存储有与相应一维字符串信息所对应经玮度信息以及该经玮度信息所对应用户信息; 结果信息确定模块,用于基于所述目标叶子节点所对应的存储信息,确定所述查询请求所对应的结果信息; 结果信息反馈模块,用于将所述查询请求所对应的结果信息反馈给所述终端。9.如权利要求8所述的装置,其特征在于,所述查询请求携带信息还包括所述终端的用户信息; 所述结果信息确定模块,包括:第一结果信息确定单元,用于根据查询请求携带的所述终端的用户信息和所述目标叶子节点所对应的储存信息,得到所述查询请求所对应的结果?目息。10.如权利要求8所述的装置,其特征在于,所述预设地址编码方式为geohash编码方式。11.如权利要求8所述的装置,其特征在于,所述多叉树索引通过索引建立模块预先构建; 其中,所述索引建立模块,包括: 分组单元,用于将预先获得的各个终端的经玮度信息所对应的一维字符串信息的每两位分尚为一组子信息; 构建单元,用于以根节点为起点,向下分离节点标识为00、01、10、11四个中的一个或多个的有序排列的子节点,每个子节点继续分离所述四个中的一个或多个的有序排列的子节点,以此类推,建立一个多叉树索引,所述多叉树索引中,每个一维字符串信息的各组子信息依次对应于相应叶子节点所对应查找路径上的每层节点标识,并且,每个一维字符串信息所对应经玮度信息和该经玮度信息所对应的用户信息存储在相应叶子节点中。12.如权利要求8所述的装置,其特征在于,还包括: 叶子节点查找模块,用于在查找到所述目标叶子节点之后,确定所述查询请求所对应的结果信息之前,从预先构建的方形编码图中,查找位于所述目标节点预定方向的叶子节点;其中,所述方形编码图内规则地分布有与目标一维字符串信息位数相同的所有二进制字符串信息,且分布方式依据横坐标从左到右依次为0和1以及纵坐标从下往上依次为0和1的行走方式所确定; 所述结果信息确定模块,包括: 第二结果信息确定单元,用于基于所述目标叶子节点所对应的存储信息和位于所述目标节点预定方向的叶子节点所对应的存储信息,得到所述查询请求所对应的结果信息。13.如权利要求12所述的装置,其特征在于,所述第二结果信息确定单元具体用于:比较所述目标叶子节点和位于所述目标节点预定方向的叶子节点对应储存的用户的经玮度信息,确定与目标经玮度信息距离最近的用户所对应的用户信息和/或位置信息作为结果?目息。14.如权利要求8-13任一项所述的装置,其特征在于,还包括: 索引更新模块,用于周期性地获得各个终端的经玮度信息,并在每次获得各个终端的经玮度信息后,基于当前所获得的经玮度信息所对应的一维字符串信息进行多叉树索引的构建,构建完成后,将当前所建立的多叉树索引作为待利用的多叉树索引。
【专利摘要】本发明实施例提供了一种基于位置的数据查询方法及装置,应用于服务器,包括步骤:接收用户通过终端发出的基于位置的查询请求;将所述目标经纬度信息按照预设地址编码方式转换成目标一维字符串信息;从预先构建的多叉树索引中,确定查找路径上的节点标识的组合与该目标一维字符串信息相同的目标叶子节点;基于所述目标叶子节点所对应的存储信息,确定所述查询请求所对应的结果信息;将所述查询请求所对应的结果信息反馈给所述终端。应用本发明实施例,减少了服务器的计算量,降低了由于用户基数大或用户请求量多给服务器造成的计算压力。
【IPC分类】G06F17/30
【公开号】CN105488172
【申请号】CN201510860207
【发明人】谢敏, 王敏, 张时骏
【申请人】北京奇艺世纪科技有限公司
【公开日】2016年4月13日
【申请日】2015年11月30日

最新回复(0)