商户查找方法、装置、电子设备和存储介质与流程

文档序号:17442208发布日期:2019-04-17 04:54阅读:186来源:国知局
商户查找方法、装置、电子设备和存储介质与流程

本发明涉及电商技术领域,尤其涉及一种商户查找方法、装置、电子设备和存储介质。



背景技术:

随着互联网的发展,网上购物越来越普遍,在餐饮、酒店等行业,用户通过网络便可实现快速下单。例如外卖行业,用户下单过程中,先定位到自己的位置,然后根据点餐需求选择商户进行下单。这个过程包含了基于位置服务(lbs)的空间位置搜索的过程,即根据用户定位的位置搜索到附近可以为用户提供配送服务的商家列表。

目前有关lbs空间搜索的实现方案,相关技术一是利用关系型数据库管理系统(postgresql)的空间查询功能,这种方案在搜索商家时,采用的是对所有商户配送区域逐一比较的方式,适合商户配送区域数量较少的情况,当面对商户配送区域数量上万的情况,显然这种方案不能接受;相关技术二是利用搜索引擎lucene空间查询,将配送区域划分为若干个网格之后,利用网格与用户位置的关系进行索引及查询,其在性能上有一定提升,但是此方案因为增加了空间数据量,当空间数据达到百万、千万级别的情况下,索引太大,会导致查询结果存在误差。



技术实现要素:

本发明实施方式的目的在于提供一种商户查找方法、装置、电子设备和存储介质,采用基于索引树的空间位置搜索方案及外接矩形过滤的思想,将距离相近的商户进行聚合,当用户查找商户时,可快速找到符合搜索条件的商户。

为解决上述技术问题,本发明的实施方式提供了一种商户查找方法,包括:获取用户的地理位置,利用预先建立的索引树查找覆盖地理位置的第一外接矩形,其中,第一外接矩形为覆盖商户配送区域的最小外接矩形;确定地理位置被第一外接矩形对应的配送区域覆盖的目标配送区域;将目标配送区域对应的商户作为地理位置对应的可配送商户;其中,索引树的叶子节点对应第一外接矩形,索引树的非叶子节点对应第二外接矩形,第二外接矩形为根据至少两个商户配送区域确定的最小外接矩形。

本发明的实施方式还提供了一种商户查找装置,包括:查找模块,用于获取用户的地理位置,利用预先建立的索引树查找覆盖地理位置的第一外接矩形,其中,第一外接矩形为覆盖商户配送区域的最小外接矩形;目标配送区域确定模块,用于确定地理位置被第一外接矩形对应的配送区域覆盖的目标配送区域;可配送商户确定模块,用于将目标配送区域对应的商户作为地理位置对应的可配送商户;其中,索引树的叶子节点对应第一外接矩形,索引树的非叶子节点对应第二外接矩形,第二外接矩形为根据商圈内至少两个商户配送区域确定的最小外接矩形。

本发明的实施方式还提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行以实现:获取用户的地理位置,利用预先建立的索引树查找覆盖地理位置的第一外接矩形,其中,第一外接矩形为覆盖商户配送区域的最小外接矩形;确定地理位置被第一外接矩形对应的配送区域覆盖的目标配送区域;将目标配送区域对应的商户作为地理位置对应的可配送商户;其中,索引树的叶子节点对应第一外接矩形,索引树的非叶子节点对应第二外接矩形,第二外接矩形为根据至少两个商户配送区域确定的最小外接矩形。

本发明的实施方式还提供了一种非易失性存储介质,用于存储计算机可读程序,计算机可读程序用于供计算机执行如上的商户查找方法。

本发明实施方式相对于现有技术而言,主要区别及其效果在于:采用了基于索引树的空间位置搜索方案及配送区域对应外接矩形过滤的思想,将距离相近的商户进行聚合,当用户查找商户时,大大降低了运算量,可快速找到符合搜索条件的商户。

另外,索引树的每个非叶子节点的子节点中包括第一数量的叶子节点,第一数量小于节点数阈值。避免因节点数量太多,导致聚类效果不好,增加查找过程的计算量。

另外,索引树的每个非叶子节点的子节点中包括第二数量的叶子节点和第三数量的非叶子节点;第二数量和第三数量的和小于节点数阈值。避免因节点数量太多,导致聚类效果不好,增加查找过程的计算量。

另外,创建索引树时,包括由两个第三外接矩形确定动态变化的公共矩形;若两个第三外接矩形为相互包含,公共矩形等于两个第三外接矩形中的较大者;若两个第三外接矩形为部分重叠或相互分离,公共矩形等于覆盖两个第三外接矩形的最小外接矩形;其中,两个第三外接矩形包括一个第一外接矩形和一个公共矩形,或者包括两个第一外接矩形;所述索引树每一层级的所述第二外接矩形为创建完成时的索引树对应层级的所述公共矩形。根据位置关系,将距离最相近的商户的外接矩形进行聚合,更加符合用户搜索的场景,能够快速找到与用户位置相匹配的多个商户。

另外,创建所述索引树还包括:从若干个待插入的第一外接矩形中选择与在建索引树最高层的公共矩形距离最近的第一外接矩形;根据所述距离最近的第一外接矩形与所述在建索引树中未饱和公共矩形的位置关系确定所述距离最近的第一外接矩形插入的层级;其中,所述在建索引树对应所述索引树创建完成之前的任一状态;所述未饱和公共矩形为子节点数小于所述节点数阈值的所述公共矩形。根据待插入的第一外接矩形与每一层级的公共矩形的位置关系选择插入的层级,使聚类效果更好。

