对象匹配方法、装置及系统、电子设备及存储介质与流程

文档序号:19248326发布日期:2019-11-27 19:53阅读:174来源:国知局
对象匹配方法、装置及系统、电子设备及存储介质与流程

本申请涉及计算机技术领域,特别是涉及一种对象匹配方法、装置及系统、电子设备及计算机可读存储介质。



背景技术:

在云计算环境下,数据量的爆炸式增长对数据存储、处理和分析带来了新的挑战,而分布式存储和计算是解决海量数据处理的常用技术手段。以用户、产品、商户等对象的匹配为例,当对象达到十万以上级别时,由于对象的数据量大,目前采用的对象匹配方法是将对象分组,然后以组为单位将对象数据分发至分布式系统的不同节点上,由各个节点对本节点上存储的对象数据与其他节点上存储的对象数据进行数据比对,以实现将本节点上存储的对象与所有对象进行两两对象匹配。在这个过程中,每个节点需要通过网络传输接口获取其他节点存储的对象数据。

可见,现有技术中的对象匹配方法,需要占用大量的网络传输资源,对象匹配效率非常低。



技术实现要素:

本申请提供一种对象匹配方法,有助于提升海量对象的匹配效率。

为了解决上述问题,第一方面,本申请实施例提供了一种对象匹配方法,包括:

获取若干目标对象的对象数据构成的对象数据集合,每条所述对象数据包括相应目标对象的对象标识;

确定每个所述对象标识与预先获取的匹配索引值的一一对应关系;

将所述对象数据集合中的对象数据分组分发至预设的匹配节点;

通过所述匹配节点根据所述对象标识、所述对象标识与所述匹配索引值的一一对应关系,对接收到的所述对象数据与所述匹配节点预先缓存的部分对象数据进行匹配运算,以根据匹配运算的结果确定相互匹配的所述目标对象。

第二方面,本申请实施例提供了一种对象匹配装置,包括:

对象数据集合获取模块,用于获取若干目标对象的对象数据构成的对象数据集合,每条所述对象数据包括相应目标对象的对象标识;

索引值关联模块,用于确定每个所述对象标识与预先获取的匹配索引值的一一对应关系;

数据分发模块,用于将所述对象数据集合中的对象数据分组分发至预设的匹配节点;

匹配模块,用于通过所述匹配节点根据所述对象标识、所述对象标识与所述匹配索引值的一一对应关系,对接收到的所述对象数据与所述匹配节点预先缓存的部分对象数据进行匹配运算,以根据匹配运算的结果确定相互匹配的所述目标对象。

第三方面,本申请实施例还公开了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本申请实施例所述的对象匹配方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时本申请实施例公开的对象匹配方法的步骤。

本申请实施例公开的对象匹配方法,通过获取若干目标对象的对象数据构成的对象数据集合,每条所述对象数据包括相应目标对象的对象标识;确定每个所述对象标识与预先获取的匹配索引值的一一对应关系;将所述对象数据集合中的对象数据分组分发至预设的匹配节点;通过所述匹配节点根据所述对象标识、所述对象标识与所述匹配索引值的一一对应关系,对接收到的所述对象数据与所述匹配节点预先缓存的部分对象数据进行匹配运算,以根据匹配运算的结果确定相互匹配的所述目标对象,有效减少了数据传输资源的使用,提升了对象匹配的效率。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例一的对象匹配系统结构示意图;

图2是本申请实施例二的对象匹配方法流程图;

图3是本申请实施例二的对象数据分发示意图;

图4本申请实施例三的对象匹配装置结构示意图之一;

图5本申请实施例三的对象匹配装置结构示意图之二。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

实施例一

本申请实施例公开的一种对象匹配系统,如图1所示,所述对象匹配系统包括至少一个数据存储节点110、多个匹配节点120和一个控制节点130。所述数据存储节点110和匹配节点120、控制节点130可以分布在一台物理设备上,也可以分布在多台设备上。优选的,为了提升数据处理效率,所述数据存储节点110、多个匹配节点120和一个控制节点130分别分布多台物理设备上。当所述数据存储节点110和匹配节点120、控制节点130分布在多台物理设备上时,上述各个节点之间通过网络进行数据传输。

下面分别介绍各节点的具体实施方式。

所述数据存储节点110用于存储若干目标对象的对象数据。在本申请的一些实施例中,所述数据存储节点110可以为分布式文件系统的节点,如hdfs(hadoopdistributedfilesystem)文件系统的节点,多个数据存储节点110构成一个数据存储集群。

