首页> 中国专利> 具有高度可扩展性的广告匹配方法和系统

具有高度可扩展性的广告匹配方法和系统

摘要

本发明公开了具有高度可扩展性的广告匹配方法和系统,方法:根据XML配置文件构造哈希树结构,以及该哈希树结构的不同层次的子节点;根据数据库中存储的广告的属性,组织为被访问的实体对象,并根据实体对象存入到哈希树结构中的对应的子节点或创建的子节点中,并进行网络缓存;投放广告时,先判断客户端所要获取的广告的投放条件,根据该投放条件查找哈希树结构中的对应的子节点中存储的至少一个实体对象;再根据查找到的至少一个实体对象和预设的过滤条件进行过滤处理,得出可投放的广告。本发明解决了多层次的投放优先级逻辑,只能固化在程序代码中,一旦要调整优先级,就涉及到代码的修改和系统升级等问题。

著录项

  • 公开/公告号CN104021176A

    专利类型发明专利

  • 公开/公告日2014-09-03

    原文格式PDF

  • 申请/专利权人 合一信息技术(北京)有限公司;

    申请/专利号CN201410241160.5

  • 申请日2014-06-03

  • 分类号G06F17/30(20060101);G06Q30/02(20120101);

  • 代理机构

  • 代理人

  • 地址 100080 北京市海淀区海淀大街8号中钢国际广场A座5层D区

  • 入库时间 2023-12-17 01:29:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-05-17

    未缴年费专利权终止 IPC(主分类):G06F17/30 专利号:ZL2014102411605 申请日:20140603 授权公告日:20160817

    专利权的终止

  • 2020-04-03

    专利权的转移 IPC(主分类):G06F17/30 登记生效日:20200317 变更前: 变更后: 申请日:20140603

    专利申请权、专利权的转移

  • 2020-04-03

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F17/30 变更前: 变更后: 申请日:20140603

    专利权人的姓名或者名称、地址的变更

  • 2016-08-17

    授权

    授权

  • 2014-10-08

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20140603

    实质审查的生效

  • 2014-09-03

    公开

    公开

查看全部

说明书

技术领域

本申请涉及广告匹配领域,具体地说,涉及一种具有高度可扩展性的广告匹配方法和系统。 

背景技术

在视频网站上进行广告投放时,通常会有多种不同广告定向投放(以下简称定投)条件:比如地区定投、按视频所属频道的定投、按关键字定投、按视频组(多个视频或剧集组合而成的一组视频)定投、剧场轮播(指定用户观看特定剧场中的视频时,不同轮次投放某些指定的广告),不同定向条件还可能进行组合形成一种新的组合定投。 

通常,不同定投方式是有优先级差别的,比如常见的优先级从高到低排列有:剧场类定向>视频组定向>用户定向>关键字定向>频道定向,同样的定向条件下还可能有更加详细的优先级要求比如同样是做视频组定向的广告,有频次控制要求(指定一段时间内每个用户最多可以看到广告的次数)的广告的优先级要高于不要求频次控制的广告,这样就形成了多层次的投放优先级。 

常见的广告系统往往是仅仅做单层次的优先级配置,在广告投放的时候,按照事先设定的不同定向方式的优先级从高到低查找广告。这种方式的缺陷显而易见: 

(1)多层次的投放优先级逻辑,只能固化在程序代码中,一旦要调整优先级,就涉及到代码的修改和系统升级;

(2)这种仅根据定投条件来确定优先级的方式无法应对特殊的优先级要求,比如系统要求通常情况下视频组定向的广告优先级强于频道定向,但是有一个特殊广告由于投放周期即将结束,但由于广告投放量严重不足,现在需要在保持其它广告仍然满足原有的视频组定向优先于频道定向的前提下,单独提高这一个频道定向广告的优先级,使之高于所有视频组定向的广告,如果遇到这种情况,即使使用前面所述方法也是无法实现的。

综上所述,如何提供一种具有可扩展性的广告匹配方式,便成为亟待解决的技术问题。 

发明内容

有鉴于此,本申请所要解决的技术问题是提供了一种具有高度可扩展性的广告匹配方法和系统,以解决多层次的投放优先级逻辑,只能固化在程序代码中,一旦要调整优先级,就涉及到代码的修改和系统升级等问题。 