另外,所述根据所述距离最近的第一外接矩形与所述在建索引树中未饱和公共矩形的位置关系确定所述距离最近的第一外接矩形插入的层级,包括:若存在若干个所述未饱和公共矩形与所述距离最近的第一外接矩形的位置关系为包含所述距离最近的第一外接矩形,则确定所述插入层级为若干个所述未饱和公共矩形中的最小公共矩形的下一层;若距离最近的第一外接矩形与所述在建索引树最高层的公共矩形的位置关系为部分重叠或相互分离,则确定所述插入层级为所述在建索引树的最高层。将待插入的第一外接矩形插入到具有包含关系的最小公共矩形中,提高聚类效果,进而提升搜索效率。

另外,获取用户的地理位置,利用预先建立的索引树查找覆盖地理位置的第一外接矩形,包括:在索引树中从根节点开始依次确定覆盖地理位置的每级第二外接矩形;从覆盖地理位置的最末级第二外接矩形包含的叶子节点中,确定覆盖地理位置的每个第一外接矩形。自上而下查找,快速判断,过滤掉不符合搜索条件的商户。

另外,在索引树中从根节点开始依次确定覆盖地理位置的每级第二外接矩形之前,还包括:根据地理位置确定用户所属的商圈及商圈对应的索引树。以商圈为单位建立每个商圈的索引树,进而选择与用户位置所在商圈对应的索引树进行查找对应的配送区域,提高查找速度。

另外,利用预先建立的索引树查找覆盖地理位置的第一外接矩形,包括:判断地理位置是否位于第一外接矩形的经纬度极值区间内,若是,则确定第一外接矩形覆盖地理位置,否则,确定第一外接矩形未覆盖地理位置。利用经纬度极值信息进行判断,计算数据量大大减少,可快速得到判断结果。

另外,当覆盖地理位置的第一外接矩形为至少两个时,确定地理位置被第一外接矩形对应的配送区域覆盖的目标配送区域,包括:采用并行计算方式,同时判断地理位置是否被覆盖地理位置的每个第一外接矩形对应的配送区域覆盖。提高用户获取查找结果的速度。

另外,在将目标配送区域对应的商户作为地理位置对应的可配送商户之后,还包括:发送可配送商户到用户的终端设备,由终端设备显示可配送商户的信息。便于用户查看和选择,提升用户体验。

另外,地理位置和配送区域用经纬度信息表示。利用经纬度信息,获取地理位置更准确,更方便。

另外,第一外接矩形根据如下步骤确定:确定商户配送区域内的经纬度极值,经纬度极值包括最大经度、最小经度、最大纬度和最小纬度;根据经纬度极值确定第一外接矩形。可以得到包含商户配送区域在内的最小外接矩形,减少查找过程中的计算量。

附图说明

图1是根据本发明第一实施方式提供的商户查找方法流程图;

图2是根据本发明第一实施方式中的确定配送区域的第一外接矩形的流程图;

图3是根据本发明第二实施方式中的确定非叶子节点的第二外接矩形的示意图;

图4是根据本发明第二实施方式中的r-tree索引树的示意图;

图5是根据本发明第三实施方式提供的商户查找装置示意图;

图6是根据本发明第四实施方式提供的电子设备示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

本发明的第一实施方式涉及一种商户查找方法,本实施方式可以应用在终端侧,如应用在手机,平板电脑等终端设备中,也可以应用在网络侧的服务器中。

餐饮领域中,商圈内包含若干个商户,每个商户有固定服务的配送区域,即商户只为位于自己配送区域范围内的用户提供下单及配送服务。用户通过网络下单时,会先搜索到自己所在位置所属配送区域对应的商户列表,然后选择商户进行下单。

图1是根据本发明第一实施方式提供的商户查找方法流程图,该方法包括:

s101、获取用户的地理位置,利用预先建立的索引树查找覆盖用户地理位置的第一外接矩形。

本实施方式中,索引树具体为r-tree索引树,即rectangle-tree(矩形索引树),是用于做空间数据存储的树状数据结构,其核心思想是聚合距离相近的节点并在树结构的上一层将其表示为这些节点的最小外接矩形,这个最小外接矩形就成为上一层的一个节点。r-tree索引树通过对空间数据建立索引,能够保证对一个空间数据的搜索只需要访问很小一部分的节点。

具体地,第一外接矩形为覆盖一个商户的配送区域的最小外接矩形,r-tree索引树的一个叶子节点对应一个第一外接矩形,r-tree索引树的一个非叶子节点对应一个第二外接矩形,第二外接矩形为根据商圈内至少两个商户的配送区域确定的最小外接矩形。

商户的配送区域对应一定的地理范围,配送区域的形状可能是规则的矩形,也可能是不规则形状。进一步地,用户的地理位置和商户的配送区域的地理位置信息为经纬度。根据本发明第一实施方式中的确定配送区域的第一外接矩形的流程如图2所示,根据配送区域的经纬度极值确定第一外接矩形,经纬度极值包括最大经度、最小经度、最大纬度和最小纬度。具体包括:

s1011、提取配送区域边界上的经纬度信息。经纬度信息包括配送区域边界上所有点的经度值和纬度值。

s1012、从经纬度信息中提取经纬度极值,即最大经度、最小经度、最大纬度和最小纬度;

具体地,在提取到的配送区域边界上的所有经度值中,找到最大经度和最小经度;在提取到的配送区域边界上的所有纬度值中,找到最大纬度和最小纬度。最大经度和最小经度例如分别为wmax和wmin,最大纬度和最小纬度例如分别为nmax和nmin。

s1013、根据最大经度和最大纬度确定第一外接矩形的第一坐标,根据最小经度和最小纬度确定第一外接矩形的第二坐标;

具体地例如,根据最大经度wmax和最大纬度nmax确定的第一外接矩形的第一坐标为c1(wmax,nmax),根据最小经度wmin和最小纬度确定的第一外接矩形的第二坐标为c2(wmin,nmin)。

s1014、根据第一坐标和第二坐标确定第一外接矩形。

