[发明专利]一种面向精准广告投放的时间聚合查询方法在审
申请号: | 201711338950.5 | 申请日: | 2017-12-14 |
公开(公告)号: | CN108090171A | 公开(公告)日: | 2018-05-29 |
发明(设计)人: | 曹斌;陈望远;侯晨煜;沈瑛 | 申请(专利权)人: | 浙江工业大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06Q30/02 |
代理公司: | 杭州天正专利事务所有限公司 33201 | 代理人: | 王兵;黄美娟 |
地址: | 310014 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 广告投放 时间数据 广告主 索引结构 时长 精准广告 时间区间 用户在线 时间点 查询 构建 聚合 广告时间段 移动互联网 投放 查询请求 广告时段 广告受众 时间段 最大化 筛选 压缩 互联网 灵活 | ||
1.一种面向精准广告投放的时间聚合查询方法,包括如下步骤:
步骤1.建立bitmap索引结构
首先通过输入所有用户的在线区间数据和广告投放时长,给每个用户标记一个用户序号,并得到所有用户区间的开始时刻和结束时刻集合;给每个时刻分配一个bitmap,判断每一个用户的在线时间区间是否包含该时刻,如果该用户的某一在线时间区间能够覆盖该时刻,那么就把该用户的序号位置上的bit值记为true,如果不包含,则记为false;关于bitmap索引结构的详细描述如下:
表1列举了索引结构构建过程中使用的符号,如下所示:
符号 意义 Time 某一用户的在线区间的开始时刻或者结束时刻 Bitmap 某一时刻对应的bitmap i]]> 某一bitmap的第i个bit值 i]]> 第i个用户 i.Ij]]> 第i个用户的第j个在线时间区间
表1
1.1建立所有时刻集合:
所有时刻集合包含了所有用户在线时间区间的I.start和I.end.并且集合中的每个时刻有且只有一个;这样可以避免在给每个时刻构建bitmap索引时,发生重复构建,造成构建索引结构效率底下的情况;
1.2建立用户序号
用户序号主要用来作为bitmap上每个bit的位置;某一时刻的bitmap的下标对应的bit值表示该序号位置上的用户是否存在某个在线时间区间包含这一时刻;存在则记为true,不存在则记为false;
步骤2.压缩bitmap索引结构
上一个步骤中构建好的bitmap索引结构存在如下缺点;(1)存储空间消耗巨大,对50000条用户在线时间记录构建bitmap索引所消耗的存储空间大概是1个G以上;(2)会拖慢接下去的查询算法的时间;查询算法中需要得到其中两个时刻的bitmap做按位与(&)操作的结果resBitMap;并取出resBitMap中bit值为true的bit位置上的用户,加入候选用户集;如果不做压缩操作,则需要对resBitMap的上万个bit做一次遍历,而这样会大大降低查询的时间效率;
基于此,很有必要对步骤1中构建好的bitmap索引结构进行步骤2的压缩bitmap索引结构操作;在压缩过程中,把bitmap中的连续bit值相同的部分作为一个压缩单元,每个压缩单元由bit值和bit值的数量构成;关于压缩bitmap索引结构的详细描述如下表所示:
表2列举了压缩bitmap索引结构过程中使用的符号,如下所示:
符号 意义 Time 某一用户的在线区间的开始时刻或者结束时刻 CompBitmap 某一时刻对应的压缩后的bitmap i]]> CompBitmap中的第i个压缩单元 i.bit]]> 第i个压缩单元的bit值 i.count]]> 第i个压缩单元的bit值的数量
表2
步骤3.查询
表3列举了查询步骤中使用的符号,如下所示:
表3
为了精准确定最佳广告时间段,进行以下四个步骤的操作:
3.1获取候选时间区间和候选用户集合
这一步中,首先对包含所有用户在线时间区间的开始时刻和终止时刻集合allTimeArray按时间顺序,从小到大进行排序Time
那么候选时间区间就是I=[startTime,afterTime],对这两个时刻对应的CompBitMap做压缩与操作,得到与操作的结果resBitMap;最后遍历resBitMap的每一个bit值,找到bit值为true用户,将其加入候选用户集合preUserSet;
3.2过滤候选用户集合中的假用户
当完成第一个步骤后,需要通过计算来判断候选用户集合preUserSet中每个用户是否有区间完全覆盖候选区间I,如果其中的某个用户没有区间能够完全覆盖候选区间I=[startTime,afterTime],那么这个用户就是假用户fakeUser,需要从候选用户集合preUserSet中把它过滤掉;
这一步中的过滤方法是:
首先给候选用户集合preUserSet中的每一个用户添加一个index变量,并把它初始化为0;对每一个用户的区间集合intervals,从索引号为index的区间userInterval开始,判断它是否能覆盖I.startTime,(1)若userInterval不能覆盖I.startTime,index计数加一,并判断userInterval是否整个都在I.afterTime的后面;若是,则该用户是假用户,改变User.index=index,然后结束对该用户的区间集合的遍历;若否,继续对该用户的下一个userInterval进行判断;(2)若userInterval能覆盖I.startTime,继续判断它能否覆盖I.afterTime;若能,则该用户是真用户,改变User.index=index,结束对该用户的区间集合的遍历;若不能,则该用户是假用户;
通过上述过滤方法,就能够过滤掉候选用户集合preUserSet中的假用户;
3.3优化候选时间区间
当完成前两个步骤后,接下去遍历找到sortedTimeArray中startTime后的第二个时刻afterTime2;重复步骤一和步骤二的计算,再次得到[startTime,afterTime2]的候选用户集合folUserSet;
比较folUserSet和preUserSet;如果folUserSet.size=preUserSet.size,那么将I.afterTime1替换成I.afterTime2,然后继续找到sortedTimeArray中startTime后的第三个时刻afterTime3,重复步骤一和步骤二的运算;直到候选用户集合folUserSet.size<preUserSet.size;结束比较步骤,确定优化后的时间区间I;
然后再对优化后的时间区间做调整,对那些候选用户集合preUserSet相同并且存在交集的时间区间I进行区间合并;
由上述步骤可以确定以startTime作为开始时刻的最优区间I和其对应的候选用户集合preUserSet;
3.4最优方案选择
通过第三步得到所有候选方案后,再判断所有方案中的候选用户集合的用户数量是否最大,进一步确定最优的广告投放时间方案;同时也可以根据广告主的需要,确定前k个在线用户数量最大的广告投放时间方案。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江工业大学,未经浙江工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711338950.5/1.html,转载请声明来源钻瓜专利网。