所述控制节点130,用于获取若干目标对象的对象数据构成的对象数据集合,每条所述对象数据包括相应目标对象的对象标识;并确定每个所述对象标识与预先获取的匹配索引值的一一对应关系;然后,将所述对象数据集合中的对象数据分组分发至预设的匹配节点。

在本申请的一些实施例中,所述控制节点130可以为spark(一种专为大规模数据处理而设计的快速通用的计算引擎)集群,也可以为由数据读取、数据分发和调度模块构成的一个服务器节点。

在本申请的一些实施例中,所述控制节点130响应于启动对象匹配的操作,创建数据读取任务,从所述数据存储节点110中读取所有目标对象的对象数据,并将读取到的数据组成一个对象数据集合d。对象数据集合d中每条对象数据对应一个目标对象,每条对象数据包括其对应的目标对象的对象标识。

之后,所述控制节点130进一步确定每个所述对象标识与预先获取的匹配索引值的一一对应关系。在本申请的一些实施例中,所述确定每个所述对象标识与预先获取的匹配索引值的一一对应关系包括:根据所述对象数据集合中各所述对象数据的存储位置顺序,为每条所述对象数据分配与所述存储位置顺序对应的匹配索引值;确定为每条所述对象数据分配的所述匹配索引值,作为该条所述对象数据包括的对象标识对应的匹配索引值。例如:所述控制节点130使用spark集群原生zipwithindexed方法,根据所述对象数据集合中各所述对象数据的存储位置顺序,为每条所述对象数据分配与所述存储位置顺序对应的匹配索引值。例如,生成的匹配索引值可以表示为:1、2、3、…n,其中,匹配索引值的数量n和对象数据集合中包括的对象数据的条数匹配。

接下来,所述控制节点130将所述对象数据集合中的对象数据分组分发至各个匹配节点120。

在本申请的一些实施例中,所述将所述对象数据集合中的对象数据分组分发至预设的匹配节点,进一步包括:确定由所述匹配索引值构成的匹配索引值集合;将所述匹配索引值集合执行打散操作,并将打散后的所述匹配索引值集合中的匹配索引值进行分组,得到与所述匹配节点的数量匹配的子匹配索引值集合;将每个所述子匹配索引值集合中的所述匹配索引值对应的所述对象标识所属目标对象的对象数据分发到一个对应的所述匹配节点。为了均衡各个匹配节点的运算负载,本申请实施例中,适应后续的匹配策略,将所述对象数据集合中的对象数据洗牌,打散后进行分组,分发到各个匹配节点120。

例如:首先根据前述步骤确定的匹配索引值构成匹配索引值集合。由于匹配索引值是根据对象数据在对象数据集合中的存储位置顺序分配的,相应的,匹配索引值集合中的匹配索引值也是与对象数据在对象数据集合中的存储位置顺序匹配的。接下来,将所述匹配索引值集合执行打散操作,例如,通过调用spark集群中的shuffle方法将所述匹配索引值集合中的匹配索引值的顺序打散。之后,按照预先配置的所述匹配节点的数量确定匹配索引值的分组数量m,其中,m为大于1的自然数,m小于或等于预先配置的所述匹配节点的数量。最后,将打散后的所述匹配索引值集合中的匹配索引值分成m组,得到m个子匹配索引值集合。通过对匹配索引值集合中的匹配索引值进行打散处理,使得每个子匹配索引值集合中的匹配索引值是不连续的。

接下来,对于每个子匹配索引值集合,确定与该子匹配索引值集合中的匹配索引值对应的对象数据,作为该子匹配索引值集合对应的对象数据,并将与每个子匹配索引值集合对应的对象数据作为一个整体,分发到相应的节点上。在本申请的一些实施例中,将各个子匹配索引值集合对应的对象数据随机分发到不同的匹配节点上,以实现匹配节点的负载均衡。

在本申请的一些优选实施例中,所述将每个所述子匹配索引值集合中的所述匹配索引值对应的所述对象标识所属目标对象的对象数据分发到一个对应的所述匹配节点的步骤,包括:根据所述子匹配索引值集合中的所述匹配索引值分别与各所述匹配节点历史接收到的匹配索引值的重合度,将所述子匹配索引值集合中的所述匹配索引值对应的对象标识所属目标对象的所述对象数据,分发到最大重合度对应的所述匹配节点;其中,所述匹配节点历史接收到的匹配索引值为所述匹配节点历史接收到的对象数据所属目标对象的对象标识对应的匹配索引值。