具体地,以第一坐标c1(wmax,nmax)和第二坐标c2(wmin,nmin)之间的连线作为第一外接矩形的对角线,确定出配送区域对应的第一外接矩形。

本实施方式中,以商圈为单位建立r-tree索引树,即针对每一个商圈中包含的商户数量及每个商户的配送区域,建立起对应该商圈的r-tree索引树。

进一步地,预先建立的r-tree索引树的非叶子节点的下一层子节点包括第一数量的叶子节点,第一数量小于节点数阈值。或者,r-tree索引树的非叶子节点的下一层子节点包括第二数量的叶子节点和第三数量的非叶子节点,第二数量和第三数量的和小于节点数阈值。节点数阈值的大小具体根据商户的数量和树深度阈值来决定。当商户数量较多时,节点数阈值可设置较大的值,以使r-tree索引树的树深度不超过树深度阈值。当商户数量较少时,在r-tree索引树的树深度不超过树深度阈值的情况下,节点数阈值可设置较小的值,以使树深度较大,加快查找的速度。具体地,例如当商户数量为2000时,第一节点阈值可设置为6。其中,根节点上的第二外接矩形所表示的地理范围覆盖了商圈内所有商户的第一外接矩形。子节点上的第二外接矩形所表示的地理范围覆盖了若干个商户的第一外接矩形。

更为具体地,本实施方式中的r-tree索引树采用自下而上的顺序建立,最终建立的r-tree索引树的每一层最多有一个非叶子节点。在创建r-tree索引树的过程中,定义一个动态变化的矩形为公共矩形,公共矩形在r-tree索引树中的位置同于第二外接矩形的位置,即位于非叶子节点上。当r-tree索引树建立完成后,最终状态的r-tree索引树的非叶子节点上的公共矩形则确定为r-tree索引树的第二外接矩形。

上述动态变化的公共矩形由两个第三外接矩形确定,两个第三外接矩形包括一个第一外接矩形和一个公共矩形,或者包括两个第一外接矩形;由两个第三外接矩形确定公共矩形时,具体为,

若两个第三外接矩形为相互包含,公共矩形等于两个第三外接矩形中的较大者;

若两个第三外接矩形为部分重叠或相互分离,公共矩形等于覆盖两个第三外接矩形的最小外接矩形。

在一个实施方式中,例如最终建立的r-tree索引树共有n层,从最底层起编号依次为0、1、2、…、n-1。在创建r-tree索引树的过程中,当完成到第n层时,例如当前已建成部分为n-r-tree索引树,剩余若干个第一外接矩形待插入到索引树中。当前状态下,n-r-tree索引树的第n层包含1个非叶子节点,即1个公共矩形,n-r-tree索引树的第0层包含若干个叶子节点,即第一外接矩形,n-r-tree索引树的其他n-2层包含1个非叶子节点和若干个叶子节点,即包含1个公共矩形和若干个第一外接矩形。进一步地,从若干个待插入的第一外接矩形中选择一个与n-r-tree索引树第n层的公共矩形距离最近的第一外接矩形,需要将其插入到该n-r-tree索引树,则需要确定该最近的第一外接矩形插入的层级。具体为,从n-r-tree索引树的第n层的公共矩形开始,从上往下遍历每一层级的公共矩形,判断该最近的第一外接矩形与每一层级的公共矩形的位置关系,并根据位置关系确定该最近的第一外接矩形插入的层级,包括:

若存在包含该最近的第一外接矩形的公共矩形,且该公共矩形包含的子节点数小于节点数阈值时,则确定该最近的第一外接矩形的插入层级为包含该最近的第一外接矩形的公共矩形的下一层,即将该最近的第一外接矩形插入到包含该最近的第一外接矩形的公共矩形的子节点中。此时,包含该最近的第一外接矩形的公共矩形发生变化,即覆盖的第一外接矩形的数量增加一个。

进一步地,若存在多个包含该最近的第一外接矩形的公共矩形,且该多个公共矩形包含的子节点数小于节点数阈值时,则确定该最近的第一外接矩形的插入层级为该多个公共矩形中的最小公共矩形的下一层,即将该最近的第一外接矩形插入到该多个公共矩形中的最小公共矩形的子节点中。此时,该最小公共公共矩形发生变化,即覆盖的第一外接矩形的数量增加一个。

若不存在包含该最近的第一外接矩形的公共矩形,即此时该最近的第一外接矩形与第n层的公共矩形的位置关系为部分重叠或相互分离,则确定该最近的第一外接矩形的插入层级为n-r-tree索引树的第n层,即将该最近的第一外接矩形插入到该n-r-tree索引树第n层的叶子节点中,并且由该最近的第一外接矩形与n-r-tree索引树第n层的公共矩形确定n+1层的公共矩形,n+1层的公共矩形即为覆盖该最近的第一外接矩形与n-r-tree索引树第n层的公共矩形的最小外接矩形。此时n-r-tree索引树变成n+1-r-tree索引树,即r-tree索引树建到第n+1层。

在一个具体实施方式中,第n层的公共矩形定义为第n公共矩形。从第0层开始创建r-tree索引树的步骤例如包括:

(1)、选择距离最相近的两个第一外接矩形作为r-tree索引树第0层的叶子节点,确定覆盖距离最相近的两个第一外接矩形的第一公共矩形,以第一公共矩形作为r-tree索引树第1层的非叶子节点,并作为两个第一外接矩形的父节点;

其中,若两个第一外接矩形为相互包含,第一公共矩形等于两个第一外接矩形中的较大者;

若两个第一外接矩形为部分重叠或相互分离,第一公共矩形等于覆盖两个第一外接矩形的最小外接矩形。

(2)、选择与第一公共矩形距离最相近的第一外接矩形,确定覆盖第一公共矩形和距离最相近的第一外接矩形的公共矩形;