为了解决上述技术问题,本申请公开了一种具有高度可扩展性的广告匹配方法,其特征在于,包括: 

根据XML配置文件构造哈希树结构,以及该哈希树结构的不同层次的子节点;

根据数据库中存储的广告的属性,组织为被访问的实体对象,并根据所述实体对象存入到所述哈希树结构中的对应的子节点或创建的子节点中,并进行网络缓存;

投放所述广告时,先判断客户端所要获取的广告的投放条件,根据该投放条件查找所述哈希树结构中的对应的子节点中存储的至少一个所述实体对象;

再根据查找到的至少一个所述实体对象和预设的过滤条件进行过滤处理,得出可投放的所述广告。

优选地,其中,根据XML配置文件构造哈希树结构,以及该哈希树结构的不同层次的子节点,进一步还包括:当所述XML配置文件进行修改后,对应的所述哈希树结构,以及该哈希树结构的不同层次的子节点也会在缓存装载的时候进行对应的修改。 

优选地,其中,所述预设的过滤条件包括:广告的预设投放量已经耗尽、该广告时长超出当前视频正片可投最大时长和当前用户观看次数已达系统要求的单用户观看次数上限。 

优选地,其中,根据数据库中存储的广告的属性,组织为被访问的实体对象,并根据所述实体对象存入到所述哈希树结构中的对应的子节点或创建的子节点中,并进行网络缓存;进一步为:根据数据库中存储的广告的属性,组织为被访问的实体对象,并根据所述实体对象存入到所述哈希树结构中的对应的子节点中,如未找到对应的子节点则创建的子节点并存入其中,再进行网络缓存。 

优选地,其中,在所述哈希树结构的叶子节点位置设置至少4个节点,分别表示广告所定向的视频组、用户身份信息、关键字和频道。 

为了解决上述技术问题,本申请还公开了一种具有高度可扩展性的广告匹配系统,该系统与数据库相耦接,其特征在于,该系统包括:广告缓存模块和广告投放模块, 

所述广告缓存模块,分别与所述数据库和广告投放模块相耦接,用于根据XML配置文件构造哈希树结构,以及该哈希树结构的不同层次的子节点;然后根据所述数据库中存储的广告的属性,组织为被访问的实体对象,并根据所述实体对象存入到所述哈希树结构中的对应的子节点或创建的子节点中,并进行网络缓存;

所述广告投放模块,分别与所述广告缓存模块和客户端相耦接,用于投放所述广告时,先判断该广告的投放条件,根据该投放条件查找所述广告缓存模块上的哈希树结构中的对应的子节点中存储的至少一个所述实体对象;再根据查找到的至少一个所述实体对象和预设的过滤条件进行过滤处理,得出可投放的所述广告反馈给所述客户端。

优选地,其中,所述广告缓存模块,进一步还用于:当所述XML配置文件进行修改后,对应的所述哈希树结构,以及该哈希树结构的不同层次的子节点也会在缓存装载的时候进行对应的修改。 

优选地,其中,所述预设的过滤条件包括:广告的预设投放量已经耗尽、该广告时长超出当前视频正片可投最大时长和当前用户观看次数已达系统要求的单用户观看次数上限。 

优选地,其中,所述广告缓存模块,进一步还用于:根据数据库中存储的广告的属性,组织为被访问的实体对象,并根据所述实体对象存入到所述哈希树结构中的对应的子节点中,如未找到对应的子节点则创建的子节点并存入其中,再进行网络缓存。 

优选地,其中,在所述哈希树结构的叶子节点位置设置至少4个节点,分别表示广告所定向的视频组、用户身份信息、关键字和频道。 

与现有技术相比,本申请所述的一种具有高度可扩展性的广告匹配方法和系统,达到了如下效果: 

1)本申请能够提供一种具有可扩展性的广告匹配方式,以解决多层次的投放优先级逻辑,只能固化在程序代码中,一旦要调整优先级,就涉及到代码的修改和系统升级。