假设当前有3个匹配节点,分别表示为匹配节点1、匹配节点2和匹配节点3,同时有3个子匹配索引值集合,分别表示为i1={1,5,9}、i2={2,6,8}和i3={3,4,7}。首先,分别确定各子匹配索引值集合中的所述匹配索引值分别与各所述匹配节点历史接收到的匹配索引值的重合度。例如,对于匹配节点1,根据匹配节点1接收到对象数据的历史记录确定匹配节点1历史上接收到过匹配索引值2,6,8对应的对象标识所属目标对象的对象数据,则认为子匹配索引值集合i2与匹配节点1历史接收到的匹配索引值的重合度为100%;而根据匹配节点1接收到对象数据的历史记录确定节点1历史上没有接收到过匹配索引值1,5,9对应的对象标识所属目标对象的对象数据,则认为子匹配索引值集合i1与匹配节点1历史接收到的匹配索引值的重合度为0%;根据匹配节点1接收到对象数据的历史记录确定匹配节点1历史上接收到过匹配索引值3,4对应的对象标识所属目标对象的对象数据,则认为子匹配索引值集合i3与匹配节点1历史接收到的匹配索引值的重合度为67%。由此,可以确定所述子匹配索引值集合i1、i2和i3中的所述匹配索引值分别与匹配节点1历史接收到的匹配索引值的最大重合度为100%,即子匹配索引值集合i2与匹配节点1历史接收到的匹配索引值的重合度最大,那么,确定将子匹配索引值集合i2对应的对象数据分发到匹配节点1。

之后,按照上述方法可以依次确定子匹配索引值集合i1和i3中的匹配索引值与各匹配节点历史接收到的对象数据对应的匹配索引值之间的重合度,并将各子匹配索引值集合对应的对象数据分发到未被分发对象数据的且最大重合度对应的匹配节点。

具体实施时,一次数据分发过程中,每个匹配节点最多接收到一个子匹配索引值集合对应的对象数据。

在本申请的一些实施例中,所述匹配节点120预先缓存有所述对象数据集合中的全部数据。例如,在所述控制节点130响应于启动对象匹配的操作,创建数据读取任务,从所述数据存储节点110中读取所有目标对象的对象数据的同时,所述控制节点130还可以启动缓存同步任务,将从所述数据存储节点110中读取所有目标对象的对象数据缓存到预先配置的各个匹配节点120中。

在接收到所述控制节点130分发的待匹配的对象数据之后,所述匹配节点120根据所述对象标识、所述对象标识与所述匹配索引值的一一对应关系,对接收到的所述对象数据与所述匹配节点预先缓存的部分对象数据进行匹配运算,以根据匹配运算的结果确定相互匹配的所述目标对象。

在本申请的一些实施例中,通过匹配节点根据所述对象标识、所述对象标识与所述匹配索引值的一一对应关系,对接收到的所述对象数据与所述匹配节点预先缓存的部分对象数据进行匹配运算,以根据匹配运算的结果确定相互匹配的所述目标对象步骤,包括:通过所述匹配节点,对接收到的每条所述对象数据分别执行以下两两匹配操作:通过所述匹配节点,对接收到的每条所述对象数据分别执行以下两两匹配操作:确定所述匹配节点本地预先缓存的、且满足预设匹配索引值条件的所述对象数据,作为该条对象数据的候选目标对象数据,其中,所述预设匹配索引值条件包括:所述本地预先缓存的所述对象数据包括的对象标识对应的所述匹配索引值大于该条对象数据包括的对象标识对应的所述匹配索引值;对该条对象数据的候选目标对象数据分别与该条对象数据进行两两匹配运算,确定该条对象数据的候选目标对象数据各自与该条对象数据的匹配结果;根据每条所述对象数据的两两匹配结果,确定与各条对象数据相应的目标对象匹配的所述目标对象。

下面以匹配节点1对目标对象的对象数据进行两两匹配运算举例说明对象匹配的具体技术方案。仍以匹配节点1中接收到的对象数据为子匹配索引值集合i2={2,6,8}对应的对象数据举例。假设全部目标对象为10个,匹配节点1中预先缓存了10个目标对象的对象数据,目标对象的对象标识分别用id1、id2、…、id10表示,对象标识id1、id2、…、id10对应的匹配索引值用1至10这10个自然数表示,对象标识id1、id2、…、id10的目标对象的对象数据分别表示为d1、d2、d3、d4、…、d10。