若第一公共矩形与距离最近的第一外接矩形为相互包含,公共矩形等于第一公共矩形和距离最相近的第一外接矩形中的较大者。

在一个例子中,较大者为第一公共矩形,则r-tree索引树的第0层增加一个叶子节点,r-tree索引树第1层的第一公共矩形的覆盖范围增加一个第一外接矩形,即与第一公共矩形最近的第一外接矩形。

在一个例子中,较大者为该最近的第一外接矩形,则确定r-tree索引树的第2层的第二公共矩形等于该最近的第一外接矩形,即成为第一公共矩形和该最近的第一外接矩形的父节点;r-tree索引树的第1层增加一个叶子节点,即与第一公共矩形最近的第一外接矩形。

若第一公共矩形与距离最近的第一外接矩形为部分重叠或相互分离,则确定r-tree索引树的第2层的第二公共矩形等于覆盖第一公共矩形和距离最近的第一外接矩形的最小外接矩形,r-tree索引树的第1层增加一个叶子节点,即与第一公共矩形最近的第一外接矩形。

按照上述方法,直到所有的第一外接矩形都使用完,r-tree索引树建立完成。值得说明的是,r-tree索引树建立过程中,当某一层的子节点数目已达到节点数阈值时,该层不再增加距离最近的第一外接矩形作为新增叶子节点。即此时,即使该层的公共矩形包含距离最近的第一外接矩形,也不将该第一外接矩形增加为该公共矩形的叶子节点,而是将该第一外接矩形增加为与该公共矩形同层的叶子节点。同时确定上一层的公共矩形,并且上一层的公共矩形等于下一层的公共矩形,但覆盖范围增加了该最近的第一外接矩形。

本实施方式中提及的距离最相近具体用于描述两个第一外接矩形的中心点距离的远近,或公共矩形与第一外接矩形的中心点的距离的远近,距离最相近的第一外接矩形表示到该第一外接矩形的中心点的距离最近。

进一步地,获取用户的地理位置,利用r-tree索引树中查找覆盖用户地理位置的第一外接矩形,具体如下:

通过对用户进行实时定位,获取用户的地理位置,例如经纬度信息,在r-tree索引树中从根节点开始依次确定覆盖用户的地理位置的每级第二外接矩形;从覆盖用户的地理位置的最末级第二外接矩形包含的叶子节点中,确定覆盖用户的地理位置的每个第一外接矩形。

更为具体地,若有叶子节点的第一外接矩形覆盖用户的地理位置,则将该第一外接矩形加入可配送第一外接矩形列表中;若有非叶子节点的第二外接矩形覆盖用户的地理位置,则继续查找该非叶子节点的下一层子节点,判断用户的地理位置是否被子节点中的叶子节点的第一外接矩形覆盖或者被子节点中的非叶子节点的第二外接矩形覆盖。直到找到所有覆盖用户地理位置的第一外接矩形,得到可配送第一外接矩形列表。

具体地,上述判断用户的地理位置是否被叶子节点的第一外接矩形覆盖,可以通过比较用户的地理位置与第一外接矩形的经纬度极值,若用户的地理位置位于第一外接矩形的经纬度极值区间内,则说明该第一外接矩形覆盖该用户位置。例如,比较用户地理位置的经度是否在第一外接矩形的最小经度到最大经度之间,且纬度是否在第一外接矩形的最小纬度到最大纬度之间。

s102、确定用户的地理位置被第一外接矩形对应的配送区域覆盖的目标配送区域。

根据步骤s101中查找到的包含用户位置的第一外接矩形,进而可以得到对应的商户。因为商户的第一外接矩形覆盖的地理范围并不同于商户的配送区域覆盖的地理范围,因此该商户的第一外接矩形包含用户位置,并不代表该商户的配送区域覆盖的地理范围也包含用户位置。因此进一步地,将用户位置的经纬度信息与覆盖用户位置的第一外接矩形对应的配送区域的覆盖范围进行比较,判断用户位置是否在该第一外接矩形对应的配送区域的覆盖范围内,从而确定覆盖用户位置的目标配送区域。

若用户位置的经纬度信息在该第一外接矩形对应的配送区域的覆盖范围内,说明该第一外接矩形对应的商户可为该用户提供配送服务,确定该第一外接矩形对应的配送区域为目标配送区域。

若用户位置的经纬度信息不在该第一外接矩形对应的配送区域的覆盖范围内,说明该第一外接矩形对应的商户不能为该用户提供配送服务。

进一步地,当覆盖用户位置的第一外接矩形数量有多个时,本步骤中判断该多个商户的配送区域是否覆盖用户位置时,可采用串行计算方式对多个配送区域依次进行判断,或者采用并行计算方式对多个配送区域同时进行判断。其中,串行计算方式是指对该多个商户的配送区域,逐个依次计算并判断每个商户的配送区域是否覆盖用户位置;并行计算方式是指对该多个商户的配送区域,同时计算并判断每个商户的配送区域是否覆盖用户位置。

s103、将目标配送区域对应的商户作为用户地理位置对应的可配送商户。

本实施方式中,目标配送区域对应的配送区域覆盖用户的地理位置,也就是说目标配送区域对应的商户能够为该用户提供配送服务,将该商户确定为该用户的可配送商户,也即该用户地理位置的可配送商户。

本实施方式中,当确定了用户的可配送商户之后,发送可配送商户到用户的终端设备,由终端设备显示可配送商户的信息。例如发送可配送商户到用户的手机上,并在手机屏幕上显示可配送商户的信息,显示内容可包括商户的id、商户名称、商户到用户的距离、配送费、起送价等。

本实施方式中,商户、商户的配送区域、配送区域的第一外接矩形通过商户的特征参数建立联系,商户的特征参数例如为商户的id。