2)本申请还能够解决一个特殊广告由于投放周期即将结束,例如:但由于广告投放量严重不足,如何解决在保持其它广告仍然满足原有广告优先级的大前提下,自由调整某个特定广告的优先级的问题。 

当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。 

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中: 

图1是本申请实施例一中所述的具有高度可扩展性的广告匹配方法的流程图。

图2和3是采用实施例一方法具体应用实施例二的参考流程图。 

图4是本申请实施例三中所述的具有高度可扩展性的广告匹配系统结构框图。 

具体实施方式

如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。 

实施例一 

如图1所示,为本申请实施例一所述的具有高度可扩展性的广告匹配方法流程,该方法包括:

步骤101,根据XML(扩展标记语言)配置文件构造哈希树结构,以及该哈希树结构的不同层次的子节点;

步骤102,根据数据库中存储的广告的属性,组织为被访问的实体对象,并根据所述实体对象存入到所述哈希树结构中的对应的子节点或创建的子节点中,并进行网络缓存(缓存哈希树结构(HashTree)和adIdeaMap对象(也可以称为广告实体对象表));

步骤103,投放所述广告时,先判断客户端所要获取的广告的投放条件,根据该投放条件查找所述哈希树结构中的对应的子节点中存储的至少一个所述实体对象;

步骤104,再根据查找到的至少一个所述实体对象和预设的过滤条件进行过滤处理,得出可投放的所述广告。

其中,步骤101进一步还包括:当所述XML配置文件进行修改后,对应的所述哈希树结构,以及该哈希树结构的不同层次的子节点也会在缓存装载的时候进行对应的修改。

其中,步骤104,所述预设的过滤条件为:广告的预设投放量已经耗尽、该广告时长超出当前视频正片可投最大时长和当前用户观看次数已达系统要求的单用户观看次数上限等。 

其中,步骤102,所述数据库中存储的广告的属性,包括:广告的URL地址(即广告素材地址),广告相关的监测地址(广告曝光监测URL地址、广告被点击监测URL地址)等内容,这里不作具体限定。 

另外,步骤102,根据数据库中存储的广告的属性,组织为被访问的实体对象,并根据所述实体对象存入到所述哈希树结构中的对应的子节点或创建的子节点中,并进行网络缓存;进一步为:根据数据库中存储的广告的属性,组织为被访问的实体对象,并根据所述实体对象存入到所述哈希树结构中的对应的子节点中,如未找到对应的子节点则创建的子节点并存入其中,再进行网络缓存。 

另外,步骤103具体为:通过分布式缓存工具将上一步(步骤102)中所述缓存中的所述哈希树结构(HashTree)和adIdeaMap(广告实体对象表)数据拉取到前端投放服务器的内存中,然后前端投放服务可以根据当前用户请求参数在HashTree中查找广告的素材ID,然后根据素材ID到adIdeaMap中找到该素材ID对应的实体对象(也可以称为ADIdea对象),并根据该对象构造出广告的代码返回(可以使返回给广告请求方(即请求客户端))。 

另外,步骤101中,构造的哈希树结构(HashTree)的不同层次的子节点,一般设置为5层的子节点,其中: 

第一层有2个子节点(也可以称之为Tree节点),分别对应于常规定向方式(common)的HashTree树和剧场中按轮次循环播放(theater_lunbo)的HashTree。

第二层: 

对于第一个Tree节点,其第一层Node节点表示当前层次存放广告定向的平台类型(device_type);

第三层:

表示广告的优先级,该属性是以数字表示的,是按从小到大有序排列的节点序列;

第四层;

表示广告定向的地区(area);

第五层:

设置4个节点(叶子节点)分别表示广告所定向的视频组、用户ID(ID身份信息也就是广告素材的ID)、关键字和频道。当然这里不限于4个节点。

其中,哈希树结构(HashTree)包含3个属性:name、KMap和KNode,其中: 

name:它对应于XML配置文件中的Tree节点的名称(也就是第一层),用来表示哈希树结构所对应的类型。

KMap:是一个多层的递归Map结构(也就是前述的第二至五层),它的Key-Value对中的Value可以是一个新的Map(对应的同层级的KNode为非叶子节点时),也可以是一个List(对应的同层级的KNode为叶子节点时),它就是HashTree中最终用于存放广告的投放条件的容器; 