首先,对于接收到的匹配索引值2对应的对象标识id2所属目标对象的对象数据d2,确定匹配节点1中缓存的10条对象数据中包括的对象标识对应的匹配索引值(即匹配索引值1、2、3、…、10)大于2的对象数据,即匹配索引值为3、4、…、10这8个匹配索引值对应的对象标识id3、id4、…、id10所属目标对象的对象数据d3、d4、…、d10,作为匹配索引值2对应的对象数据的候选目标对象数据。之后,分别对匹配索引值2对应的对象标识id2所属目标对象的对象数据d2与候选目标对象数据d3、d4、…、d10进行两两匹配运算。例如,计算匹配索引值2对应的对象标识id2所属目标对象的对象数据d2分别与候选目标对象数据d3、d4、…、d10之间的欧式距离,通过欧式距离衡量两个对象数据的匹配度。

对于接收到的匹配索引值4对应的对象标识id4所属目标对象的对象数据d4,则只需要与候选目标对象数据d3、d4、…、d10进行两两匹配运算。

具体实施时,还可以采用其他方法对两条对象数据进行匹配度运算,本申请对对两条对象数据进行匹配度运算的具体实施方式不做限定。

参照上述匹配方法,可以得到匹配节点1接收到的每条对象数据(每条对象数据对应一个目标商户)与任意一个其他目标商户的商户数据的两两匹配结果。同理,也可以得到其他匹配节点上接收到的每条商户数据(每条商户数据对应一个目标商户)与任意一个其他目标商户的商户数据的两两匹配结果。

本实施例中,为了便于读者理解技术方案,以匹配节点上缓存10个目标对象的对象数据举例说明了两两匹配过程,具体应用过程中,每个匹配节点上缓存的对象数据可能有数万条,因此,每个匹配节点上会生成多个两两匹配结果。为了避免多个生成多个存储匹配结果的小文件,以节省存储资源,在本申请的一些实施例中,通过所述匹配节点,对接收到的每条所述对象数据分别执行以下两两匹配操作之后,所述匹配节点120还用于:对各匹配节点上的两两匹配结果进行和并。最后,输出合并后的匹配结果。例如,可以通过spark集群中的union方法进行匹配结果的合并。

通过上述对象匹配方案可以看出,在对象匹配过程中,如果全部商户有p个,设置了q个匹配节点,那么分发过程需要向这q个节点中的每个匹配节点分发(p/q)个商户的商户数据,而现有技术中数据分发过程传输的数据量为(p/q)2,可见,本申请的网络传输资源占用比现有技术低一个数量级。

仍以在对象匹配过程中,全部商户有p个,设置了q个匹配节点举例,如果某一节点上接收到的商户数据对应的匹配索引值是最大的(p/q)个,那么该匹配节点上进行的商户数据的两两匹配次数大概是(p/q/2)*(p/q),现有技术中每个匹配节点都将执行(p/q)*p次两两匹配。可见,本申请公开的对象匹配方法占用的传输资源(如果网络传输接口)更少,各个节点总体匹配运算量更小。

由此可见,本申请实施例公开的对象匹配系统,通过获取若干目标对象的对象数据构成的对象数据集合,每条所述对象数据包括相应目标对象的对象标识;确定每个所述对象标识与预先获取的匹配索引值的一一对应关系;将所述对象数据集合中的对象数据分组分发至预设的匹配节点;通过所述匹配节点根据所述对象标识、所述对象标识与所述匹配索引值的一一对应关系,对接收到的所述对象数据与所述匹配节点预先缓存的部分对象数据进行匹配运算,以根据匹配运算的结果确定相互匹配的所述目标对象,有效减少了数据传输资源的使用,提升了对象匹配的效率。

实施例二

本申请实施例公开的一种对象匹配方法,如图2所示,该方法包括:步骤210至步骤240。所述对象匹配方法应用于如图1所示的对象匹配系统。

步骤210,获取若干目标对象的对象数据构成的对象数据集合,每条所述对象数据包括相应目标对象的对象标识。

本申请实施例中所述目标对象可以为商户或用户,也可以是商品等实体。以下以目标对象为商户具体举例说明对象的匹配方法,则对象标识就是商户标识;对象数据为进行对象匹配时关注的数据,可以包括如:商户特征、商户poi、商户等级、评论数据等,也可以包括其他商户数据。

具体实施时,对象数据可以根据具体业务需求确定,本申请实施例中对对象数据的内容不做限定。