本发明实施方式采用了基于索引树的空间位置搜索方案及外接矩形过滤的思想,将距离相近的商户进行聚合,在索引树结构的非叶子节点上表示为这些商户的第一外接矩形共同组成的公共外接矩形。当用户查找商户时,大大降低了运算量,可快速找到符合搜索条件的商户。另外根据配送区域边界上的最大经纬度和最小经纬度确定第一外接矩形,可以得到包含商户配送区域在内的最小外接矩形,减少查找过程中的计算量。

本发明的第二实施方式涉及一种基于空间位置的商户查找方法,本实施方式可以应用在终端侧,如应用在手机,平板电脑等终端设备中,也可以应用在网络侧的服务器中。

本发明第二实施方式提供的商户查找方法包括:

s201、获取用户的地理位置,利用预先建立的索引树查找覆盖用户的地理位置的第一外接矩形。

预先建立的r-tree索引树的非叶子节点的下一层子节点包括第一数量的叶子节点,第一数量小于节点数阈值。或者,r-tree索引树的非叶子节点的下一层子节点包括第二数量的叶子节点和第三数量的非叶子节点,第二数量和第三数量的和小于节点数阈值。节点数阈值的大小具体根据商户的数量和树深度阈值来决定。当商户数量较多时,节点数阈值可设置较大的值,以使r-tree索引树的树深度不超过树深度阈值。当商户数量较少时,在r-tree索引树的树深度不超过树深度阈值的情况下,节点数阈值可设置较小的值,以使树深度较大,加快查找的速度。具体地,例如当商户数量为2000时,第一节点阈值可设置为6。在一个具体例子中,设置r-tree索引树的节点数阈值为2,

具体地,根据本发明第二实施方式中的确定非叶子节点的第二外接矩形的示意图如图3所示。根据本发明第二实施方式中的r-tree索引树的示意图如图4所示。结合图3和图4,建立r-tree索引树时,可以从任一个第一外接矩形开始,例如可以从位于商圈最边缘的商户的第一外接矩形开始,也可以从位于商圈最中心的商户的第一外接矩形开始,将其与距离最相近的另一个第一外接矩形的经纬度范围进行比较,确定其上一层的父节点的公共外接矩形,再将该公共外接矩形与下一个距离最相近的第一外接矩形的经纬度范围进行比较,确定更上一层的父节点的虚拟节点外接矩形,同样的方法将每一个第一外接矩形插入r-tree索引树中,完成r-tree索引树的建立。

进一步地,假设商圈内商户总数量为5,对所有商户对应的第一外接矩形进行编号排序后为d1、d2、d3、d4、d5。序号相邻的第一外接矩形,表示地理位置也是相邻的。例如从d1开始,首先比较d1与距离最相近的第一外接矩形d2的经纬度范围,得到d1与d2为部分重叠,则确定得到其上一层的父节点的第一公共外接矩形为d12,d12的覆盖范围包含了两个第一外接矩形d1和d2。其次,比较第一公共外接矩形d12与下一个距离最相近的第一外接矩形d3的经纬度范围,得到d12与d3为相互独立,则确定得到其上一层的父节点的第二公共外接矩形为d123,d123的覆盖范围包含了三个第一外接矩形d1、d2、d3。再次,比较第二公共外接矩形d123与下一个距离最相近的第一外接矩形d4的经纬度范围,得到d123包含d4,则确定得到其上一层的父节点的第三公共外接矩形与d123的大小和位置相同,用d1~4表示,d1~4的覆盖范围包含了四个第一外接矩形d1、d2、d3、d4。同样的方法继续通过比较每一次得到的父节点的公共外接矩形与下一个距离最相近的第一外接矩形的经纬度范围的方法依次插入剩余的第一外接矩形d5,完成r树的建立。

进一步地,获取用户的地理位置,利用r-tree索引树中查找到覆盖用户地理位置的第一外接矩形,得到可配送第一外接矩形列表。

进一步地,在r-tree索引树中查找覆盖用户位置的第一外接矩形时,采用自上而下的查找顺序,即从根节点外接矩形开始查找,具体包括:

(1)、查找根节点对应的第二外接矩形是否包含用户位置:

若根节点对应的第二外接矩形不包含用户位置,说明商圈内所有的商户都不为该用户位置提供配送服务,结束查找;例如图3中的a用户,利用图5所示的r-tree索引树查找,不在第二外接矩形d1~5的覆盖范围内。

若根节点对应的第二外接矩形包含用户位置,则继续查找第二层的所有子节点的外接矩形是否包含用户位置。例如图3中的b用户或e用户,利用图4所示的r-tree索引树查找,在第二外接矩形d1~5的覆盖范围内。

(2)、依次查找第二层的所有子节点对应的外接矩形是否包含用户位置,所有子节点外接矩形包括若干个第二外接矩形,或者所有子节点外接矩形包括若干个第二外接矩形和若干个第一外接矩形。依次查找每一个子节点对应的外接矩形是否包含用户位置:

若叶子节点对应的第一外接矩形不包含用户位置,说明该叶子节点对应的商户不为该用户位置提供配送服务;例如图3中的b用户,经查找,不在第一外接矩形d5的覆盖范围内。

若叶子节点对应的外接矩形包含用户位置,说明该叶子节点对应的商户可以为该用户位置提供配送服务,记录该第一外接矩形;例如图3中的e用户,经查找,在第一外接矩形d5的覆盖范围内。

若第二外接矩形不包含用户位置,说明该第二外接矩形对应的商户不为该用户位置提供配送服务;

若第二外接矩形包含用户位置,说明该第二外接矩形对应的商户可以为该用户位置提供配送服务,则继续查找该第二外接矩形的第三层所有子节点对应的外接矩形是否包含用户位置;例如图3中的b用户,经查找,在第二外接矩形d1~4的覆盖范围内,则继续向下一层查找。