KNode:用于存放HashTree的结构描述文件中的信息,KNode的name属性和amode属性分别对应于XML配置文件中的Node节点的同名属性,KNode还包含了一个列表,列表中每个元素也都是KNode类型节点,也就是说KNode是一个递归的数据结构。

如图2和3所示,这里采用本发明所述方法列举以具体应用实施例二(也可以称为实施例)进行说明: 

步骤一,如图2所示,假设有某广告A,其ID为81(ID也就是广告素材的ID),产品类型为常规投放,投放条件为:投放在PC端,优先级别为2,定向地区为“广东省”,定投关键字“搞笑”。

步骤二,根据其产品类型为常规投放,可知它与htree.xml配置文件中的Ad根节点下name属性值为”common”的Tree节点(第一层)对应,它应该存入到类型为common的HashTree的KMap中同时进行缓存;(假设此广告在装入类型为“common”的HashTree之前,HashTree中的KMap结构(如图2所示))。 

步骤三,投放所述广告时,对HashTree中的KNode节点进行如下遍历过程(如图2所示): 

访问KNode的第一层key为device_type,则根据广告A定向的设备类型为PC,可以定位到KMap的第一级对应的Key(即广告素材ID)为P(P表示PC端,M表示Mobile端);

访问KNode下一层子节点,key为priority,则根据广告A的优先级为2,可以定位到KMap的第二级对应的Key为2;

访问KNode再下一层子节点,key为area,则根据广告A的定向地区为广东省,可以定位到KMap的第三级对应的key为a42;

再访问KNode下一层子节点,key有4个:videogroup、userid、keyword、channel,则根据广告A的定投条件为关键字“搞笑”,可知与之匹配的key为”keyword”,于是可以KMap的第三级对应的key为”k搞笑”,该节点在KMap的路径”P/2/a42”下并不存在,所以要新建一个K-V节点,节点的K为“k搞笑”,V为一个新的List,List中添加广告A的ID:81;

如图3所示,假设某次广告请求中,包含如下信息:本次请求来自于PC端,请求来源地区为:广东省,关键字为:搞笑,请求来自于节目《爸爸去哪儿》(节目ID为500)的播放页,该视频的上传者ID为:120,那么我们将针对图第3附图中的结构进行如下查找过程:

首先,定位请求平台:PC端,于是可以定位到KMap的第一层的节点P;

其次,按照优先级从高到低依次访问KMap第二层的1和2两个节点;

第三,定位请求地区,发现只有a42这个节点可以匹配,于是定位到KMap的第三层节点:P/2/a42;

第四,定位第四层的videogroup、userid、keyword、channel,发现用户ID和关键字所对应的2个节点“u120”和“k搞笑”都可以匹配上,于是可以找到2个可投广告列表,其中包括广告ID:38、56、81等;

最后,过滤掉这2个列表中的一些不可投放的广告ID,然后得到可投的ID列表,其中过滤操作包括:广告的预设投放量已经耗尽、该广告时长超出当前视频正片可投最大时长、当前用户观看次数已达系统要求的单用户观看次数上限等等。

实施例三

如图4所示,为本申请实施例三所述的具有高度可扩展性的广告匹配系统框图,该系统与数据库(存放广告的数据库,其可以是客户端,也可以是服务器这里不做限定)相耦接,该系统包括:广告缓存模块401和广告投放模块402,其中,

所述广告缓存模块401,分别与所述数据库和广告投放模块402相耦接,用于根据XML配置文件构造哈希树结构,以及该哈希树结构的不同层次的子节点;然后根据所述数据库中存储的广告的属性,组织为被访问的实体对象,并根据所述实体对象存入到所述哈希树结构中的对应的子节点或创建的子节点中,并进行网络缓存(缓存哈希树结构(HashTree)和adIdeaMap对象(也可以称为广告实体对象表));

所述广告投放模块402,分别与所述广告缓存模块401和客户端相耦接,用于投放所述广告时,先判断该广告的投放条件,根据该投放条件查找所述广告缓存模块401上的哈希树结构中的对应的子节点中存储的至少一个所述实体对象;再根据查找到的至少一个所述实体对象和预设的过滤条件进行过滤处理,得出可投放的所述广告反馈给所述客户端。