在本申请的一些实施例中,目标对象的对象数据分布式存储于对象匹配系统的多个数据存储节点上。在启动对象匹配之后,所述控制节点响应于启动对象匹配的操作,创建数据读取任务,从所述数据存储节点中读取所有目标对象的对象数据,并将读取到的数据组成一个对象数据集合d。对象数据集合d中每条对象数据对应一个目标对象,每条对象数据包括其对应的目标对象的对象标识。

具体到本实施例而言,所述控制节点响应于启动商户匹配的操作,创建数据读取任务,从所述数据存储节点中读取所有商户的商户数据,并将读取到的数据组成一个商户数据集合。商户数据集合中每条商户数据对应一个商户,每条商户数据包括该条商户属于对应商户的商户标识。

步骤220,确定每个所述对象标识与预先获取的匹配索引值的一一对应关系。

之后,所述控制节点进一步确定每个所述对象标识与预先获取的匹配索引值的一一对应关系。

在本申请的一些实施例中,所述确定每个所述对象标识与预先获取的匹配索引值的一一对应关系包括:根据所述对象数据集合中各所述对象数据的存储位置顺序,为每条所述对象数据分配与所述存储位置顺序对应的匹配索引值;确定为每条所述对象数据分配的所述匹配索引值,作为该条所述对象数据包括的对象标识对应的匹配索引值。例如:所述控制节点130使用spark集群原生zipwithindexed方法,根据所述对象数据集合中各所述对象数据的存储位置顺序,为每条所述对象数据分配与所述存储位置顺序对应的匹配索引值。

匹配索引值的数量n和对象数据集合中包括的对象数据的条数匹配。例如,当有n个商户时,生成的匹配索引值可以表示为:1、2、3、…n,其中,每个匹配索引值对应一个商户的商户标识。

步骤230,将所述对象数据集合中的对象数据分组分发至预设的匹配节点。

接下来,所述控制节点将所述商户数据集合中的商户数据分组分发至各个匹配节点。

在本申请的一些实施例中,所述将所述对象数据集合中的对象数据分组分发至预设的匹配节点,进一步包括:确定由所述匹配索引值构成的匹配索引值集合;将所述匹配索引值集合执行打散操作,并将打散后的所述匹配索引值集合中的匹配索引值进行分组,得到与所述匹配节点的数量匹配的子匹配索引值集合;将每个所述子匹配索引值集合中的所述匹配索引值对应的所述对象标识所属目标对象的对象数据分发到一个对应的所述匹配节点。为了均衡各个匹配节点的运算负载,本申请实施例中,适应后续的匹配策略,将所述商户数据集合中的商户数据洗牌,打散后进行分组,分发到各个匹配节点。

下面结合图3举例说明对象数据的分发方案。其中,对象数据集合300是在启动对象匹配后获取的,包括全量目标对象的对象数据,匹配节点3301、3302、…的缓存区(如cache中)预先缓存了所述对象数据集合300中的对象数据。

例如:首先根据前述步骤确定的匹配索引值构成匹配索引值集合310。由于匹配索引值是根据商户数据在商户数据集合中的存储位置顺序分配的,相应的,匹配索引值集合中的匹配索引值也是与商户数据在商户数据集合中的存储位置顺序匹配的。接下来,将所述匹配索引值集合执行打散操作,例如,通过调用spark集群中的shuffle方法将所述匹配索引值集合中的匹配索引值的排列顺序打散。之后,按照预先配置的所述匹配节点的数量确定匹配索引值的分组数量m,其中,m为大于1的自然数,m小于或等于预先配置的所述匹配节点的数量。最后,将打散后的所述匹配索引值集合中的匹配索引值分成m组,得到m个子匹配索引值集合,如3201、3202、3203、…。通过对匹配索引值集合中的匹配索引值进行打散处理,使得每个子匹配索引值集合中的匹配索引值是不连续的,便于均衡后续每个匹配节点的匹配运算量。

接下来,对于每个子匹配索引值集合,确定与该子匹配索引值集合中的匹配索引值对应的商户数据,作为该子匹配索引值集合对应的商户数据,如3201、3202、3203、…,并将与每个子匹配索引值集合对应的商户数据作为一个整体,分发到相应的节点上,如商户数据。在本申请的一些实施例中,将各个子匹配索引值集合对应的商户数据随机分发到不同的匹配节点上,以实现匹配节点的负载均衡。

