对象搜索方法、装置、设备及计算机可读存储介质
技术领域
本公开实施例涉及地理信息领域,尤其涉及对象搜索方法、装置、设备及计算机可读存储介质。
背景技术
配送行业中,在基于地理信息来对处于某个地理位置的配送员进行任务分配时,一般由调度台和调度人员对多个配送员进行调度。例如,在调度配送员和运单的情况下,通过派单调度台,展示配送员位置和运单位置,由调度员人工操作将运单分配到特定的配送员。
然而,在相关技术中的方案中,高度依赖调度台和调度员这个中间角色,配送员和运单之间无法自动获取对方的信息,从而导致调度难度增加以及存在调度不合理的问题。
发明内容
为了解决上述技术问题,本公开第一方面提供了一种对象搜索方法,包括:
获取第一对象的位置信息和第二对象的位置信息,其中,所述第一对象的类型不同于所述第二对象的类型,并且所述第一对象具有第一对象标识,所述第二对象具有第二对象标识;
基于所述第一对象的位置信息确定所述第一对象所在的地域单元,基于所述第二对象的位置信息确定所述第二对象所在的地域单元,并且建立所述第一对象所在的地域单元与所述第一对象标识之间的第一对应关系以及所述第二对象所在的地域单元与所述第二对象标识之间的第二对应关系;
基于所述第二对应关系和所述第一对象所在的地域单元搜索目标第二对象,或者基于所述第一对应关系和所述第二对象所在的地域单元搜索目标第一对象。
结合第一方面,本公开在第一方面的第一种实现方式中,所述基于所述第二对应关系和所述第一对象所在的地域单元搜索目标第二对象,或者基于所述第一对应关系和所述第二对象所在的地域单元搜索目标第一对象,包括:
基于所述第二对应关系和所述第一对象所在的地域单元搜索与所述第一对象匹配的目标第二对象,其中,所述目标第二对象的目标第二对象标识与所述第一对象所在的地域单元之间存在所述第二对应关系,或者
基于所述第一对应关系和所述第二对象所在的地域单元搜索与所述第二对象匹配的第一对象,其中,所述目标第一对象的目标第一对象标识与所述第二对象所在的地域单元之间存在所述第二对应关系。
结合第一方面的第一种实现方式,本公开在第一方面的第二种实现方式中,所述基于所述第二对应关系和所述第一对象所在的地域单元搜索与所述第一对象匹配的目标第二对象,包括:
基于所述第二对应关系和第一对象所在的地域单元搜索目标第二对象;
确定搜索的结果是否满足第一预设条件;
当确定搜索的结果不满足所述第一预设条件时,基于所述第二对应关系以及与所述第一对象所在的地域单元处于预定距离范围内的地域单元搜索目标第二对象。
结合第一方面的第二种实现方式,本公开在第一方面的第三种实现方式中,所述当确定搜索的结果不满足所述第一预设条件时,基于所述第二对应关系以及与所述第一对象所在的地域单元处于预定距离范围内的地域单元搜索目标第二对象,包括:
当确定搜索的结果不满足第一预设条件时,基于所述第二对应关系以及以所述第一对象所在的地域单元为中心的至少一层地域单元搜索目标第二对象,直至搜索的结果满足所述第一预设条件或者以所述第一对象所在的地域单元为中心的至少一层地域单元距所述中心达到预定距离范围,其中,所述至少一层地域单元中的一层地域单元指的是以距所述中心距离相等且围绕所述中心一周的相邻的地域单元,所述距离指的一个地域单元的整数倍。
结合第一方面的第一种实现方式,本公开在第一方面的第四种实现方式中,所述基于所述第一对应关系和所述第二对象所在的地域单元搜索与所述第二对象匹配的目标第一对象,包括:
基于所述第一对应关系和第二对象所在的地域单元搜索目标第一对象;
确定搜索的结果是否满足第二预设条件;
当确定搜索的结果不满足所述第二预设条件时,基于所述第一对应关系以及与所述第二对象所在的地域单元处于预定距离范围内的地域单元搜索目标第一对象。
结合第一方面的第四种实现方式,本公开在第一方面的第五种实现方式中,所述当确定搜索的结果不满足所述第二预设条件时,基于所述第一对应关系以及与所述第二对象所在的地域单元处于预定距离范围内的地域单元搜索目标第一对象,包括:
当确定搜索的结果不满足第二预设条件时,基于所述第一对应关系以及以所述第二对象所在的地域单元为中心的至少一层地域单元搜索目标第一对象,直至搜索的结果满足所述第二预设条件或者以所述第二对象所在的地域单元为中心的至少一层地域单元距所述中心达到预定距离范围,其中,所述至少一层地域单元中的一层地域单元指的是以距所述中心距离相等且围绕所述中心一周的相邻的地域单元,所述距离指的一个地域单元的整数倍。
结合第一方面、第一方面的第一种实现方式至第五种实现方式中的任一项,本公开在第一方面的第六种实现方式中,所述地域单元是Geohash地域单元。
结合第一方面、第一方面的第一种实现方式至第五种实现方式中的任一项,本公开在第一方面的第七种实现方式中,所述建立所述第一对象所在的地域单元与所述第一对象标识之间的第一对应关系以及所述第二对象所在的地域单元与所述第二对象标识之间的第二对应关系,包括:
利用Redis数据存储系统的set数据结构建立所述第一对象所在的地域单元与所述第一对象标识之间的第一对应关系以及所述第二对象所在的地域单元与所述第二对象标识之间的第二对应关系
本公开第二方面提供了一种对象搜索装置,包括:
获取模块,被配置为获取第一对象的位置信息和第二对象的位置信息,其中,所述第一对象的类型不同于所述第二对象的类型,并且所述第一对象具有第一对象标识,所述第二对象具有第二对象标识;
确定模块,被配置为基于所述第一对象的位置信息确定所述第一对象所在的地域单元,基于所述第二对象的位置信息确定所述第二对象所在的地域单元,并且建立所述第一对象所在的地域单元与所述第一对象标识之间的第一对应关系以及所述第二对象所在的地域单元与所述第二对象标识之间的第二对应关系;
搜索模块,被配置为基于所述第二对应关系和所述第一对象所在的地域单元搜索目标第二对象,或者基于所述第一对应关系和所述第二对象所在的地域单元搜索目标第一对象。
结合第二方面,本公开在第二方面的第一种实现方式中,所述搜索模块包括:
基于所述第二对应关系和所述第一对象所在的地域单元搜索与所述第一对象匹配的目标第二对象,其中,所述目标第二对象的目标第二对象标识与所述第一对象所在的地域单元之间存在所述第二对应关系,或者
基于所述第一对应关系和所述第二对象所在的地域单元搜索与所述第二对象匹配的第一对象,其中,所述目标第一对象的目标第一对象标识与所述第二对象所在的地域单元之间存在所述第二对应关系。
结合第二方面的第一种实现方式,本公开在第二方面的第二种实现方式中,所述搜索模块包括:
第一搜索子模块,被配置为基于所述第二对应关系和第一对象所在的地域单元搜索目标第二对象;
第一确定子模块,被配置为确定搜索的结果是否满足第一预设条件;
第二搜索子模块,被配置为当确定搜索的结果不满足所述第一预设条件时,基于所述第二对应关系以及与所述第一对象所在的地域单元处于预定距离范围内的地域单元搜索目标第二对象。
结合第二方面的第二种实现方式,本公开在第二方面的第三种实现方式中,所述第二搜索子模块被配置为:
当确定搜索的结果不满足第一预设条件时,基于所述第二对应关系以及以所述第一对象所在的地域单元为中心的至少一层地域单元搜索目标第二对象,直至搜索的结果满足所述第一预设条件或者以所述第一对象所在的地域单元为中心的至少一层地域单元距所述中心达到预定距离范围,其中,所述至少一层地域单元中的一层地域单元指的是以距所述中心距离相等且围绕所述中心一周的相邻的地域单元,所述距离指的一个地域单元的整数倍。
结合第二方面的第一种实现方式,本公开在第二方面的第四种实现方式中,所述搜索模块被配置为:
第三搜索子模块,被配置为基于所述第一对应关系和第二对象所在的地域单元搜索目标第一对象;
第二确定子模块,被配置为确定搜索的结果是否满足第二预设条件;
第四搜索子模块,被配置为当确定搜索的结果不满足所述第二预设条件时,基于所述第一对应关系以及与所述第二对象所在的地域单元处于预定距离范围内的地域单元搜索目标第一对象。
结合第二方面的第四种实现方式,本公开在第二方面的第五种实现方式中,所述第四搜索子模块被配置为:
当确定搜索的结果不满足第二预设条件时,基于所述第一对应关系以及以所述第二对象所在的地域单元为中心的至少一层地域单元搜索目标第一对象,直至搜索的结果满足所述第二预设条件或者以所述第二对象所在的地域单元为中心的至少一层地域单元距所述中心达到预定距离范围,其中,所述至少一层地域单元中的一层地域单元指的是以距所述中心距离相等且围绕所述中心一周的相邻的地域单元,所述距离指的一个地域单元的整数倍。
结合第二方面、第二方面的第一种实现方式至第五种实现方式中的任一项,本公开在第二方面的第六种实现方式中,所述地域单元是Geohash地域单元。
结合第二方面、第二方面的第一种实现方式至第五种实现方式中的任一项,本公开在第二方面的第七种实现方式中,所述确定模块被配置为:
利用Redis数据存储系统的set数据结构建立第一对象所在的地域单元与第一对象标识之间的第一对应关系以及第二对象所在的地域单元与第二对象标识之间的第二对应关系。
本公开第三方面提供了一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如第一方面、第一方面的第一种实现方式至第七种实现方式中的任一项所述的方法。
本公开第四方面提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现如第一方面、第一方面的第一种实现方式至第七种实现方式中的任一项所述的方法。
在本公开实施方式中,通过获取第一对象的位置信息和第二对象的位置信息,其中,所述第一对象的类型不同于所述第二对象的类型,并且所述第一对象具有第一对象标识,所述第二对象具有第二对象标识;基于所述第一对象的位置信息确定所述第一对象所在的地域单元,基于所述第二对象的位置信息确定所述第二对象所在的地域单元,并且建立所述第一对象所在的地域单元与所述第一对象标识之间的第一对应关系以及所述第二对象所在的地域单元与所述第二对象标识之间的第二对应关系;基于所述第二对应关系和所述第一对象所在的地域单元搜索目标第二对象,或者基于所述第一对应关系和所述第二对象所在的地域单元搜索目标第一对象,从而无需依赖调度台和调度员这个中间角色,即可完成调度,而且完成调度前第一对象和第二对象相互之间可以获知到对方的存在。此外,可以对对象进行合理的调度,减少重新调度的需求,即使重新调度也无需经过调度台人工调度,因此更加灵活。此外,在对象分为两种可被互相分配给对方的对象时,本公开实施方式的方案适于众包模式的体系,众包模式下的一种对象可以更早的了解另一种对象,而且一个对象可以通过自己的位置搜索周围一定范围内的另一种对象,主动决策接受另一种对象中的哪些或者不接受哪些。本公开实施方式的方案便于扩展到各种基于地理信息搜索对象的场景。
本公开的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本公开实施例或相关技术中的技术方案,下面将对示例性实施例或相关技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些示例性实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出根据本公开一实施方式的对象搜索方法的流程图;
图2示出根据图1所示的对象搜索方法中的步骤S103的一实施方式的流程图;
图3示出根据图1所示的对象搜索方法中的步骤S103的另一实施方式的流程图;
图4示出根据本公开一实施方式的对象搜索装置的结构框图;
图5示出根据图4所示的对象搜索装置中的搜索模块403的一实施方式的结构框图;
图6示出根据图4所示的对象搜索装置中的搜索模块403的另一实施方式的结构框图;
图7示出应用根据本公开一实施方式的对象搜索方法对对象进行搜索的示例的示意图;
图8示出应用根据本公开一实施方式的对象搜索方法对对象进行搜索的另一示例的示意图;
图9示出应用根据本公开一实施方式的对象搜索方法对对象进行搜索的另一示例的示意图;
图10示出应用根据本公开一实施方式的对象搜索方法对对象进行搜索的另一示例的示意图;
图11示出根据本公开一实施方式的对象搜索设备的结构框图;
图12是适于用来实现根据本公开一实施方式的对象搜索方法的计算机系统的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本公开方案,下面将结合本公开示例性实施例中的附图,对本公开示例性实施例中的技术方案进行清楚、完整地描述。
在本公开的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
采用本公开实施例的应用方式可以解决相关技术的以下问题:高度依赖调度台和调度员这个中间角色,配送员和运单之间无法自动获取对方的信息,从而导致调度难度增加以及存在调度不合理的问题。调度台和调度员如果对配送员活运单调度不合理时,会导致任务执行难度增加,衍生出重新调度的需求,但重新调度仍然要经过调度台调度的操作,仍然存在调度不合理的问题。此外,在配送员和运单相互搜索时,集中式的调度方案在众包模式的体系下不适用,而且众包模式下的配送员(运单)无法主动更早的了解所要被分配的运单(配送员)。
下面将结合本公开示例性实施例中的附图,对本公开示例性实施例中的技术方案进行清楚、完整地描述,显然,所描述的示例性实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
图1示出根据本公开一实施方式的对象搜索方法的流程图。该方法可以包括步骤S101、S102和S103。
在步骤S101中,获取第一对象的位置信息和第二对象的位置信息,其中,第一对象的类型不同于所述第二对象的类型,并且第一对象具有第一对象标识,第二对象具有第二对象标识。
在步骤S102中,基于第一对象的位置信息确定第一对象所在的地域单元,基于第二对象的位置信息确定第二对象所在的地域单元,并且建立第一对象所在的地域单元与第一对象标识之间的第一对应关系以及第二对象所在的地域单元与第二对象标识之间的第二对应关系。
在步骤S103中,基于第二对应关系和第一对象所在的地域单元搜索目标第二对象,或者基于第一对应关系和第二对象所在的地域单元搜索目标第一对象。
在本公开的实施例中,“对象”的定义可以是有实体的人或物品,也可以是“订单”或“服务”之类的无实体对象。在本公开的一个实施例中,当第一对象的类型是配送员时,第二对象的类型是运单,当然,第一对象的类型可以是运单,而第二对象的类型是配送员。例如,可以基于配送员的指令或是系统发出的运单,确定是根据第一对象搜索第二对象还是根据第二对象搜索第一对象。在另一个实施例中,当第一对象的类型是出租车司机或网约车的司机时,第二对象的类型是叫车订单,当然,第一对象的类型可以是叫车订单,第二对象的类型可以是出租车或网约车的司机。在另一个实施例中,第一对象的类型可以是服务提供者,第二对象的类型可以是需要服务者。即,第一对象和第二对象可以都是人、机器、服务或任何可以在地理区域上通过技术手段搜索到的实体或非实体对象。本公开的实施例对第一对象和第二对象的具体类型不做限定。
在一个实施例中,第一对象的位置信息和第二对象的位置信息可以是通过相关技术中的定位技术对第一对象和第二对象进行定位而获取的。
在一个实施例中,当第一对象是配送员或出租车司机或网约车司机时,他们的第一对象标识可以是对象id。当第二对象是运单或叫车订单时,第二对象标识可以是运单号或订单号。在本公开实施例中,只要可以用于将多个第一对象互相区分并且可以将第一对象和第二对象相互区分的标识都可以用作一对象标识和第二对象标识。
在一个实施例中,位置信息可以是一个对象所在的地理位置的点的信息,例如,经纬度;而地域单元是根据地理区域划分成的多个区域单元,其中可以存在多个地理位置的点。例如,可以预先将地理区域划分为多个网格,其中每个网格作为一个地域单元。划分的标准可以是基于商圈或配送范围。在一个实施例中,基于对象的位置信息确定地域单元可以是基于对象所在的点的地理位置信息计算该点所在的地域单元。本领域技术人员可以理解,可以基于相关技术,根据地理位置信息计算该点所在的地域单元。
在一个实施例中,可以采用Geohash(地理哈希)算法将二维空间坐标转化为一维数据编码。可以简单的认为,Geohash算法按照一定的精度将展开后的地球平面划分为了一块一块的方格(Geohash地域单元)并且进行了编码,二维空间坐标落在哪个方格内,则以这个方格的编码表示这个坐标。
在一个实施例中,地域单元是Geohash地域单元。例如,可以基于所获取的第一对象的位置信息(经纬度)确定第一对象所在的地域单元的Geohash编码,即,确定Geohash地域单元。同理,可以基于所获取的第二对象的位置信息(经纬度)确定第二对象所在的地域单元的Geohash编码,即,确定Geohash地域单元。
在一个实施例中,可以采用相关技术中的数据存储方案来建立对象所在的地域单元与对象标识之间的对应关系。在一个实施例中,可以利用Redis数据存储系统的set数据结构建立第一对象所在的地域单元与第一对象标识之间的第一对应关系以及第二对象所在的地域单元与第二对象标识之间的第二对应关系。
在相关技术领域,Redis是一个开源的数据结构存储系统,它可以用作数据存储系统、缓存和消息中间件。在一个实施例中,可以使用Redis实现基于第一对象的位置和第二对象的位置的存储。例如,在第一对象是配送员,第二对象是运单的情况下,考虑到配送员位置、运单状态都是短时间内不断动态变化的热数据,并且没有持久化的需求,且对增删、查询操作的吞吐能力、速度都有比较高的要求的情况,使用Redis作为存储是有利的。
在一个示例中,在利用Redis数据存储系统的set数据结构建立对象所在的地域单元与对象标识之间的对应关系的情况下,Redis的key(键)可以采用“业务前缀:服务名:location:<object_type>:<geohash>”的形式,value是一个列表,即value(列表)为第一对象标识或第二对象标识,内容是对应object_type类型的数据。在此情况下,对象所在的地域单元与对象标识之间的对应关系即是key与value的对应关系。例如,object_type=0表示数据类型是运单,则列表中存储的是这个Geohash地域单元中待抢单的运单号;object_type=1表示数据类型是配送员,则列表中存储的是当前位置正处于这个Geohash地域单元中的配送员的配送员id。在一个示例中,可以针对key与value的对应关系采用增加操作和删除操作。
在一个实施例中,可以针对某个Geohash地域单元中增加数据,例如,当有一张新生成的运单时,通过计算它的位置信息,将它添加到对应的geohash中去,此时object_type为0。例如,可以采用以下步骤来增加一张运单:
1.根据运单上的发货方经纬度计算对应的Geohash编码(这里可以使用7位长度的Geohash编码,精度为±76米,即一个Geohash地域单元大约表示了一块150m*150m的区域)。
2.基于“业务前缀:服务名:location:<object_type>:<geohash>”的格式生成redis key。因为是运单object_type为0,因此geohash为上一步计算得出的Geohash编码的值,类似于ws0esgq。
3.将运单号添加到key对应的列表里,得到key:"业务前缀:服务名:location:0:ws0esgq",value:[3000016322537430608]的结果。
在一个实施例中,可以从某个geohash中删除数据,例如,当有一张运单已被配送员抢单时,通过计算它的位置信息,需要从之前的geohash中删除此运单,此时object_type为0。例如,可以采用以下步骤来删除一个配送员:
1.根据发货方当前的经纬度计算对应的Geohash编码。
2.基于“业务前缀:服务名:location:<object_type>:<geohash>”的格式生成redis key,因为是运单,因此object_type为0,geohash为上一步计算得出的Geohash编码的值,类似于ws0esgq。
3.将运单号从key对应的列表中删除。
以上以Redis数据存储系统的set数据结构为例说明了如何对地域单元与对象标识之间的对应关系进行建立和调整。但是,本领域技术人员可以理解,根据本公开实施例中教导,可以采用其他数据管理系统或数据库系统来建立或改变地域单元与对象标识之间的对应关系。
在一个实施例中,第一对象所在的地域单元中可以存在0个、1个、或更多个第二对象,并且第二对象所在的地域单元中可以存在0个、1个、或更多个第一对象。另外,在第一对象所在的地域单元以外的地域单元中,可能存在任意数量的第一对象和第二对象。另外,在第二对象所在的地域单元以外的地域单元中,可能存在任意数量的第一对象和第二对象。
在一个实施例中,因为第二对象所在的地域单元与第二对象标识之间存在第二对应关系,因此可以基于第二对应关系和相应的地域单元搜索目标第二对象。在此情况下,当需要为第一对象在第一对象所在的地域单元中搜索目标第二对象时,也可基于第二对应关系来进行搜索。在一个实施例中,因为第一对象所在的地域单元与第一对象标识之间存在第一对应关系,因此可以基于第一对应关系和相应的地域单元搜索目标第一对象。在此情况下,当需要为第二对象在第二对象所在的地域单元中搜索目标第一对象时,也可基于第一对应关系来进行搜索。换言之,第一对象可以在所处地域单元中主动搜索目标第二对象,第二对象也可以在所处的地域单元中主动搜索目标第一对象。
在本公开实施方式中,通过获取第一对象的位置信息和第二对象的位置信息,其中,第一对象的类型不同于第二对象的类型,并且第一对象具有第一对象标识,第二对象具有第二对象标识;基于第一对象的位置信息确定第一对象所在的地域单元,基于第二对象的位置信息确定第二对象所在的地域单元,并且建立第一对象所在的地域单元与第一对象标识之间的第一对应关系以及第二对象所在的地域单元与第二对象标识之间的第二对应关系;基于第二对应关系和第一对象所在的地域单元搜索目标第二对象,或者基于第一对应关系和第二对象所在的地域单元搜索目标第一对象,从而无需依赖调度台和调度员这个中间角色,即可完成调度,而且完成调度前第一对象和第二对象相互之间可以获知到对方的存在。此外,可以对对象进行合理的调度,减少重新调度的需求,即使重新调度也无需经过调度台人工调度,因此更加灵活。此外,在对象分为两种可被互相分配给对方的对象时,本公开实施方式的方案适于众包模式的体系,众包模式下的一种对象可以更早的了解另一种对象,而且一个对象可以通过自己的位置搜索周围一定范围内的另一种对象,主动决策接受另一种对象中的哪些或者不接受哪些。本公开实施方式的方案便于扩展到各种基于地理信息搜索对象的场景。
在一个实施例中,图1中的步骤S103可以包括:基于第二对应关系和第一对象所在的地域单元搜索与第一对象匹配的目标第二对象,其中,目标第二对象的目标第二对象标识与第一对象所在的地域单元之间存在第二对应关系,或者基于第一对应关系和第二对象所在的地域单元搜索与第二对象匹配的第一对象,其中,目标第一对象的目标第一对象标识与第二对象所在的地域单元之间存在第二对应关系。
在一个实施例中,不仅可以搜索第一对象所在的地域单元中的目标第二对象,还可以搜索第一对象所在地域单元以外的地域单元中的目标第二对象。同理,不仅可以搜索第二对象所在的地域单元中的目标第一对象,还可以搜索第二对象所在地地域单元外部的地域单元中的目标第一对象。即,基于第二对应关系和第一对象所在的地域单元搜索与所述第一对象匹配的目标第二对象,目标第二对象的目标第二对象标识与第一对象所在的地域单元之间存在第二对应关系,这样便于为第一对象选择目标第二对象。基于第一对应关系和第二对象所在的地域单元搜索与第二对象匹配的目标第一对象,其中,目标第一对象的目标第一对象标识与第二对象所在的地域单元之间存在第二对应关系,这样便于为第二对象选择目标第一对象。在一个示例中,可以以第一对象所在的地域单元为中心,在该中心以外的地域单元构成的多个层中来逐层搜索第二对象。在一个示例中,可以以第二对象所在的地域单元为中心,在该中心以外的地域单元构成的多个层中来逐层搜索第一对象。其中,一层地域单元指的是以距中心距离相等且围绕中心一周的相邻的地域单元,所述距离指的一个地域单元的整数倍。例如,当第一对象是配送员并且第二对象是运单时,可以逐层搜索中心及中心以外的地域单元中的配送员或运单。
图2示出根据图1所示的对象搜索方法中的步骤S104的流程图。如图2所示,步骤S103包括步骤S201、S202和S203。
在步骤S201中,基于第二对应关系和第一对象所在的地域单元搜索目标第二对象。
在步骤S202中,确定搜索的结果是否满足第一预设条件。
在步骤S203中,当确定搜索的结果不满足第一预设条件时,基于第二对应关系以及与第一对象所在的地域单元处于预定距离范围内的地域单元搜索目标第二对象。
在一个实施例中,第一预设条件可以是搜索到的第二对象的数量,也可以搜索到的第二对象的特定特征,例如,当第二对象是运单时,特定特征可以是特定的发货地或特定的目的地。本领域技术人员可以理解,根据需要,第一预设条件可以是各种与第二对象有关的条件。
在一个实施例中,当确定搜索的结果不满足第一预设条件时,基于第二对应关系以及与第一对象所在的地域单元处于预定距离范围内的地域单元搜索目标第二对象指的是:当搜索结果不满足第一预设条件时,可以在第一对象所在的地域单元以外的地域单元中搜索目标第二对象。本领域技术人员可以理解,当在第一对象所在的地域单元以外的地域单元搜索目标第二对象的结果仍然不满足第一预设条件时,可以进一步在更外侧的地域单元中搜索目标第二对象。
在一个实施例中,步骤S203包括:当确定搜索的结果不满足第一预设条件时,基于第二对应关系以及以第一对象所在的地域单元为中心的至少一层地域单元搜索目标第二对象,直至搜索的结果满足所述第一预设条件或者以第一对象所在的地域单元为中心的至少一层地域单元距中心达到预定距离范围,其中,至少一层地域单元中的一层地域单元指的是以距中心距离相等且围绕中心一周的相邻的地域单元,所述距离指的一个地域单元的整数倍。
即,在一个实施例中,当确定搜索的结果不满足第一预设条件时,基于第二对应关系,以第一对象所在的地域单元为中心,在距中心第一预设距离的地域单元中对第二对象进行搜索,如果搜索的结果仍不满足第一预设条件时,在距中心大于第一预设距离的第二预设距离的地域单元中对第二对象进行搜索,直至搜索的结果满足第一预设条件或者搜索的地域单元达到预设的最大距离范围,即距离中心的距离超过了一个地域单元的预设最大倍数。具体地,第一预设距离可以是地域单元对角线的长度,第二预设距离为第一预设距离的整数倍。举个例子,当不满足第一预设条件时,可以先从距离中心二倍于第一预设距离的第二预设距离的地域单元中对第二对象进行搜索,如果仍不满足第一预设条件,再从距离中心三倍于第一预设距离的第二预设距离的地域单元中对第二对象继续进行搜索,直至搜索结果满足第一预设条件或者搜索的地域单元达到预设的最大距离范围。
在本公开实施方式中,通过基于第二对应关系和第一对象所在的地域单元搜索目标第二对象;确定搜索的结果是否满足第一预设条件;当确定搜索的结果不满足第一预设条件时,基于第二对应关系以及与第一对象所在的地域单元处于预定距离范围内的地域单元搜索目标第二对象,从而无需依赖调度台和调度员这个中间角色,即可完成对对象的搜索,而且完成调度前第一对象和第二对象相互之间可以获知到对方的存在。此外,可以对对象进行合理的调度,减少重新调度的需求,即使重新调度也无需经过调度台人工调度,因此更加灵活。此外,在对象分为两种可被互相分配给对方的对象时,本公开实施方式的方案适于众包模式的体系,众包模式下的一种对象可以更早的了解另一种对象,而且一个对象可以通过自己的位置搜索周围一定范围内的另一种对象,主动决策接受另一种对象中的哪些或者不接受哪些。本公开实施方式的方案便于扩展到各种基于地理信息搜索对象的场景。
图3示出根据图1所示的对象搜索方法中的步骤S104的流程图。如图3所示,步骤S103包括步骤S301、S302和S303。
在步骤S301中,基于第一对应关系和第二对象所在的地域单元搜索目标第一对象。
在步骤S302中,确定搜索的结果是否满足第二预设条件。
在步骤S303中,当确定搜索的结果不满足第二预设条件时,基于第一对应关系以及与第二对象所在的地域单元处于预定距离范围内的地域单元搜索目标第一对象。
在一个实施例中,第二预设条件可以是搜索到的第一对象的数量,也可以搜索到的第一对象的特定特征,例如,当第一对象是配送员时,特定特征可以是配送员的准点率或评分。本领域技术人员可以理解,根据需要,第二预设条件可以是各种与第一对象有关的条件。
在一个实施例中,当确定搜索的结果不满足第二预设条件时,基于第一对应关系以及与第二对象所在的地域单元处于预定距离范围内的地域单元搜索目标第一对象指的是:当搜索结果不满足第二预设条件时,可以在第二对象所在的地域单元以外的地域单元中搜索第一对象。本领域技术人员可以理解,当在第二对象所在的地域单元以外的地域单元搜索第一对象的结果仍然不满足第二预设条件时,可以进一步在更外侧的地域单元中搜索第一对象。
在一个实施例中,步骤S203包括:当确定搜索的结果不满足第二预设条件时,基于第一对应关系以及以第二对象所在的地域单元为中心的至少一层地域单元搜索目标第一对象,直至搜索的结果满足第二预设条件或者以第二对象所在的地域单元为中心的至少一层地域单元距中心达到预定距离范围,其中,至少一层地域单元中的一层地域单元指的是以距中心距离相等且围绕中心一周的相邻的地域单元,所述距离指的一个地域单元的整数倍。
即,在一个实施例中,当确定搜索的结果不满足第二预设条件时,基于第一对应关系,以第二对象所在的地域单元为中心,在距中心第一预设距离的地域单元中对第二对象进行搜索,如果搜索的结果仍不满足第一预设条件时,在距中心大于第一预设距离的第二预设距离的地域单元中对第一对象进行搜索,直至搜索的结果满足第一预设条件或者搜索的地域单元达到预设的最大距离范围,即距离中心的距离超过了一个地域单元的预设最大倍数。
在本公开实施方式中,通过基于第一对应关系和第二对象所在的地域单元搜索目标第一对象;确定搜索的结果是否满足第二预设条件;当确定搜索的结果不满足第二预设条件时,基于第一对应关系以及与第二对象所在的地域单元处于预定距离范围内的地域单元搜索目标第一对象,从而无需依赖调度台和调度员这个中间角色,即可完成对对象的搜索,而且完成调度前第一对象和第二对象相互之间可以获知到对方的存在。此外,可以对对象进行合理的调度,减少重新调度的需求,即使重新调度也无需经过调度台人工调度,因此更加灵活。此外,在对象分为两种可被互相分配给对方的对象时,本公开实施方式的方案适于众包模式的体系,众包模式下的一种对象可以更早的了解另一种对象,而且一个对象可以通过自己的位置搜索周围一定范围内的另一种对象,主动决策接受另一种对象中的哪些或者不接受哪些。本公开实施方式的方案便于扩展到各种基于地理信息搜索对象的场景。
以下,参照图7至10说明应用根据本公开一实施方式的对象搜索方法对对象进行搜索的示例。
在图7至10所示的示例中,以配送员作为第一对象的示例,以运单作为第二对象的示例,利用Redis数据存储系统的set数据结构,基于Geohash地域单元逐层搜索周围Geohash地域单元中的运单,或逐层搜索周围Geohash中的配送员,由此实现单找人和人找单。
这里以配送员搜索周围的运单为例。可以将按Geohash算法划分的区域抽象为方格,即Geohash地域单元。如图7所示,假设当前配送员位置处于5号格子内。
当配送员搜索周围的运单时,经过下面几个步骤:
1.计算5号格子周围的Geohash方格,也就是图中的1、2、3、4、6、7、8、9号方格。
2.计算这些方格对应的Redis key(包括5号方格),object_type=0。
3.遍历这些key,获取对应的value(即运单号)。
4.判断是否已经搜索到满足预设条件(例如足够数量)的运单。
本领域技术人员可以理解,在进行搜索时,可以按照前述1、2、3、4、6、7、8、9号方格的次序进行搜索,也可以按照其他次序进行搜索。
当已经搜索到满足预设条件的运单时,结束搜索。如果没有找到足够数量的运单,则会进一步向外扩散搜索,搜索的过程如图8所示,并且经过下面几个步骤:
1.计算1号格子周围的Geohash方格,也就是图中的竖条纹方格以及2、4、5号这几个方格。
2.将搜索到的方格和之前已经搜索过的方格进行去重,1、2、4、5几个方格在上一轮搜索中已经处理过,这一轮需要将这几个方格剔除。
3.重复这两个步骤,依次2、3、4、6、7、8、9号方格为中心搜索周围的方格,并和之前的搜索结果进行去重。
本领域技术人员可以理解,在进行搜索时,可以按照2、3、4、6、7、8、9号方格依次为中心的次序进行搜索,也可以按照其他次序进行搜索。在进行搜索后,可以得到图9中所示的竖条纹方格。
可以基于这些竖条纹方格执行以下步骤:
1.计算这些竖条纹方格对应的Redis key,object_type=0。
2.遍历这些key,获取对应的value(即运单号)。
3.和上一轮搜索到的运单号进行合并,判断是否已经搜索到满足预设条件的运单。
当已经搜索到满足预设条件的运单时,结束搜索。如果没有找到满足预设条件的运单,则继续向外扩散,如图10所示。
重复执行逐层向外的搜索步骤,直到搜索到满足预设条件的运单或达到最大搜索距离。
在另一实施例中,可以参照图7至10所示的示例,以按运单搜索周围的配送员为例。可以将按Geohash算法划分的区域抽象为方格,即Geohash地域单元。如图7所示,假设当前运单位置处于5号格子内。
当按运单搜索周围的配送员时,经过下面几个步骤:
1.计算5号格子周围的Geohash方格,也就是图中的1、2、3、4、6、7、8、9号方格。
2.计算这些方格对应的Redis key(包括5号方格),object_type=0。
3.遍历这些key,获取对应的value(即配送员号)。
4.判断是否已经搜索到满足预设条件(例如足够数量)的配送员。
本领域技术人员可以理解,在进行搜索时,可以按照前述1、2、3、4、6、7、8、9号方格的次序进行搜索,也可以按照其他次序进行搜索。
当已经搜索到满足预设条件的配送员时,结束搜索。如果没有找到满足预设条件的配送员,则会进一步向外扩散搜索,搜索的过程如图8所示,并且经过下面几个步骤:
1.计算1号格子周围的Geohash方格,也就是图中的竖条纹方格以及2、4、5号这几个方格。
2.将搜索到的方格和之前已经搜索过的方格进行去重,1、2、4、5几个方格在上一轮搜索中已经处理过,这一轮需要将这几个方格剔除。
3.重复这两个步骤,依次2、3、4、6、7、8、9号方格为中心搜索周围的方格,并和之前的搜索结果进行去重。
本领域技术人员可以理解,在进行搜索时,可以按照2、3、4、6、7、8、9号方格依次为中心的次序进行搜索,也可以按照其他次序进行搜索。在进行搜索后,可以得到图9中所示的竖条纹方格。
可以基于这些竖条纹方格执行以下步骤:
1.计算这些竖条纹方格对应的Redis key,object_type=0。
2.遍历这些key,获取对应的value(即配送员号)。
3.和上一轮搜索到的配送员号进行合并,判断是否已经搜索到满足预设条件的配送员。
当已经搜索到满足预设条件的配送员时,结束搜索。如果没有找到满足预设条件的配送员,则继续向外扩散,如图10所示。
重复执行逐层向外的搜索步骤,直到搜索到满足预设条件的配送员或达到最大搜索距离。
图4示出根据本公开一实施方式的对象搜索装置的结构框图。该装置可以包括获取模块401、确定模块402和搜索模块403。
获取模块401被配置为获取第一对象的位置信息和第二对象的位置信息,其中,第一对象的类型不同于第二对象的类型,并且第一对象具有第一对象标识,第二对象具有第二对象标识。
确定模块402被配置为基于第一对象的位置信息确定第一对象所在的地域单元,基于第二对象的位置信息确定第二对象所在的地域单元,并且建立第一对象所在的地域单元与第一对象标识之间的第一对应关系以及第二对象所在的地域单元与第二对象标识之间的第二对应关系。
搜索模块403被配置为基于第二对应关系和第一对象所在的地域单元搜索目标第二对象,或者基于第一对应关系和第二对象所在的地域单元搜索目标第一对象。
在本公开的实施例中,“对象”的定义可以是有实体的人或物品,也可以是“订单”或“服务”之类的无实体对象。在本公开的一个实施例中,当第一对象的类型是配送员时,第二对象的类型是运单,当然,第一对象的类型可以是运单,而第二对象的类型是配送员。例如,可以基于配送员的指令或是系统发出的运单,确定是根据第一对象搜索第二对象还是根据第二对象搜索第一对象。在另一个实施例中,当第一对象的类型是出租车司机或网约车的司机时,第二对象的类型是叫车订单,当然,第一对象的类型可以是叫车订单,第二对象的类型可以是出租车或网约车的司机。在另一个实施例中,第一对象的类型可以是服务提供者,第二对象的类型可以是需要服务者。即,第一对象和第二对象可以都是人、机器、服务或任何可以在地理区域上通过技术手段搜索到的实体或非实体对象。本公开的实施例对第一对象和第二对象的具体类型不做限定。
在一个实施例中,第一对象的位置信息和第二对象的位置信息可以是通过相关技术中的定位技术对第一对象和第二对象进行定位而获取的。
在一个实施例中,当第一对象是配送员或出租车司机或网约车司机时,他们的第一对象标识可以是对象id。当第二对象是运单或叫车订单时,第二对象标识可以是运单号或订单号。在本公开实施例中,只要可以用于将多个第一对象互相区分并且可以将第一对象和第二对象相互区分的标识都可以用作一对象标识和第二对象标识。
在一个实施例中,位置信息可以是一个对象所在的地理位置的点的信息,例如,经纬度;而地域单元是根据地理区域划分成的多个区域单元,其中可以存在多个地理位置的点。例如,可以预先将地理区域划分为多个网格,其中每个网格作为一个地域单元。在一个实施例中,基于对象的位置信息确定地域单元可以是基于对象所在的点的地理位置信息计算该点所在的地域单元本领域技术人员可以理解,可以基于相关技术,根据地理位置信息计算该点所在的地域单元。
在一个实施例中,可以采用Geohash(地理哈希)算法将二维空间坐标转化为一维数据编码。可以简单的认为,Geohash算法按照一定的精度将展开后的地球平面划分为了一块一块的方格(Geohash地域单元)并且进行了编码,二维空间坐标落在哪个方格内,则以这个方格的编码表示这个坐标。
在一个实施例中,地域单元是Geohash地域单元。例如,可以基于所获取的第一对象的位置信息(经纬度)确定第一对象所在的地域单元的Geohash编码,即,确定Geohash地域单元。同理,可以基于所获取的第二对象的位置信息(经纬度)确定第二对象所在的地域单元的Geohash编码,即,确定Geohash地域单元。
在一个实施例中,可以采用相关技术中的数据存储方案来建立对象所在的地域单元与对象标识之间的对应关系。在一个实施例中,可以利用Redis数据存储系统的set数据结构建立第一对象所在的地域单元与第一对象标识之间的第一对应关系以及第二对象所在的地域单元与第二对象标识之间的第二对应关系。
在相关技术领域,Redis是一个开源的数据结构存储系统,它可以用作数据存储系统、缓存和消息中间件。在一个实施例中,可以使用Redis实现基于第一对象的位置和第二对象的位置的存储。例如,在第一对象是配送员,第二对象是运单的情况下,考虑到配送员位置、运单状态都是短时间内不断动态变化的热数据,并且没有持久化的需求,且对增删、查询操作的吞吐能力、速度都有比较高的要求的情况,使用Redis作为存储是有利的。
在一个示例中,在利用Redis数据存储系统的set数据结构建立对象所在的地域单元与对象标识之间的对应关系的情况下,Redis的key(键)可以采用“业务前缀:服务名:location:<object_type>:<geohash>”的形式,value是一个列表,即value(列表)为第一对象标识或第二对象标识,内容是对应object_type类型的数据。在此情况下,对象所在的地域单元与对象标识之间的对应关系即是key与value的对应关系。例如,object_type=0表示数据类型是运单,则列表中存储的是这个Geohash地域单元中待抢单的运单号;object_type=1表示数据类型是配送员,则列表中存储的是当前位置正处于这个Geohash地域单元中的配送员的配送员id。在一个示例中,可以针对key与value的对应关系采用增加操作和删除操作。
在一个实施例中,可以针对某个Geohash地域单元中增加数据,例如,当有一张新生成的运单时,通过计算它的位置信息,将它添加到对应的geohash中去,此时object_type为0。例如,可以采用以下步骤来增加一张运单:
1.根据运单上的发货方经纬度计算对应的Geohash编码(这里可以使用7位长度的Geohash编码,精度为±76米,即一个Geohash地域单元大约表示了一块150m*150m的区域)。
2.基于“业务前缀:服务名:location:<object_type>:<geohash>”的格式生成redis key。因为是运单object_type为0,因此geohash为上一步计算得出的Geohash编码的值,类似于ws0esgq。
3.将运单号添加到key对应的列表里,得到key:"业务前缀:服务名:location:0:ws0esgq",value:[3000016322537430608]的结果。
在一个实施例中,可以从某个geohash中删除数据,例如,当有一张运单已被配送员抢单时,通过计算它的位置信息,需要从之前的geohash中删除此运单,此时object_type为0。例如,可以采用以下步骤来删除一个配送员:
1.根据发货方当前的经纬度计算对应的Geohash编码。
2.基于“业务前缀:服务名:location:<object_type>:<geohash>”的格式生成redis key,因为是运单,因此object_type为0,geohash为上一步计算得出的Geohash编码的值,类似于ws0esgq。
3.将运单号从key对应的列表中删除。
以上以Redis数据存储系统的set数据结构为例说明了如何对地域单元与对象标识之间的对应关系进行建立和调整。但是,本领域技术人员可以理解,根据本公开实施例中教导,可以采用其他数据管理系统或数据库系统来建立或改变地域单元与对象标识之间的对应关系。
在一个实施例中,第一对象所在的地域单元中可以存在0个、1个、或更多个第二对象,并且第二对象所在的地域单元中可以存在0个、1个、或更多个第一对象。另外,在第一对象所在的地域单元以外的地域单元中,可能存在任意数量的第一对象和第二对象。另外,在第二对象所在的地域单元以外的地域单元中,可能存在任意数量的第一对象和第二对象。
在一个实施例中,因为第二对象所在的地域单元与第二对象标识之间存在第二对应关系,因此可以基于第二对应关系和相应的地域单元搜索第二对象。在此情况下,当需要为第一对象在第一对象所在的地域单元中搜索目标第二对象时,也可基于第二对应关系来进行搜索。在一个实施例中,因为第一对象所在的地域单元与第一对象标识之间存在第一对应关系,因此可以基于第一对应关系和相应的地域单元搜索第一对象。在此情况下,当需要为第二对象在第二对象所在的地域单元中搜索目标第一对象时,也可基于第一对应关系来进行搜索。换言之,第一对象可以在所处地域单元中主动搜索目标第二对象,第二对象也可以在所处的地域单元中主动搜索目标第一对象。
在本公开实施方式中,通过获取第一对象的位置信息和第二对象的位置信息,其中,第一对象的类型不同于第二对象的类型,并且第一对象具有第一对象标识,第二对象具有第二对象标识;基于第一对象的位置信息确定第一对象所在的地域单元,基于第二对象的位置信息确定第二对象所在的地域单元,并且建立第一对象所在的地域单元与第一对象标识之间的第一对应关系以及第二对象所在的地域单元与第二对象标识之间的第二对应关系;基于第二对应关系和第一对象所在的地域单元搜索目标第二对象,或者基于第一对应关系和第二对象所在的地域单元搜索目标第一对象,从而无需依赖调度台和调度员这个中间角色,即可完成调度,而且完成调度前第一对象和第二对象相互之间可以获知到对方的存在。此外,可以对对象进行合理的调度,减少重新调度的需求,即使重新调度也无需经过调度台人工调度,因此更加灵活。此外,在对象分为两种可被互相分配给对方的对象时,本公开实施方式的方案适于众包模式的体系,众包模式下的一种对象可以更早的了解另一种对象,而且一个对象可以通过自己的位置搜索周围一定范围内的另一种对象,主动决策接受另一种对象中的哪些或者不接受哪些。本公开实施方式的方案便于扩展到各种基于地理信息搜索对象的场景。
在一个实施例中,图4中的搜索模块403被配置为:基于第二对应关系和第一对象所在的地域单元搜索与第一对象匹配的目标第二对象,其中,目标第二对象的目标第二对象标识与第一对象所在的地域单元之间存在第二对应关系,或者基于第一对应关系和第二对象所在的地域单元搜索与第二对象匹配的第一对象,其中,目标第一对象的目标第一对象标识与第二对象所在的地域单元之间存在第二对应关系。
在一个实施例中,不仅可以搜索第一对象所在的地域单元中的目标第二对象,还可以搜索第一对象所在地域单元以外的地域单元中的目标第二对象。同理,不仅可以搜索第二对象所在的地域单元中的目标第一对象,还可以搜索第二对象所在地地域单元外部的地域单元中的目标第一对象。即,基于第二对应关系和第一对象所在的地域单元搜索与所述第一对象匹配的目标第二对象,目标第二对象的目标第二对象标识与第一对象所在的地域单元之间存在第二对应关系,这样便于为第一对象选择目标第二对象。基于第一对应关系和第二对象所在的地域单元搜索与第二对象匹配的第一对象,其中,目标第一对象的目标第一对象标识与第二对象所在的地域单元之间存在第二对应关系,这样便于为第二对象选择目标第一对象。在一个示例中,可以以第一对象所在的地域单元为中心,在该中心以外的地域单元构成的多个层中来逐层搜索第二对象。在一个示例中,可以以第二对象所在的地域单元为中心,在该中心以外的地域单元构成的多个层中来逐层搜索第一对象。其中,一层地域单元指的是以距中心距离相等且围绕中心一周的相邻的地域单元,所述距离指的一个地域单元的整数倍。例如,当第一对象是配送员并且第二对象是运单时,可以逐层搜索中心及中心以外的地域单元中的配送员或运单。
图5示出根据图4所示的对象搜索装置中的搜索模块403的结构框图。如图5所示,搜索模块403包括第一搜索子模块501、第一确定子模块502和第二搜索子模块503。
第一搜索子模块501被配置为基于第二对应关系和第一对象所在的地域单元搜索目标第二对象。
第一确定子模块502被配置为确定搜索的结果是否满足第一预设条件。
第二搜索子模块503被配置为当确定搜索的结果不满足第一预设条件时,基于第二对应关系以及与第一对象所在的地域单元处于预定距离范围内的地域单元搜索目标第二对象。
在一个实施例中,第一预设条件可以是搜索到的第二对象的数量,也可以搜索到的第二对象的特定特征,例如,当第二对象是运单时,特定特征可以是特定的发货地或特定的目的地。本领域技术人员可以理解,根据需要,第一预设条件可以是各种与第二对象有关的条件。
在一个实施例中,当确定搜索的结果不满足第一预设条件时,基于第二对应关系以及与第一对象所在的地域单元处于预定距离范围内的地域单元搜索目标第二对象指的是:当搜索结果不满足第一预设条件时,可以在第一对象所在的地域单元以外的地域单元中搜索目标第二对象。本领域技术人员可以理解,当在第一对象所在的地域单元以外的地域单元搜索目标第二对象的结果仍然不满足第一预设条件时,可以进一步在更外侧的地域单元中搜索目标第二对象。
在一个实施例中第二搜索子模块503被配置为:当确定搜索的结果不满足第一预设条件时,基于第二对应关系以及以第一对象所在的地域单元为中心的至少一层地域单元搜索目标第二对象,直至搜索的结果满足所述第一预设条件或者以第一对象所在的地域单元为中心的至少一层地域单元距中心达到预定距离范围,其中,至少一层地域单元中的一层地域单元指的是以距中心距离相等且围绕中心一周的相邻的地域单元,所述距离指的一个地域单元的整数倍
即,在一个实施例中,当确定搜索的结果不满足第一预设条件时,基于第二对应关系,以第一对象所在的地域单元为中心,在距中心第一预设距离的地域单元中对第二对象进行搜索,如果搜索的结果仍不满足第一预设条件时,在距中心大于第一预设距离的第二预设距离的地域单元中对第二对象进行搜索,直至搜索的结果满足第一预设条件或者搜索的地域单元达到预设的最大距离范围,即距离中心的距离超过了一个地域单元的预设最大倍数。具体地,第一预设距离可以是地域单元对角线的长度,第二预设距离为第一预设距离的整数倍。举个例子,当不满足第一预设条件时,可以先从距离中心二倍于第一预设距离的第二预设距离的地域单元中对第二对象进行搜索,如果仍不满足第一预设条件,再从距离中心三倍于第一预设距离的第二预设距离的地域单元中对第二对象继续进行搜索,直至搜索结果满足第一预设条件或者搜索的地域单元达到预设的最大距离范围。
在本公开实施方式中,通过第一搜索子模块,被配置为基于第二对应关系和第一对象所在的地域单元搜索目标第二对象;第一确定子模块,被配置为确定搜索的结果是否满足第一预设条件;第二搜索子模块,被配置为当确定搜索的结果不满足第一预设条件时,基于第二对应关系以及与第一对象所在的地域单元处于预定距离范围内的地域单元搜索目标第二对象,从而无需依赖调度台和调度员这个中间角色,即可完成对对象的搜索,而且完成调度前第一对象和第二对象相互之间可以获知到对方的存在。此外,可以对对象进行合理的调度,减少重新调度的需求,即使重新调度也无需经过调度台人工调度,因此更加灵活。此外,在对象分为两种可被互相分配给对方的对象时,本公开实施方式的方案适于众包模式的体系,众包模式下的一种对象可以更早的了解另一种对象,而且一个对象可以通过自己的位置搜索周围一定范围内的另一种对象,主动决策接受另一种对象中的哪些或者不接受哪些。本公开实施方式的方案便于扩展到各种基于地理信息搜索对象的场景。
图6示出根据图4所示的对象搜索装置中的搜索模块403的另一实施方式的结构框图。如图6所示,搜索模块403包括第三搜索子模块601、第二确定子模块602和第四搜索子模块603。
第三搜索子模块601被配置为基于第一对应关系和第二对象所在的地域单元搜索目标第一对象。
第二确定子模块602被配置为确定搜索的结果是否满足第二预设条件。
第四搜索子模块603被配置为当确定搜索的结果不满足第二预设条件时,基于第一对应关系以及与第二对象所在的地域单元处于预定距离范围内的地域单元搜索目标第一对象。
在一个实施例中,第二预设条件可以是搜索到的第一对象的数量,也可以搜索到的第一对象的特定特征,例如,当第一对象是配送员时,特定特征可以是配送员的准点率或评分。本领域技术人员可以理解,根据需要,第二预设条件可以是各种与第一对象有关的条件。
在一个实施例中,当确定搜索的结果不满足第二预设条件时,基于第一对应关系以及与第二对象所在的地域单元处于预定距离范围内的地域单元搜索目标第一对象指的是:当搜索结果不满足第二预设条件时,可以在第二对象所在的地域单元以外的地域单元中搜索第一对象。本领域技术人员可以理解,当在第二对象所在的地域单元以外的地域单元搜索第一对象的结果仍然不满足第二预设条件时,可以进一步在更外侧的地域单元中搜索第一对象。
在一个实施例中,第四搜索子模块603可以被配置为:当确定搜索的结果不满足第二预设条件时,基于第一对应关系以及以第二对象所在的地域单元为中心的至少一层地域单元搜索目标第一对象,直至搜索的结果满足第二预设条件或者以第二对象所在的地域单元为中心的至少一层地域单元距中心达到预定距离范围,其中,至少一层地域单元中的一层地域单元指的是以距中心距离相等且围绕中心一周的相邻的地域单元,所述距离指的一个地域单元的整数倍。
即,在一个实施例中,当确定搜索的结果不满足第二预设条件时,基于第一对应关系,以第二对象所在的地域单元为中心,在距中心第一预设距离的地域单元中对第二对象进行搜索,如果搜索的结果仍不满足第一预设条件时,在距中心大于第一预设距离的第二预设距离的地域单元中对第一对象进行搜索,直至搜索的结果满足第一预设条件或者搜索的地域单元达到预设的最大距离范围,即距离中心的距离超过了一个地域单元的预设最大倍数。
在本公开实施方式中,通过基于第一对应关系和第二对象所在的地域单元搜索目标第一对象;确定搜索的结果是否满足第二预设条件;当确定搜索的结果不满足第二预设条件时,基于第一对应关系以及与第二对象所在的地域单元处于预定距离范围内的地域单元搜索目标第一对象,从而无需依赖调度台和调度员这个中间角色,即可完成对对象的搜索,而且完成调度前第一对象和第二对象相互之间可以获知到对方的存在。此外,可以对对象进行合理的调度,减少重新调度的需求,即使重新调度也无需经过调度台人工调度,因此更加灵活。此外,在对象分为两种可被互相分配给对方的对象时,本公开实施方式的方案适于众包模式的体系,众包模式下的一种对象可以更早的了解另一种对象,而且一个对象可以通过自己的位置搜索周围一定范围内的另一种对象,主动决策接受另一种对象中的哪些或者不接受哪些。本公开实施方式的方案便于扩展到各种基于地理信息搜索对象的场景。
以上描述了对象搜索装置的内部功能和结构,在一个可能的设计中,该对象搜索装置的结构可实现为对象搜索设备,如图11中所示,该处理设备1100可以包括处理器1101以及存储器1102。
所述存储器1102用于存储支持对象搜索装置执行上述任一实施例中对象搜索方法的程序,所述处理器901被配置为用于执行所述存储器902中存储的程序。
所述存储器1102用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器1101执行。
所述处理器1101用于执行前述各方法步骤中的全部或部分步骤。
其中,所述对象搜索设备的结构中还可以包括通信接口,用于对象搜索设备与其他设备或通信网络通信。
本公开示例性实施例还提供了一种计算机存储介质,用于储存所述对象搜索装置所用的计算机软件指令,其包含用于执行上述任一实施例中对象搜索方法所涉及的程序。
图12是适于用来实现根据本公开一实施方式的对象搜索方法的计算机系统的结构示意图。
如图12所示,计算机系统1200包括中央处理单元(CPU)1201,其可以根据存储在只读存储器(ROM)1202中的程序或者从存储部分1208加载到随机访问存储器(RAM)1203中的程序而执行上述图1所示的实施方式中的各种处理。在RAM1203中,还存储有系统1200操作所需的各种程序和数据。CPU1201、ROM1202以及RAM1203通过总线1204彼此相连。输入/输出(I/O)接口1205也连接至总线1204。
以下部件连接至I/O接口1205:包括键盘、鼠标等的输入部分1206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1207;包括硬盘等的存储部分1208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至I/O接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入存储部分1208。
特别地,根据本公开的实施方式,上文参考图1描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行图1的数据处理方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。