其中,所述广告缓存模块401进一步还用于:当所述XML配置文件进行修改后,对应的所述哈希树结构,以及该哈希树结构的不同层次的子节点也会在缓存装载的时候自动更新。

其中,所述广告投放模块402中所述预设的过滤条件为:广告的预设投放量已经耗尽、该广告时长超出当前视频正片可投最大时长、当前用户观看次数已达系统要求的单用户观看次数上限等。当然这里过滤条件还可以包括其他方式,这里不作具体限定。

其中,所述数据库中存储的广告的属性,包括:广告的URL地址(即广告素材地址),广告相关的监测地址(广告曝光监测URL地址、广告被点击监测URL地址)等内容,这里不作具体限定。 

另外,所述广告缓存模块401中,根据数据库中存储的广告的属性,组织为被访问的实体对象,并根据所述实体对象存入到所述哈希树结构中的对应的子节点或创建的子节点中,并进行网络缓存;进一步为:根据数据库中存储的广告的属性,组织为被访问的实体对象,并根据所述实体对象存入到所述哈希树结构中的对应的子节点中,如未找到对应的子节点则创建的子节点并存入其中,再进行网络缓存。 

另外,所述广告投放模块402具体为:通过分布式缓存工具将广告缓存模块401中所述缓存的所述哈希树结构(HashTree)和adIdeaMap(广告实体对象表)数据拉取出来(可以拉取到本地计算机上),然后根据投放条件在HashTree中查找广告的素材ID,然后根据素材ID到adIdeaMap中找到该素材ID对应的实体对象(也可以称为ADIdea对象),并根据该对象构造出广告的代码返回(可以使返回给广告请求方(即请求客户端))。 

另外,所述广告缓存模块401中,构造的哈希树结构(HashTree)的不同层次的子节点,一般设置为5层的子节点,其中: 

第一层有2个子节点(也可以称之为Tree节点),分别对应于常规定向方式(common)的HashTree树和剧场中按轮次循环播放(theater_lunbo)的HashTree。

第二层: 

对于第一个Tree节点,其第一层Node节点表示当前层次存放广告定向的平台类型(device_type);

第三层:

表示广告的优先级,该属性是以数字表示的,是按从小到大有序排列的节点序列;

第四层;

表示广告定向的地区(area);

第五层:

设置4个节点(叶子节点)分别表示广告所定向的视频组、用户ID(ID也就是广告素材的ID)、关键字、频道。

其中,哈希树结构(HashTree)包含3个属性:name、KMap和KNode,其中: 

name:它对应于XML配置文件中的Tree节点的名称(也就是第一层),用来表示哈希树结构所对应的类型。

KMap:是一个多层的递归Map结构(也就是前述的第二至五层),它的Key-Value对中的Value可以是一个新的Map(对应的同层级的KNode为非叶子节点时),也可以是一个List(对应的同层级的KNode为叶子节点时),它就是HashTree中最终用于存放广告的投放条件的容器; 

KNode:用于存放HashTree的结构描述文件中的信息,KNode的name属性和amode属性分别对应于XML配置文件中的Node节点的同名属性,KNode还包含了一个列表,列表中每个元素也都是KNode类型节点,也就是说KNode是一个递归的数据结构。

由于方法部分已经对本申请实施例进行了详细描述,这里对实施例中涉及的方法与系统对应部分的展开描述省略,不再赘述。对于系统中具体内容的描述可参考所述方法实施例的内容,这里不再具体限定。 

与现有技术相比,本申请所述的一种具有高度可扩展性的广告匹配方法和系统,达到了如下效果: 

1)本申请能够提供一种具有可扩展性的广告匹配方式,以解决多层次的投放优先级逻辑,只能固化在程序代码中,一旦要调整优先级,就涉及到代码的修改和系统升级。

2)本申请还能够解决一个特殊广告由于投放周期即将结束,例如:但由于广告投放量严重不足,如何解决在保持其它广告仍然满足原有广告优先级的大前提下,自由调整某个特定广告的优先级的问题。 

本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。 

上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。 

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号