在本申请的一些优选实施例中,所述将每个所述子匹配索引值集合中的所述匹配索引值对应的所述对象标识所属目标对象的对象数据分发到一个对应的所述匹配节点的步骤,包括:根据所述子匹配索引值集合中的所述匹配索引值分别与各所述匹配节点历史接收到的匹配索引值的重合度,将所述子匹配索引值集合中的所述匹配索引值对应的对象标识所属目标对象的所述对象数据,分发到最大重合度对应的所述匹配节点;其中,所述匹配节点历史接收到的匹配索引值为所述匹配节点历史接收到的对象数据所属目标对象的对象标识对应的匹配索引值。

假设当前有3个匹配节点,分别表示为匹配节点1、匹配节点2和匹配节点3,同时有3个子匹配索引值集合,分别表示为i1={1,5,9}、i2={2,6,8}和i3={3,4,7}。首先,分别确定各子匹配索引值集合中的所述匹配索引值分别与各所述匹配节点历史接收到的匹配索引值的重合度。例如,对于匹配节点1,根据匹配节点1接收到商户数据的历史记录确定匹配节点1历史上接收到过匹配索引值2,6,8对应的商户标识所属商户的商户数据,则认为子匹配索引值集合i2与匹配节点1历史接收到的匹配索引值的重合度为100%;而根据匹配节点1接收到商户数据的历史记录确定节点1历史上没有接收到过匹配索引值1,5,9对应的商户标识所属商户的商户数据,则认为子匹配索引值集合i1与匹配节点1历史接收到的匹配索引值的重合度为0%;根据匹配节点1接收到商户数据的历史记录确定匹配节点1历史上接收到过匹配索引值3,4对应的商户标识所属商户的商户数据,则认为子匹配索引值集合i3与匹配节点1历史接收到的匹配索引值的重合度为67%。由此,可以确定所述子匹配索引值集合i1、i2和i3中的所述匹配索引值分别与匹配节点1历史接收到的匹配索引值的最大重合度为100%,即子匹配索引值集合i2与匹配节点1历史接收到的匹配索引值的重合度最大,那么,确定将子匹配索引值集合i2对应的商户数据分发到匹配节点1。

之后,按照上述方法可以依次确定子匹配索引值集合i1和i3中的匹配索引值与各匹配节点历史接收到的商户数据对应的匹配索引值之间的重合度,并将各子匹配索引值集合对应的商户数据分发到未被分发商户数据的且最大重合度对应的匹配节点,例如匹配节点2或3。

具体实施时,一次数据分发过程中,每个匹配节点最多接收到一个子匹配索引值集合对应的对象数据(如商户数据)。

在本申请的一些实施例中,所述匹配节点预先缓存有所述商户数据集合中的全部数据。例如,在所述控制节点响应于启动商户匹配的操作,创建数据读取任务,从所述数据存储节点中读取所有商户的商户数据的同时,所述控制节点还可以启动缓存同步任务,将从所述数据存储节点中读取所有商户的商户数据缓存到预先配置的各个匹配节点中。

步骤240,通过所述匹配节点根据所述对象标识、所述对象标识与所述匹配索引值的一一对应关系,对接收到的所述对象数据与所述匹配节点预先缓存的部分对象数据进行匹配运算,以根据匹配运算的结果确定相互匹配的所述目标对象。

在接收到所述控制节点分发的待匹配的商户数据之后,所述匹配节点根据所述商户标识、所述商户标识与所述匹配索引值的一一对应关系,对接收到的所述商户数据与所述匹配节点预先缓存的商户数据中的一部分进行匹配运算,以根据匹配运算的结果确定相互匹配的所述商户。

在本申请的一些实施例中,通过匹配节点根据所述对象标识、所述对象标识与所述匹配索引值的一一对应关系,对接收到的所述对象数据与所述匹配节点预先缓存的部分对象数据进行匹配运算,以根据匹配运算的结果确定相互匹配的所述目标对象步骤,包括:通过所述匹配节点,对接收到的每条所述对象数据分别执行以下两两匹配操作:通过所述匹配节点,对接收到的每条所述对象数据分别执行以下两两匹配操作:确定所述匹配节点本地预先缓存的、且满足预设匹配索引值条件的所述对象数据,作为该条对象数据的候选目标对象数据,其中,所述预设匹配索引值条件包括:所述本地预先缓存的所述对象数据包括的对象标识对应的所述匹配索引值大于该条对象数据包括的对象标识对应的所述匹配索引值;对该条对象数据的候选目标对象数据分别与该条对象数据进行两两匹配运算,确定该条对象数据的候选目标对象数据各自与该条对象数据的匹配结果;根据每条所述对象数据的两两匹配结果,确定与各条对象数据相应的目标对象匹配的所述目标对象。