对于每一级中包含用户位置的第二外接矩形的子节点均按照如上步骤(2)的方法进行查找,直到查找到所有包含用户位置的第一外接矩形。

例如图3中的b用户,经过在r-tree索引树中自上而下的查找,最终查找到覆盖b用户位置的第一外接矩形有两个:d1和d2。

s202、确定用户的地理位置被第一外接矩形对应的配送区域覆盖的目标配送区域。具体如第一具体实施方式中步骤s102。

s203、将目标配送区域对应的商户作为用户地理位置对应的可配送商户。

本实施方式中,目标配送区域对应的配送区域覆盖用户的地理位置,也就是说目标配送区域对应的商户能够为该用户提供配送服务,将该商户确定为该用户的可配送商户,也即该用户地理位置的可配送商户。

本发明实施方式采用了基于索引树的空间位置搜索方案及外接矩形过滤的思想,将距离相近的商户进行聚合,在索引树结构的非叶子节点上表示为这些商户的第一外接矩形共同组成的公共外接矩形。当用户查找商户时,通过该公共外接矩形快速找到聚类的多个满足条件的商户,大大降低了运算量。另外根据位置关系,将距离最相近的商户进行聚合,更加符合用户搜索的场景。并通过在索引树中进行自上而下的查找,使用户在查找商户时,有效滤除掉不符合条件的商户,能够快速找到与用户位置相匹配的多个商户。

本发明的第三实施方式涉及一种商户查找装置,图5是根据本发明第三实施方式提供的商户查找装置示意图,该商户查找装置500包括:

查找模块501,用于获取用户的地理位置,利用预先建立的索引树查找覆盖地理位置的第一外接矩形,其中,第一外接矩形为覆盖商户配送区域的最小外接矩形;用户的地理位置和配送区域用于经纬度信息表示。

目标配送区域确定模块502,用于确定地理位置被第一外接矩形对应的配送区域覆盖的目标配送区域;

可配送商户确定模块503,用于将目标配送区域对应的商户作为地理位置对应的可配送商户;其中,索引树的叶子节点对应第一外接矩形,索引树的非叶子节点对应第二外接矩形,第二外接矩形为根据商圈内至少两个商户配送区域确定的最小外接矩形。

具体地,索引树的每个非叶子节点的子节点中包括第一数量的叶子节点,第一数量小于节点数阈值。或者索引树的每个非叶子节点的子节点中包括第二数量的叶子节点和第三数量的非叶子节点;第二数量和第三数量的和小于节点数阈值。

更为具体地,查找模块501在索引树中从根节点开始依次确定覆盖地理位置的每级第二外接矩形;从覆盖地理位置的最末级第二外接矩形包含的叶子节点中,确定覆盖地理位置的每个第一外接矩形,包括:判断地理位置是否位于第一外接矩形的经纬度极值区间内,若是,则确定第一外接矩形覆盖地理位置,否则,确定第一外接矩形未覆盖地理位置。

进一步地,当覆盖地理位置的第一外接矩形为至少两个时,确定地理位置被第一外接矩形对应的配送区域覆盖的目标配送区域,包括:采用并行计算方式,同时判断地理位置是否被覆盖地理位置的每个第一外接矩形对应的配送区域覆盖,若是,则确定第一外接矩形对应的配送区域为目标配送区域。

更进一步地,查找模块501在索引树中从根节点开始依次确定覆盖地理位置的每级第二外接矩形之前,根据用户的地理位置确定用户所属的商圈及商圈对应的索引树。

本发明实施方式中,该商户查找装置500还包括索引树创建模块504,用于根据商圈内商户的配送区域创建索引树。具体地,索引树创建模块504包括第一外接矩形确定模块5041、公共矩形确定模块5042和插入层级确定模块5043。

具体地,第一外接矩形确定模块5041用于根据商圈内商户的配送区域确定第一外接矩形,具体为:确定商户配送区域内的经纬度极值,经纬度极值包括最大经度、最小经度、最大纬度和最小纬度;根据经纬度极值确定第一外接矩形。

更为具体地,公共矩形确定模块5042用于根据两个第三外接矩形确定动态变化的公共矩形,具体为:若两个第三外接矩形为相互包含,公共矩形等于两个第三外接矩形中的较大者;若两个第三外接矩形为部分重叠或相互分离,公共矩形等于覆盖两个第三外接矩形的最小外接矩形。其中,两个第三外接矩形包括一个第一外接矩形和一个公共矩形,或者包括两个第一外接矩形;索引树每一层级的第二外接矩形为创建完成时的索引树每一层级的公共矩形。

更为具体地,插入层级确定模块5043用于从若干个待插入的第一外接矩形中选择与在建索引树最高层的公共矩形距离最近的第一外接矩形,根据距离最近的第一外接矩形与在建索引树中未饱和公共矩形的位置关系确定距离最近的第一外接矩形的插入层级。具体为,若存在若干个未饱和公共矩形与距离最近的第一外接矩形的位置关系为包含距离最近的第一外接矩形,则确定插入层级为若干个未饱和公共矩形中的最小公共矩形的下一层;若距离最近的第一外接矩形与在建索引树最高层的公共矩形的位置关系为部分重叠或相互分离,则确定插入层级为在建索引树的最高层。其中,在建索引树对应索引树创建完成之前的任一状态;未饱和公共矩形为子节点数小于节点数阈值的公共矩形。

本发明第四实施方式涉及一种电子设备,图6是根据本发明第四实施方式提供的电子设备示意图,该电子设备包括:至少一个处理器601;以及,与至少一个处理器601通信连接的存储器602;以及,分别与处理器601和存储器602均为通信连接的通信组件603,通信组件603在处理器601的控制下接收和发送数据;其中,存储器602存储有可被至少一个处理器601执行的指令,指令被至少一个处理器601执行以实现:

