图搜索结果获取方法及装置
【技术领域】
本申请涉及搜索技术领域,尤其涉及一种图搜索结果获取方法及装置。
【背景技术】
随着互联网技术的发展,基于互联网实现的社交平台、交易平台也越来越多。这些平台可以将用户、设备或其他介质关联起来,形成一个关系网络。在实际应用中,经常会利用该关系网络开发一些新的应用,例如对于社交平台,可以利用该关系网络创建推荐系统,以进行好友推荐等;又例如对于交易平台,可以利用该关系网络进行风险识别,以检查交易是否安全或交易信息是否被盗等。
从数学角度来看,上述关系网络就是一张图(图是一种数据结构)。关系网络中的对象,例如:用户账号、手机号、银行卡等可以映射成图中的节点,关系网络中对象之间的关联属性,例如:登录事件、支付事件等可以映射成图中节点之间的边。在利用关系网络的过程中,需要对关系网络对应的图进行搜索,进而基于搜索结果来做决策。
现有技术中,进行图搜索的过程包括:每次需要进行图搜索时,都需要将本次图搜索涉及的所有图顶点的数据进行初始化,之后从起始对象对应的图顶点开始搜索直到搜索到终点对象对应的图顶点,获得搜索结果。每次图搜索都是一个全新的搜索过程,这种图搜索方式一般会消耗大量资源(例如CPU,内存),导致图搜索的响应速度(即返回搜索结果的速度)慢,影响处理效率。
【发明内容】
本申请的多个方面提供一种图搜索结果获取方法及装置,用以降低图搜索消耗的资源,提高响应速度和处理效率。
本申请的一方面,提供一种图搜索结果获取方法,包括:
获取本次图搜索所需的搜索参数,所述搜索参数包括:本次图搜索的起始对象、本次图搜索的终点对象、本次图搜索的搜索需求和本次图搜索使用的搜索限制条件;
根据所述本次图搜索所需的搜索参数和上一次图搜索信息,获得用于指示本次图搜索的结果信息可否基于上一次图搜索的结果信息得到的图搜索状态,所述上一次图搜索信息包括:上一次图搜索的起始对象、上一次图搜索使用的搜索限制条件和所述上一次图搜索的结果信息;所述上一次图搜索是本次图搜索之前、并与本次图搜索在同一图上进行搜索的过程;
若所述图搜索状态指示所述本次图搜索的结果信息可以基于所述上一次图搜索的结果信息获得,则根据所述上一次图搜索的结果信息获得所述本次图搜索的结果信息。
本申请的另一方面,提供一种图搜索结果获取装置,包括:
参数获取模块,用于获取本次图搜索所需的搜索参数,所述搜索参数包括:本次图搜索的起始对象、本次图搜索的终点对象、本次图搜索的搜索需求和本次图搜索使用的搜索限制条件;
状态获取模块,用于根据所述本次图搜索所需的搜索参数和上一次图搜索信息,获得用于指示本次图搜索的结果信息可否基于上一次图搜索的结果信息得到的图搜索状态,所述上一次图搜索信息包括:上一次图搜索的起始对象、上一次图搜索使用的搜索限制条件和所述上一次图搜索的结果信息;所述上一次图搜索是本次图搜索之前、并与本次图搜索在同一图上进行搜索的过程;
结果获取模块,用于在所述图搜索状态指示所述本次图搜索的结果信息可以基于所述上一次图搜索的结果信息获得时,根据所述上一次图搜索的结果信息获得所述本次图搜索的结果信息。
在本申请中,当需要获取图搜索结果时,直接获取本次图搜索所需的搜索参数,并根据本次图搜索所需的搜索参数和上一次图搜索信息进行比较,确定本次图搜索的结果信息可否基于上一次图搜索的结果信息得到,并在可以基于上一次图搜索的结果信息得到本次图搜索的结果信息时,根据上一次图搜索的结果信息获得本次图搜索的结果信息,使得本次图搜索的结果信息可以在不启动或不重新启动全新图搜索的条件下即可获得,有利于降低资源消耗,提高图搜索的响应速度和处理效率。
【附图说明】
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中一种关系网络的结构示意图;
图2为本申请一实施例提供的图搜索结果获取方法的流程示意图;
图3为本申请一实施例提供的步骤202的一种实施方式的流程示意图;
图4为本申请一实施例提供的图搜索结果获取方法中图搜索过程的流程示意图;
图5为本申请一实施例提供的图搜索结果获取装置的结构示意图;
图6为本申请另一实施例提供的图搜索结果获取装置的结构示意图。
【具体实施方式】
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为便于理解本申请以下实施例的技术方案,首先结合图示对现有技术做进一步说明。
图1所示为一种关系网络的结构示意图。在图1中,第一用户、设备、银行卡、第二用户、手机号均为关系网络中的对象;对象之间的关联关系通常是通过特定操作而关联起来的,这种关联关系称为两个对象之间的关联属性,例如第一用户与设备之间关联关系为登录,第一用户与银行卡之间的关联关系为付款,第二用户与设备之间的关联关系为登录和注册,第二用户与银行卡之间的关联关系为付款,第二用户与手机号之间的关联关系为用户验证。
在实际应用中,图1所示关系网络有可能存在下面几个计算需求:
1、计算第一用户和银行卡的最短路径度数
2、计算第一用户和设备的最短路径条数
3、计算第一用户和第二用户是否有路径可达
4、计算第一用户和设备的最短路径度数
现有技术的解决办法是,针对图1所示的关系网络构建一种图,针对每个计算需求分别进行一次图搜索;每次图搜索的过程是根据该计算需求初始化图顶点的数据,之后从第一用户对应的图顶点开始搜索,直到搜索到该计算需求终点对象对应的图顶点为止。
但本申请发明人经过创造性劳动发现:以第一用户对应的图顶点为搜索起点,进行1度搜索,可以同时搜索到第一用户可以到达设备和银行卡,也就是说上述第1、第2和第4三个计算过程可以在一次图搜索过程中完成,不需要进行三次图搜索,另外,第3个计算也可以在第1个计算的结果上继续进行搜索,搜索过程中发现第二用户是2度的,所以图搜索装置搜索到2度就停止搜索了,然后返回结果是“可达”。
由上述分析可见,现有图搜索方式会消耗大量资源,导致图搜索的响应速度慢,影响处理效率。
图2为本申请一实施例提供的图搜索结果获取方法的流程示意图。如图2所示,该方法包括:
201、获取本次图搜索所需的搜索参数,本次图搜索所需的搜索参数包括:本次图搜索的起始对象、本次图搜索的终点对象、本次图搜索的搜索需求和本次图搜索使用的搜索限制条件。
202、根据本次图搜索所需的搜索参数和上一次图搜索信息,获得用于指示本次图搜索的结果信息可否基于上一次图搜索的结果信息得到的图搜索状态,上一次图搜索信息包括:上一次图搜索的起始对象、上一次图搜索使用的搜索限制条件和上一次图搜索的结果信息;上一次图搜索是本次图搜索之前且与本次图搜索在同一图上进行搜索的过程。
203、若上述图搜索状态指示本次图搜索的结果信息可以基于上一次图搜索的结果信息获得,则根据上一次图搜索的结果信息获得本次图搜索的结果信息。
本实施例的执行主体可以是任何需要进行获取图搜索结果的装置,简称为图搜索结果获取装置(后续简称为获取装置),例如可以是客户端、或后台服务器等。
本实施例提供的方法主要针对在同一图上进行多次图搜索的应用场景。对每次图搜索过程来说,其结果信息的获取流程均相同,故本实施例以获取本次图搜索的结果信息的过程为例进行说明。另外,本实施例涉及的上一次图搜索是指本次图搜索之前、并与本次图搜索在同一图上进行搜索的过程。
具体的,当需要获取本次图搜索的结果信息时,获取装置获取本次图搜索所需的搜索参数。其中,本次图搜索所需的搜索参数至少包括:本次图搜索的起始对象、终点对象、使用的搜索限制条件以及本次图搜索的搜索需求。本次图搜索的起始对象和终点对象分别用于限定本次图搜索的起始和结束。搜索限制条件是指用于限定本次图搜索的条件,例如可以是限定本次图搜索的最大搜索度数、最大搜索条数等。最大搜索度数是指一次图搜索允许搜索到的最大路径度数,例如可以是3度、4度、5度、6度或8度等等。最大搜索条数是指一次图搜索允许搜索到的最大路径条数,例如5条、10条、20条、100条等等。搜索需求用于指示本次图搜索要完成的任务。
以图1所示关系网络中存在的几个计算需求为例,每个计算需求可以分别作为本实施例中的本次图搜索。对于第1个计算需求,起始对象为第一用户,终点对象为银行卡,搜索需求为第一用户到银行卡的最短路径度数,搜索限制条件为空;对于第2个计算需求,起始对象为第一用户,终点对象为设备,搜索需求为第一用户到设备的最短路径条数,搜索限制条件为空;对第3个计算需求,起始对象为第一用户,终点对象为第二用户,搜索需求为第一用户和第二用户是否有路径可达,搜索限制条件为空;对于第4个计算需求,起始对象为第一用户,终点对象为设备,搜索需求为第一用户和设备之间的最短路径度数,搜索限制条件为空。
在一可选实施方式中,获取装置可以预先将本次图搜索所需的搜索参数存储到参数列表中,这样当进行本次图搜索时,可以直接从参数列表中获取本次图搜索所需的搜索参数。本实施例的参数列表实际上是数据存储结构中的列表,用于存储图搜索所需的搜索参数。值得说明的是,搜索参数并不限于列表这一种存储结构,例如还可以采用数组这种存储方式。本实施例的参数列表包括至少一次图搜索所需的搜索参数,且在参数列表中,具有相同起始对象的搜索参数是连续排列的。在该实施方式中,通过将具有相同起始对象的搜索参数连续排列,可以保证前后两次图搜索具有相同起始对象,若前后两次图搜索过程具有相同起始对象,那么后一次图搜索过程可以利用上一次图搜索的结果的可能性较大,因此有利于提高后一次图搜索利用上一次图搜索的结果信息的概率,有利于减少启动全新图搜索过程的概率,进而有利于降低图搜索消耗的资源,提高整体图搜索的响应速度和处理效率。
其中,获取装置生成参数列表的一种实施方式包括:具有搜索需求的装置,例如某个交易平台或社交平台,可以向获取装置发送搜索请求,并将至少一次图搜索所需的搜索参数携带在搜索请求中一并发送给获取装置,例如至少一次图搜索可以是图1所示关系网络中存在的4个计算需求;获取装置接收搜索请求,从搜索请求中获取至少一次图搜索所需的搜索参数,对至少一次图搜索所需的搜索参数进行顺序调整,以将具有相同起始对象的搜索参数进行连续排列,并将调整后的搜索参数存储到参数列表中。
获取装置对至少一次图搜索所需的搜索参数进行顺序调整的方式包括:
若至少一次图搜索使用的图是有向图,则获取装置可以直接根据起始对象对至少一次图搜索所需的搜索参数进行顺序调整,将起始对象相同的搜索参数连续排列;
若至少一次图搜索使用的图是无向图,考虑到无向图的特点:两个相连的图顶点互换之后是等价的,因此获取装置可以在对至少一次图搜索所需的搜索参数进行顺序调整之前,对至少一次图搜索所需的搜索参数中的起始对象和终点对象进行调换处理,之后再根据起始对象对至少一次图搜索所需的搜索参数进行顺序调整,将起始对象相同的搜索参数连续排列。
对于至少一次图搜索中任一次图搜索来说,获取装置均可以按照下述方法对其所需的搜索参数中的起始对象和终点对象进行调换调整。为便于描述,可以将至少一次图搜索所需的搜索参数中的任一次图搜索所需的搜索参数,记为第一搜索参数,也就是说,第一搜索参数可以是至少一次图搜索中任一次图搜索所需的搜索参数。获取装置分别统计第一搜索参数中的起始对象和终点对象在至少一次图搜索所需的搜索参数中出现的次数;将第一搜索参数中的起始对象在至少一次图搜索所需的搜索参数中出现的次数,与第一搜索参数中的终点对象在至少一次图搜索所需的搜索参数中出现的次数进行比较;若第一搜索参数中的起始对象在至少一次图搜索所需的搜索参数中出现的次数小于第一搜索参数中的终点对象在至少一次图搜索所需的搜索参数中出现的次数,则将第一搜索参数中的起始对象和终点对象进行互换;反之,不进行互换。
以图1所示关系网络中存在的几个计算需求为例,对于第1个计算需求来说,其起始对象在4个计算需求所需的搜索参数中出现的次数为4,其终点对象在4个计算需求所需的搜索参数中出现的次数为1,由于起始对象在4个计算需求所需的搜索参数中出现的次数大于终点对象在4个计算需求所需的搜索参数中出现的次数,故不进行互换;反之,需要进行互换。
在本实施例中,获取装置获取本次图搜索所需的搜索参数之后,不是直接启动全新的图搜索过程来获取本次图搜索的结果信息,而是根据本次图搜索所需的搜索参数和上一次图搜索信息,获得用于指示本次图搜索的结果信息可否基于上一次图搜索的结果信息得到的图搜索状态。这里上一次图搜索信息是指上一次图搜索涉及的信息(或可称为上一次图搜索的相关信息),至少包括:上一次图搜索的起始对象、使用的搜索限制条件以及上一次图搜索的结果信息。进一步,上一次图搜索信息还可以包括上一次图搜索的终点对象。上一次图搜索的结果信息包括针对上一次图搜索的搜索需求在图上进行搜索所产生的各种结果信息,例如可以是最终获得的满足上一次图搜索的搜索需求的信息,也可以是在搜索过程中产生的信息。最终获得的满足上一次图搜索需求的信息可以是最短路径度数、最短路径条数、是否可达的结果等信息;在搜索过程中产生的信息可以是从起始对象对应的图顶点到终点对象对应的图顶点的路径上所经过的图顶点、以及从起始对象对应的图顶点到上述各图顶点的搜索度数等等。以图1所示关系网络中存在的第1个计算需求作为上一次图搜索,则上一次图搜索的起始对象和终点对象分别是第一用户和银行卡,搜索限制条件为空,上一次图搜索的结果信息可以包括最终得到的第一用户到银行卡的最短路径度数为1。
值得说明的是,本次图搜索的结果信息与上一次图搜索的结果信息相类似,不再赘述。
在本实施例中,通过图搜索状态来表示本次图搜索的结果信息可否基于上一次图搜索的结果信息得到。若图搜索状态指示本次图搜索的结果信息可以基于上一次图搜索的结果信息得到,则获取装置可以根据上一次图搜索的结果信息获得本次图搜索的结果信息,通过复用上一次图搜索产生的信息,可以避免相同图搜索过程的重复执行,有利于减少获取图搜索结果信息所消耗的CPU、内存等资源,提高整个图搜索的响应速度(即提高了返回图搜索结果的速度)和处理效率。
进一步,在一可选实施方式中,若图搜索状态指示本次图搜索的结果信息不可以基于上一次图搜索的结果信息得到,则获取装置可以根据指定的搜索算法重新进行图搜索。在该实施方式中,虽然本次图搜索的结果信息不可以基于上一次图搜索的结果信息得到,但可以按照指定搜索算法重新进行图搜索,可以保证获得图搜索结果。
在一可选实施方式中,如图3所示,上述步骤202的一种实施方式包括:
2021、根据上一次图搜索的起始对象、本次图搜索的起始对象、上一次图搜索使用的搜索限制条件和本次图搜索使用的搜索限制条件,确定初始状态。
例如,获取装置首先判断本次图搜索的起始对象与上一次图搜索的起始对象是否相同。
若上一次图搜索的起始对象与本次图搜索的起始对象相同,则获取装置继续判断本次图搜索使用的搜索限制条件和上一次图搜索使用的搜索限制条件之间满足哪种指定关系。
当上一次图搜索使用的搜索限制条件与本次图搜索使用的搜索限制条件兼容且是大于或等于关系时,获取装置确定初始状态为第一状态,第一状态指示本次图搜索的结果信息可以直接从上一次图搜索的结果信息中获得。
图搜索使用的搜索限制条件可能会有很多种,例如一种搜索限制条件可能是中间对象类型必须是“卡”类型,另一种搜索限制条件可能是搜索度数不能超过3度,等等。对于不同搜索限制条件,所述“兼容”的含义会有所不同,例如有些搜索限制条件必须完全相同才算是兼容,例如对于中间对象类型必须是“卡”类型这一搜索限制条件,不同图搜索过程中必须完全相同才算是兼容,而有些搜索限制条件,例如对于搜索度数不能超过3度这一搜索限制条件,无论如何都是兼容的。如果上一次图搜索使用的搜索限制条件与本次图搜索使用的搜索限制条件兼容,则可以进一步判断两者是否满足大于或等于关系,并且只有在满足大于或等于关系时,才确定初始状态为第一状态。例如,假设上一次图搜索使用的搜索限制条件和本次图搜索使用的搜索限制条件均仅包括:最大搜索度数,若上一次图搜索限定的最大搜索度数和本次图搜索限定的最大搜索度数相等,或者上一次图搜索限定的最大搜索度数大于本次图搜索限定的最大搜索度数,则认为上一次图搜索使用的搜索限制条件和本次图搜索使用的搜索限制条件满足大于或等于关系。
当上一次图搜索使用的搜索限制条件与本次图搜索使用的搜索限制条件兼容且是小于关系时,获取装置确定初始状态为第二状态,第二状态指示本次图搜索的结果信息可以在上一次图搜索的结果信息的基础上继续进行图搜索获得。例如,假设上一次图搜索使用的搜索限制条件和本次图搜索使用的搜索限制条件均仅包括:最大搜索度数,若上一次图搜索限定的最大搜索度数小于本次图搜索限定的最大搜索度数,则认为上一次图搜索使用的搜索限制条件和本次图搜索使用的搜索限制条件满足小于关系。
当上一次图搜索使用的搜索限制条件与本次图搜索使用的搜索限制条件不兼容时,获取装置确定初始状态为第三状态,第三状态指示本次图搜索的结果信息不能基于上一次图搜索的结果信息获得。
若上一次图搜索的起始对象与本次图搜索的起始对象不相同,则获取装置确定初始状态为第三状态。
可选的,第一状态、第二状态和第三状态可分别称为ENOUGH、CONTINUE和NEW_VERSION状态,这只是称谓问题,并不影响三种状态表示的含义。
2022、根据上一次图搜索的结果信息和上一次图搜索使用的搜索限制条件,确定上一次图搜索是否出现未满足上一次图搜索使用的搜索限制条件即停止图搜索的情况,这种情况可以称为lazy情况;若是,即上一次图搜索出现lazy情况,则执行2023;反之,即上一次图搜索未出现lazy情况,则执行2024。
2023、根据上一次图搜索的结果信息和本次图搜索的终点对象,对上述初始状态进行修正,获得图搜索状态。
对lazy情况进行举例说明:假设上一次图搜索使用的搜索限制条件中规定最大搜索度数为3度,但是在实际图搜索过程中,搜索到1度时就发现了终点对象对应的图顶点,那么图搜索过程会在搜索完1度后停止搜索,这种情况即为一种lazy情况。
在一可选实施方式中,上一次图搜索的结果信息包括上一次图搜索已经遍历到的图顶点。则获取装置可以先判断上述初始状态具体是哪种状态。若初始状态为第一状态,当本次图搜索的终点对象对应的图顶点不属于上一次图搜索已经遍历到的图顶点,且上一次图搜索使用的搜索限制条件与本次图搜索使用的搜索限制条件兼容且是小于关系时,将初始状态修正为第二状态,以作为图搜索状态;若初始状态为第二状态,当本次图搜索的终点对象对应的图顶点属于上一次图搜索已经遍历到的图顶点时,将初始状态修改为第一状态,以作为图搜索状态。进一步还包括:若初始状态为第三状态,则直接将初始状态作为图搜索状态。
2024、将初始状态作为图搜索状态。
若上一次图搜索过程未出现lazy情况,则获取装置可以直接将上述初始状态作为图搜索状态。
基于上述,若图搜索状态为第一状态,则获取装置可以直接从上一次图搜索的结果信息中获取本次图搜索的结果信息;若图搜索状态为第二状态,则图搜索状态可以使用本次图搜索的起始对象、本次图搜索的终点对象、本次图搜索的搜索需求和本次图搜索使用的搜索限制条件,沿着上一次图搜索最后遍历到的图顶点继续进行图搜索,以获得本次图搜索的结果信息。
值得说明的是,本实施例重点描述在同一图上所进行的前后两次图搜索中,后一次图搜索的结果信息是否可以基于上一次图搜索的结果信息获得,并未限定上一次图搜索的具体过程。对于上一次图搜索来说,其结果信息可以基于其上一次的图搜索的结果信息获得,或者也可以是根据指定搜索算法重新进行图搜索而获得。
在本实施例中,当需要获取图搜索结果时,获取装置直接获取本次图搜索所需的搜索参数,并根据本次图搜索所需的搜索参数和上一次图搜索信息进行比较,确定本次图搜索的结果信息可否基于上一次图搜索的结果信息得到,并在可以基于上一次图搜索的结果信息得到本次图搜索的结果信息时,根据上一次图搜索的结果信息获得本次图搜索的结果信息,使得本次图搜索的结果信息可以在不启动或不重新启动全新图搜索的条件既可获得,有利于降低资源消耗,提高图搜索的响应速度和处理效率。
虽然在上述实施例中并未限定上一次图搜索的结果信息是如何获得的,但在整个图搜索过程中,始终是需要根据指定搜索算法进行图搜索的,为便于进行图搜索,获取装置需要预先生成图搜索所使用的图。例如,获取装置可以预先获取关系网络中由各对象之间的关联关系产生的原始数据,根据所获取的原始数据在初始图中添加图顶点和边,以获得图搜索使用的图。
具体来说,关系网络中的对象可以是昵称、手机、姓名、地址等。关系网络中有各种各样的对象,每个对象都是唯一的、不相等的。不同关系网络中的对象根据信息量的不等可以有多种表示方法。对象之间的关联关系可以表示为:第一对象、第二对象和关联属性。比如,第一用户使用了信用卡进行了支付,那么第一对象是:第一用户,第二对象是:信用卡,两个对象之间的关联属性是:支付,这两个对象之间的关联关系是有向的。上述对象之间的关联关系可以存储为生成图所需的原始数据,一般是保存在数据库(例如Hbase数据库)或者文件系统中,在生成图时由获取装置读取并使用。
值得说明的是,对象之间的关联关系的存储格式会影响构建图的步骤。因为构建图的过程是解析对象之间的关联关系的过程,需要与对象之间的关联关系的存储过程相匹配,只要两个过程相匹配即可,不限于具体的存储形式。例如,假设关系网络有第一对象和第二对象的一条边,若使用“有向”的方式存储,那么在数据库中可能会存储为2行数据;若使用“无向(无向,即双向)”的方式存储,那么在数据库中可能只会存储为1行数据。当然,还有其他的存储方法,例如,如果对象之间的关联关系表示为:第一对象、第二对象、关联关系和方向,那么不管边方向是单向的(只能从一个对象指向另一个对象),还是双向的,都可以通过“方向”表示出来,那么数据库中也只需要存储为1行数据。
获取装置可以从数据库或文件系统中获取关系网络中由各对象之间的关联关系产生的原始数据,将原始数据构成原始数据列表,该步骤与上述存储对象之间的关联关系的过程相对应。之后,获取装置创建一个邻接表图对象,例如通过Map<图顶点,列表<图边>>存储所生成的图的结构、图顶点和图边等信息,并通过Map<对象,图顶点>存储原始数据中对象和其图顶点的对应关系;从原始数据列表中获取一个未经处理的原始数据,接下来,判断该原始数据对应的第一对象是否在图的Map<对象,图顶点>的对象中;若不存在,则根据第一对象构造第一对象的图顶点(主要是指初始化图顶点有关信息的过程),并将第一对象放到图的Map<对象,图顶点>中;若存在,则获取第一对象对应的图顶点,根据原始数据对应的第二对象构造边(主要是初始化该边的有关信息的过程),将由第一对象对应的图顶点和到第二对象对应的图顶点的边放到图的Map<图顶点,列表<图边>>中,并返回继续从原始数据列表中获取一个未经处理的原始数据及后续操作,直到原始数据列表中不存在未经处理的原始数据为止,最终获得图搜索所使用的图。
值得说明的是,上述获取装置生成的图可以是有向图,也可以是无向图,具体视关系网络中各对象之间的关联关系而定。
在具体实现上,获取装置可以通过创建图搜索装置,通过图搜索装置进行图搜索。获取装置可以根据每次图搜索所需的搜索参数,对图搜索装置进行有关参数的配置,以便进行图搜索,例如可以配置图搜索装置的起始对象、版本号、搜索限制条件以及在图搜索过程中对应搜索限制条件的状态参数等。在图搜索装置首次被创建时,可以对图搜索装置的各参数进行初始化,例如可以是设置将起始对象初始化为空,将版本号初始化为预设值,例如0,并根据图搜索使用的搜索限制条件的不同,将图搜索装置的搜索限制条件初始化为不同的预设值,将图搜索装置的状态参数初始为空等。
在本实施例中,上述版本号一方面用于标记图搜索装置的图搜索过程,另一方面用于标记图搜索装置在图搜索过程中已经遍历到的图顶点。具体的,在图搜索装置进行图搜索过程中,可以将已经遍历到的图顶点的版本号配置为图搜索装置的版本号,以标识在图搜索装置的本次图搜索过程中已经遍历到的图顶点。
基于上述,当需要进行图搜索以获得图搜索的结果信息时,可以先对图搜索装置进行参数设置,之后再按照指定的搜索算法进行图搜索。上述需要进行图搜索以获得图搜索的结果信息的场景可以是:上述本次图搜索的结果信息需要根据指定搜索算法重新进行图搜索,即图搜索状态为第三状态的场景,或者可以是上述本次图搜索的结果信息需要在上一次图搜索最后遍历到的图顶点的基础上继续进行图搜索获得,即图搜索状态为第二状态的场景,或者还可以是第一次获取图搜索的结果信息的场景,等等。
对于本次图搜索的结果信息需要根据指定搜索算法重新进行图搜索,即图搜索状态为第三状态的场景,则可以将图搜索装置的版本号加1,将图搜索装置的搜索限制条件设备为本次图搜索使用的搜索限制条件,清空图搜索装置的队列,将图搜索装置的起始对象设置为本次图搜索的初始对象,将图中本次图搜索的起始对象对应的图顶点的版本号设置为图搜索装置的版本号,将本次图搜索的起始对象对应的图顶点添加到队列中,并初始图搜索过程中对应搜索限制条件的状态参数为指定值,例如该状态参数可以是已搜索度数。
对于本次图搜索的结果信息需要在上一次图搜索最后遍历到的图顶点的基础上继续进行图搜索获得,即图搜索状态为第二状态的场景,则可以将图搜索装置的搜索限制条件设备为本次图搜索使用的搜索限制条件,并初始化图搜索过程中对应搜索限制条件的状态参数为指定值,例如该状态参数可以是已搜索度数,图搜索装置的其他参数保持不变。
本实施例以图搜索使用的图为无向图,且以指定的搜索算法为广度优先搜索算法为例,说明一次图搜索的过程,如图4所示,该过程具体包括:
1、判断图搜索装置的队列是否为空(即队列中图顶点个数是否为0),如果为空,则结束当前步骤,进入步骤18;如果不为空,则进入步骤2。
2、从队列获取第一个图顶点v,并获取图顶点v中最短路径度数值,并进入步骤3。
3、判断图顶点v的最短路径度数是否大于图搜索装置的已遍历度数,如果是,则结束当前步骤,进入步骤18;如果否,则进入步骤4。
4、从队列中删除第一个图顶点v,获取图顶点v的相邻图边列表,计算通过图顶点v往下1度遍历到的图顶点的最短路径度数dh为图顶点v的最短路径度数+1。
5、判断图顶点v的相邻图列表中的图边是否已经全部被遍历到,如果是,则结束当前步骤,进入步骤1,如果否,进入步骤6。
6、获取图顶点v的相邻图列表中一个还未被遍历到的图边,并进入步骤7。
7、判断上述获取的图边的边属性和/或相邻图顶点(记为图顶点vu)是否会被图搜索限制条件给限制(过滤),并将判断结果记为isFilter,并进入步骤8。其中,isFilter取值为真(true):表示会被限定条件给过滤,isFilter取值为假(false):表示不被过滤。
8、判断图顶点vu的版本号小于图搜索装置的当前版本号,若是,即图顶点vu的版本号小于图搜索装置的当前版本号,进入步骤9;若否,进行步骤16。
9、判断isFilter的取值是否为真,且图顶点vu对应的对象是否不等于本次图搜索的终点对象,若是,即isFilter的取值为真,且图顶点vu对应的对象不等于本次图搜索的终点对象,进入步骤10;若否,进行如步骤11
10、设置图顶点vu的版本号为图搜索装置的当前版本号,并设置图顶点vu的最小路径度数为-1,表示路径不可达,并返回步骤6。
11、判断isFilter的取值是否为假,若是,进入步骤12,若否,返回步骤6。
12、设置图顶点vu的版本号为图搜索装置的当前版本号,设置图顶点vu的最小路径度数为dh,并根据需要计算其他所需的图搜索结果,例如最短路径条数等,进入步骤13。
13、添加图顶点vu到图搜索装置的队列中,进入步骤14。
14、判断图顶点vu对应的对象是否是本次图搜索的终点对象,若是,进入步骤15,若否,返回步骤6。
15、设置图搜索装置的已遍历度数为上述的dh值,并返回步骤6。
16、判断上述isFilter的取值是否为假,且图顶点vu的最短路径度数是否等于上述dh值,若是,即上述isFilter的取值为假,且图顶点vu的最短路径度数等于上述dh值,则进入步骤17,若否,返回步骤6。
17、根据需要计算其他所需的图搜索结果,比如现在又发现了一条最短路径,所以图顶点上的最短路径条数需要+1,并返回步骤6。
18、从图中获取本次图搜索的终点对象对应的图顶点ve,并进入步骤19。
19、判断图顶点ve的版本号是否不等于图搜索装置的当前版本号,若是,进入步骤20;若否,进入步骤21。
20、返回搜索不到图顶点ve的结果,并进入步骤22。
其中,图顶点ve的版本号不等于图搜索装置的当前版本号表示该图顶点ve在限定的图搜索条件内没有搜索到,比如本次图搜索的终点对象和起始对象的最短路径度数是5度,但是搜索限制条件中的最大搜索度数为3度。
21、根据本次图搜索的搜索需求,返回满足该搜索需求的图搜索结果,并进入步骤22。比如,若搜索需求是“计算起始对象和终点对象的最短路径度数”,则返回从起始对象到终点对象的图顶点ve的最短路径度数值,即dh,该值存储在图顶点ve中。
22、保存图搜索的结果信息。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图5为本申请一实施例提供的图像搜索结果获取装置的结构示意图。如图5所示,该装置包括:参数获取模块51、状态获取模块52和结果获取模块53。
参数获取模块51,用于获取本次图搜索所需的搜索参数,搜索参数包括:本次图搜索的起始对象、本次图搜索的终点对象、本次图搜索的搜索需求和本次图搜索使用的搜索限制条件。
状态获取模块52,与参数获取模块51连接,用于根据参数获取模块51获取的本次图搜索所需的搜索参数和上一次图搜索信息,获得用于指示本次图搜索的结果信息可否基于上一次图搜索的结果信息得到的图搜索状态,上一次图搜索信息包括:上一次图搜索的起始对象、上一次图搜索使用的搜索限制条件和上一次图搜索的结果信息;上一次图搜索是本次图搜索之前、并与本次图搜索在同一图上进行搜索的过程。
结果获取模块53,与状态获取模块52连接,用于在状态获取模块52获得的图搜索状态指示本次图搜索的结果信息可以基于上一次图搜索的结果信息获得时,根据上一次图搜索的结果信息获得本次图搜索的结果信息。
在一可选实施方式中,结果获取模块53还用于:在图搜索状态指示本次图搜索的结果信息不可以基于上一次图搜索的结果信息获得时,根据指定搜索算法重新进行图搜索,以获得本次图搜索的结果信息。
在一可选实施方式中,参数获取模块51具体可用于:从参数列表中,获取本次图搜索所需的搜索参数;其中,参数列表包括至少一次图搜索所需的搜索参数,且在参数列表中,具有相同起始对象的搜索参数连续排列。
基于上述,如图6所示,该装置还包括:接收模块54、调整模块55和存储模块56。
接收模块54,用于接收搜索请求,所述搜索请求包括至少一次图搜索所需的搜索参数。
调整模块55,与接收模块54连接,用于对接收模块54接收的至少一次图搜索所需的搜索参数进行顺序调整,以将具有相同起始对象的搜索参数连续排列。
存储模块56,与调整模块55连接,用于将调整模块55调整后的搜索参数存储到参数列表中。
进一步,如图6所示,该装置还包括:对象互调模块57,与调整模块55连接,用于在至少一次图搜索所使用的图是无向图时,在调整模块55对至少一次图搜索所需的搜索参数进行顺序调整之前,对于第一搜索参数,分别统计第一搜索参数中的起始对象和终点对象在至少一次图搜索所需的搜索参数中出现的次数,并在第一搜索参数中的起始对象在至少一次图搜索所需的搜索参数中出现的次数小于第一搜索参数中的终点对象在至少一次图搜索所需的搜索参数中出现的次数时,将第一搜索参数中的起始对象和终点对象进行互换。其中,第一搜索参数是至少一次图搜索中任一次图搜索所需的搜索参数。
在一可选实施方式中,如图6所示,状态获取模块52的一种实现结构包括:第一确定单元521、第二确定单元522和获取单元523。
第一确定单元521,用于根据上一次图搜索的起始对象、本次图搜索的起始对象、上一次图搜索使用的搜索限制条件和本次图搜索使用的搜索限制条件,确定初始状态。
第二确定单元522,用于根据上一次图搜索的结果信息和上一次图搜索使用的搜索限制条件,确定上一次图搜索是否出现未满足上一次图搜索使用的搜索限制条件即停止图搜索的情况。
获取单元523,与第一确定单元521和第二确定单元522连接,用于在第二确定单元522的确定结果为出现时,根据上一次图搜索的结果信息和本次图搜索的终点对象,对第一确定单元521确定的初始状态进行修正,以获得图搜索状态,或者在第二确定单元522的确定结果为未出现时,将第一确定单元521确定的初始状态作为图搜索状态。
进一步,第一确定单元521具体可用于:
若上一次图搜索的起始对象与本次图搜索的起始对象相同,当上一次图搜索使用的搜索限制条件与本次图搜索使用的搜索限制条件兼容且是大于或等于关系时,确定初始状态为第一状态,第一状态指示本次图搜索的结果信息可以直接从上一次图搜索的结果信息中获得;当上一次图搜索使用的搜索限制条件与本次图搜索使用的搜索限制条件兼容且是小于关系时,确定初始状态为第二状态,第二状态指示本次图搜索的结果信息可以在上一次图搜索的结果信息的基础上继续进行图搜索获得;当上一次图搜索使用的搜索限制条件与本次图搜索使用的搜索限制条件不兼容时,确定初始状态为第三状态,第三状态指示本次图搜索的结果信息不能基于上一次图搜索的结果信息获得;
若上一次图搜索的起始对象与本次图搜索的起始对象不相同,确定初始状态为第三状态。
在一可选实施方式中,上一次图搜索的结果信息包括上一次图搜索已经遍历到的图顶点等信息。
基于上述,获取单元523具体可用于:
在第二确定单元522的确定结果为出现时,若初始状态为第一状态,当本次图搜索的终点对象对应的图顶点不属于上一次图搜索已经遍历到的图顶点,且上一次图搜索使用的搜索限制条件与本次图搜索使用的搜索限制条件兼容且是小于关系时,将初始状态修正为第二状态,以作为图搜索状态;或者,若初始状态为第二状态,当本次图搜索的终点对象对应的图顶点属于上一次图搜索已经遍历到的图顶点时,将初始状态修改为第一状态,以作为图搜索状态;或者
在第二确定单元522的确定结果为未出现时,将初始状态作为图搜索状态。
在一可选实施方式中,结果获取模块53具体可用于:
若图搜索状态为第一状态,直接从上一次图搜索的结果信息中获取本次图搜索的结果信息;
若图搜索状态为第二状态,根据本次图搜索的起始对象、本次图搜索的终点对象、本次图搜索的搜索需求和本次图搜索使用的搜索限制条件,沿着上一次图搜索最后遍历到的图顶点继续进行图搜索,以获得本次图搜索的结果信息。
进一步,如图6所示,该装置还包括:数据获取模块58和生成模块59。
数据获取模块58,用于获取关系网络中由各对象之间的关联关系产生的原始数据。
生成模块59,与数据获取模块58连接,用于根据数据获取模块58获取的原始数据在初始图中添加图顶点和边,以获得图搜索使用的图。生成模块59可以与结果获取模块53连接,用于向结果获取模块53提供进行图搜索所需的图。
本实施例提供的图搜索结果获取装置,可以在需要获取图搜索结果时,直接获取本次图搜索所需的搜索参数,并根据本次图搜索所需的搜索参数和上一次图搜索信息进行比较,确定本次图搜索的结果信息可否基于上一次图搜索的结果信息得到,并在可以基于上一次图搜索的结果信息得到本次图搜索的结果信息时,根据上一次图搜索的结果信息获得本次图搜索的结果信息,使得本次图搜索的结果信息可以在不启动或不重新启动全新图搜索的条件下即可获得,有利于降低资源消耗,提高图搜索的响应速度和处理效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。