下面以匹配节点1对商户的商户数据进行两两匹配运算举例说明对象匹配的具体技术方案。仍以匹配节点1中接收到的商户数据为子匹配索引值集合i2={2,6,8}对应的商户数据举例。假设全部商户为10个,匹配节点1中预先缓存了10个商户的商户数据,商户的商户标识分别用id1、id2、…、id10表示,商户标识id1、id2、…、id10对应的匹配索引值用1至10这10个自然数表示,商户标识id1、id2、…、id10对应商户的商户数据分别表示为d1、d2、d3、d4、…、d10。

首先,对于接收到的匹配索引值2对应的商户标识id2所属商户的商户数据d2,确定匹配节点1中缓存的10条商户数据中包括的商户标识对应的匹配索引值(即匹配索引值1、2、3、…、10)大于2的商户数据,即匹配索引值为3、4、…、10这8个匹配索引值对应的商户标识id3、id4、…、id10所属商户的商户数据d3、d4、…、d10,作为匹配索引值2对应的商户数据的候选商户数据。之后,分别对匹配索引值2对应的商户标识id2所属商户的商户数据d2与候选商户数据d3、d4、…、d10进行两两匹配运算。例如,计算匹配索引值2对应的商户标识id2所属商户的商户数据d2分别与候选商户数据d3、d4、…、d10之间的欧式距离,通过欧式距离衡量两个对象数据的匹配度。

对于接收到的匹配索引值4对应的商户标识id4所属商户的商户数据d4,则只需要与候选商户数据d3、d4、…、d10进行两两匹配运算。

具体实施时,还可以采用其他方法对两条对象数据进行匹配度运算,本申请对对两条对象数据进行匹配度运算的具体实施方式不做限定。

参照上述匹配方法,可以得到匹配节点1接收到的每条商户数据(每条商户数据对应一个商户)与任意一个其他目标商户的商户数据的两两匹配结果。同理,也可以得到其他匹配节点上接收到的每条商户数据(每条商户数据对应一个商户)与任意一个其他目标商户的商户数据的两两匹配结果。

本实施例中,为了便于读者理解技术方案,以匹配节点上缓存10个目标对象的对象数据举例说明了两两匹配过程,具体应用过程中,每个匹配节点上缓存的对象数据可能有数万条,因此,每个匹配节点上会生成多个两两匹配结果。为了避免多个生成多个存储匹配结果的小文件,以节省存储资源,在本申请的一些实施例中,通过所述匹配节点,对接收到的每条所述对象数据分别执行以下两两匹配操作的步骤之后,还包括:对各匹配节点上的两两匹配结果进行和并。最后,输出合并后的匹配结果。例如,可以通过spark集群中的union方法进行匹配结果的合并。

通过上述对象匹配方案可以看出,在对象匹配过程中,如果全部商户有p个,设置了q个匹配节点,那么分发过程需要向这q个节点中的每个匹配节点分发(p/q)个商户的商户数据,而现有技术中数据分发过程传输的数据量为(p/q)2,可见,本申请的网络传输资源占用比现有技术低一个数量级。

仍以在对象匹配过程中,全部商户有p个,设置了q个匹配节点举例,如果某一节点上接收到的商户数据对应的匹配索引值是最大的(p/q)个,那么该匹配节点上进行的商户数据的两两匹配次数大概是(p/q/2)*(p/q),现有技术中每个匹配节点都将执行(p/q)*p次两两匹配。可见,本申请公开的对象匹配方法占用的传输资源(如果网络传输接口)更少,各个节点总体匹配运算量更小。

由此可见,本申请实施例公开的对象匹配方法,通过获取若干目标对象的对象数据构成的对象数据集合,每条所述对象数据包括相应目标对象的对象标识;确定每个所述对象标识与预先获取的匹配索引值的一一对应关系;将所述对象数据集合中的对象数据分组分发至预设的匹配节点;通过所述匹配节点根据所述对象标识、所述对象标识与所述匹配索引值的一一对应关系,对接收到的所述对象数据与所述匹配节点预先缓存的部分对象数据进行匹配运算,以根据匹配运算的结果确定相互匹配的所述目标对象,有效减少了数据传输资源的使用,提升了对象匹配的效率。

实施例三

本实施例公开的一种对象匹配装置,如图4所示,所述装置包括:

对象数据集合获取模块410,用于获取若干目标对象的对象数据构成的对象数据集合,每条所述对象数据包括相应目标对象的对象标识;