获取用户的地理位置,利用预先建立的索引树查找覆盖地理位置的第一外接矩形,其中,第一外接矩形为覆盖商户配送区域的最小外接矩形;确定地理位置被第一外接矩形对应的配送区域覆盖的目标配送区域;将目标配送区域对应的商户作为地理位置对应的可配送商户;其中,索引树的叶子节点对应第一外接矩形,索引树的非叶子节点对应第二外接矩形,第二外接矩形为根据至少两个商户配送区域确定的最小外接矩形。

该电子设备包括:一个或多个处理器601以及存储器602,图6中以一个处理器601为例。处理器601、存储器602可以通过总线或者其他方式连接,图6中以通过总线连接为例。存储器602作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器601通过运行存储在存储器602中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述商户查找方法。

存储器602可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储商户的id、商户的配送区域的经纬度信息等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器602可选包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

一个或者多个模块存储在存储器602中,当被一个或者多个处理器601执行时,执行上述任意方法实施方式中的商户查找方法。

上述产品可执行本申请实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的方法。

本发明的第五实施方式涉及一种非易失性存储介质,用于存储计算机可读程序,计算机可读程序用于供计算机执行上述部分或全部的方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

本申请实施例公开了a1.一种商户查找方法,包括:

获取用户的地理位置,利用预先建立的索引树查找覆盖所述地理位置的第一外接矩形,其中,所述第一外接矩形为覆盖商户配送区域的最小外接矩形;

确定所述地理位置被所述第一外接矩形对应的配送区域覆盖的目标配送区域;

将所述目标配送区域对应的商户作为所述地理位置对应的可配送商户;

其中,所述索引树的叶子节点对应第一外接矩形,所述索引树的非叶子节点对应第二外接矩形,所述第二外接矩形为根据至少两个所述商户配送区域确定的最小外接矩形。

a2.如a1所述的商户查找方法,所述索引树的每个非叶子节点的子节点中包括第一数量的叶子节点,所述第一数量小于节点数阈值。

a3.如a1所述的商户查找方法,所述索引树的每个非叶子节点的子节点中包括第二数量的叶子节点和第三数量的非叶子节点;所述第二数量和第三数量的和小于节点数阈值。

a4.如a1-a3任一项所述的商户查找方法,创建所述索引树包括:由两个第三外接矩形确定动态变化的公共矩形;

若所述两个第三外接矩形为相互包含,所述公共矩形等于所述两个第三外接矩形中的较大者;

若所述两个第三外接矩形为部分重叠或相互分离,所述公共矩形等于覆盖所述两个第三外接矩形的最小外接矩形;

其中,所述两个第三外接矩形包括一个所述第一外接矩形和一个公共矩形,或者包括两个所述第一外接矩形;

所述索引树每一层级的所述第二外接矩形为创建完成时的索引树对应层级的所述公共矩形。

a5.如a4所述的商户查找方法,创建所述索引树还包括:

从若干个待插入的第一外接矩形中选择与在建索引树最高层的公共矩形距离最近的第一外接矩形;

根据所述距离最近的第一外接矩形与所述在建索引树中未饱和公共矩形的位置关系确定所述距离最近的第一外接矩形插入的层级;

其中,所述在建索引树对应所述索引树创建完成之前的任一状态;所述未饱和公共矩形为子节点数小于所述节点数阈值的所述公共矩形。

a6.如a5所述的商户查找方法,所述根据所述距离最近的第一外接矩形与所述在建索引树中未饱和公共矩形的位置关系确定所述距离最近的第一外接矩形插入的层级,包括:

若存在若干个所述未饱和公共矩形与所述距离最近的第一外接矩形的位置关系为包含所述距离最近的第一外接矩形,则确定所述插入层级为若干个所述未饱和公共矩形中的最小公共矩形的下一层;

若所述距离最近的第一外接矩形与所述在建索引树最高层的公共矩形的位置关系为部分重叠或相互分离,则确定所述插入层级为所述在建索引树的最高层。

a7.如a1所述的商户查找方法,所述获取用户的地理位置,利用预先建立的索引树查找覆盖所述地理位置的第一外接矩形,包括:

在所述索引树中从根节点开始依次确定覆盖所述地理位置的每级第二外接矩形;

从覆盖所述地理位置的最末级第二外接矩形包含的叶子节点中,确定覆盖所述地理位置的每个第一外接矩形。

a8.如a7所述的商户查找方法,所述在所述索引树中从根节点开始依次确定覆盖所述地理位置的每级第二外接矩形之前,还包括:

根据所述地理位置确定所述用户所属的商圈及所述商圈对应的所述索引树。

a9.如a1所述的商户查找方法,所述利用预先建立的索引树查找覆盖所述地理位置的第一外接矩形,包括:

判断所述地理位置是否位于所述第一外接矩形的经纬度极值区间内,若是,则确定所述第一外接矩形覆盖所述地理位置,否则,确定所述第一外接矩形未覆盖所述地理位置。

a10.如a9所述的商户查找方法,当覆盖所述地理位置的第一外接矩形为至少两个时,所述确定所述地理位置被所述第一外接矩形对应的配送区域覆盖的目标配送区域,包括:

采用并行计算方式,同时判断所述地理位置是否被覆盖所述地理位置的每个所述第一外接矩形对应的配送区域覆盖,若是,则确定所述第一外接矩形对应的配送区域为目标配送区域。

a11.如a1所述的商户查找方法,在所述将所述目标配送区域对应的商户作为所述地理位置对应的可配送商户之后,还包括:

发送所述可配送商户到所述用户的终端设备,由所述终端设备显示所述可配送商户的信息。

a12.如a1所述的商户查找方法,所述地理位置和所述配送区域用经纬度信息表示。

a13.如a12所述的商户查找方法,所述第一外接矩形根据如下步骤确定:

确定所述商户配送区域内的经纬度极值,所述经纬度极值包括最大经度、最小经度、最大纬度和最小纬度;

根据所述经纬度极值确定所述第一外接矩形。

本申请实施例公开了b1.一种商户查找装置,包括:

查找模块,用于获取用户的地理位置,利用预先建立的索引树查找覆盖所述地理位置的第一外接矩形,其中,所述第一外接矩形为覆盖商户配送区域的最小外接矩形;

目标配送区域确定模块,用于确定所述地理位置被所述第一外接矩形对应的配送区域覆盖的目标配送区域;

可配送商户确定模块,用于将所述目标配送区域对应的商户作为所述地理位置对应的可配送商户;

其中,所述索引树的叶子节点对应第一外接矩形,所述索引树的非叶子节点对应第二外接矩形,所述第二外接矩形为根据商圈内至少两个所述商户配送区域确定的最小外接矩形。

本申请实施例公开了c1.一种电子设备,包括:至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行以实现:获取用户的地理位置,利用预先建立的索引树查找覆盖所述地理位置的第一外接矩形,其中,所述第一外接矩形为覆盖商户配送区域的最小外接矩形;确定所述地理位置被所述第一外接矩形对应的配送区域覆盖的目标配送区域;将所述目标配送区域对应的商户作为所述地理位置对应的可配送商户;其中,所述索引树的叶子节点对应第一外接矩形,所述索引树的非叶子节点对应第二外接矩形,所述第二外接矩形为根据至少两个所述商户配送区域确定的最小外接矩形。

c2.如c1所述的电子设备,所述索引树的每个非叶子节点的子节点中包括第一数量的叶子节点,所述第一数量小于节点数阈值。

c3.如c1所述的电子设备,所述索引树的每个非叶子节点的子节点中包括第二数量的叶子节点和第三数量的非叶子节点;所述第二数量和第三数量的和小于节点数阈值。

c4.如c1-c3任一项所述的电子设备,创建所述索引树包括:由两个第三外接矩形确定动态变化的公共矩形;若所述两个第三外接矩形为相互包含,所述公共矩形等于所述两个第三外接矩形中的较大者;若所述两个第三外接矩形为部分重叠或相互分离,所述公共矩形等于覆盖所述两个第三外接矩形的最小外接矩形;其中,所述两个第三外接矩形包括一个所述第一外接矩形和一个公共矩形,或者包括两个所述第一外接矩形;所述索引树每一层级的所述第二外接矩形为创建完成时的索引树对应层级的所述公共矩形。

c5.如c4所述的电子设备,创建所述索引树还包括:从若干个待插入的第一外接矩形中选择与在建索引树最高层的公共矩形距离最近的第一外接矩形;根据所述距离最近的第一外接矩形与所述在建索引树中未饱和公共矩形的位置关系确定所述距离最近的第一外接矩形插入的层级;其中,所述在建索引树对应所述索引树创建完成之前的任一状态;所述未饱和公共矩形为子节点数小于所述节点数阈值的所述公共矩形。

c6.如c5所述的电子设备,所述根据所述距离最近的第一外接矩形与所述在建索引树中未饱和公共矩形的位置关系确定所述距离最近的第一外接矩形插入的层级,包括:若存在若干个所述未饱和公共矩形与所述距离最近的第一外接矩形的位置关系为包含所述距离最近的第一外接矩形,则确定所述插入层级为若干个所述未饱和公共矩形中的最小公共矩形的下一层;若所述距离最近的第一外接矩形与所述在建索引树最高层的公共矩形的位置关系为部分重叠或相互分离,则确定所述插入层级为所述在建索引树的最高层。

c7.如c1所述的电子设备,所述获取用户的地理位置,利用预先建立的索引树查找覆盖所述地理位置的第一外接矩形,包括:在所述索引树中从根节点开始依次确定覆盖所述地理位置的每级第二外接矩形;从覆盖所述地理位置的最末级第二外接矩形包含的叶子节点中,确定覆盖所述地理位置的每个第一外接矩形。

c8.如c7所述的电子设备,所述在所述索引树中从根节点开始依次确定覆盖所述地理位置的每级第二外接矩形之前,还包括:根据所述地理位置确定所述用户所属的商圈及所述商圈对应的所述索引树。

c9.如c1所述的电子设备,所述利用预先建立的索引树查找覆盖所述地理位置的第一外接矩形,包括:判断所述地理位置是否位于所述第一外接矩形的经纬度极值区间内,若是,则确定所述第一外接矩形覆盖所述地理位置,否则,确定所述第一外接矩形未覆盖所述地理位置。

c10.如c9所述的电子设备,当覆盖所述地理位置的第一外接矩形为至少两个时,所述确定所述地理位置被所述第一外接矩形对应的配送区域覆盖的目标配送区域,包括:采用并行计算方式,同时判断所述地理位置是否被覆盖所述地理位置的每个所述第一外接矩形对应的配送区域覆盖,若是,则确定所述第一外接矩形对应的配送区域为目标配送区域。

c11.如c1所述的电子设备,在所述将所述目标配送区域对应的商户作为所述地理位置对应的可配送商户之后,还包括:发送所述可配送商户到所述用户的终端设备,由所述终端设备显示所述可配送商户的信息。

c12.如c1所述的电子设备,所述地理位置和所述配送区域用经纬度信息表示。

c13.如c12所述的电子设备,所述第一外接矩形根据如下步骤确定:确定所述商户配送区域内的经纬度极值,所述经纬度极值包括最大经度、最小经度、最大纬度和最小纬度;根据所述经纬度极值确定所述第一外接矩形。

本申请实施例公开了d1.一种非易失性存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行如a1至a13中任一项所述的商户查找方法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1