索引值关联模块420,用于确定每个所述对象标识与预先获取的匹配索引值的一一对应关系;

数据分发模块430,用于将所述对象数据集合中的对象数据分组分发至预设的匹配节点;

匹配模块440,用于通过所述匹配节点根据所述对象标识、所述对象标识与所述匹配索引值的一一对应关系,对接收到的所述对象数据与所述匹配节点预先缓存的部分对象数据进行匹配运算,以根据匹配运算的结果确定相互匹配的所述目标对象。

本申请的一些实施例中,如图5所示,所述匹配模块440进一步包括:

匹配子模块4401,用于通过所述匹配节点,对接收到的每条所述对象数据分别执行以下两两匹配操作:确定所述匹配节点本地预先缓存的、且满足预设匹配索引值条件的所述对象数据,作为该条对象数据的候选目标对象数据,其中,所述预设匹配索引值条件包括:所述本地预先缓存的所述对象数据包括的对象标识对应的所述匹配索引值大于该条对象数据包括的对象标识对应的所述匹配索引值;对该条对象数据的候选目标对象数据分别与该条对象数据进行两两匹配运算,确定该条对象数据的候选目标对象数据各自与该条对象数据的匹配结果;

匹配对象确定子模块4402,用于根据每条所述对象数据的两两匹配结果,确定与各条对象数据相应的目标对象匹配的所述目标对象。

本申请的一些实施例中,所述索引值关联模块420进一步用于:

根据所述对象数据集合中各所述对象数据的存储位置顺序,为每条所述对象数据分配与所述存储位置顺序对应的匹配索引值;

确定为每条所述对象数据分配的所述匹配索引值,作为该条所述对象数据包括的对象标识对应的匹配索引值。

本申请的一些实施例中,如图5所示,所述数据分发模块430进一步包括:

索引值集合生成子模块4301,用于确定由所述匹配索引值构成的匹配索引值集合;

索引值打散分组子模块4302,用于将所述匹配索引值集合执行打散操作,并将打散后的所述匹配索引值集合中的匹配索引值进行分组,得到与所述匹配节点的数量匹配的子匹配索引值集合;以及,

分组分发子模块4303,用于将每个所述子匹配索引值集合中的所述匹配索引值对应的所述对象标识所属目标对象的对象数据分发到一个对应的所述匹配节点。

本申请的一些实施例中,所述匹配模块440进一步还包括:

合并子模块(图中未示出),用于对各匹配节点上的两两匹配结果进行和并。

本申请实施例公开的对象匹配装置,用于实现本申请实施例一中所述的对象匹配方法的各步骤,装置的各模块的具体实施方式参见相应步骤,此处不再赘述。

通过上述对象匹配方案可以看出,在对象匹配过程中,如果全部商户有p个,设置了q个匹配节点,那么分发过程需要向这q个节点中的每个匹配节点分发(p/q)个商户的商户数据,而现有技术中数据分发过程传输的数据量为(p/q)2,可见,本申请的网络传输资源占用比现有技术低一个数量级。

仍以在对象匹配过程中,全部商户有p个,设置了q个匹配节点举例,如果某一节点上接收到的商户数据对应的匹配索引值是最大的(p/q)个,那么该匹配节点上进行的商户数据的两两匹配次数大概是(p/q/2)*(p/q),现有技术中每个匹配节点都将执行(p/q)*p次两两匹配。可见,本申请公开的对象匹配方法占用的传输资源(如果网络传输接口)更少,各个节点总体匹配运算量更小。

本申请实施例公开的对象匹配装置,通过获取若干目标对象的对象数据构成的对象数据集合,每条所述对象数据包括相应目标对象的对象标识;确定每个所述对象标识与预先获取的匹配索引值的一一对应关系;将所述对象数据集合中的对象数据分组分发至预设的匹配节点;通过所述匹配节点根据所述对象标识、所述对象标识与所述匹配索引值的一一对应关系,对接收到的所述对象数据与所述匹配节点预先缓存的部分对象数据进行匹配运算,以根据匹配运算的结果确定相互匹配的所述目标对象,有效减少了数据传输资源的使用,提升了对象匹配的效率。

相应的,本申请还公开了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例二所述的对象匹配方法。所述电子设备可以为pc机、移动终端、个人数字助理、平板电脑等。

本申请还公开了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例二所述的对象匹配方法的步骤。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上对本申请提供的一种对象匹配方法及装置,匹配系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

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