请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

11-9作业回答

作业1:推广计划和推广的状态怎么修改呢 ?应该由谁去做修改呢 ?
答: 推广计划有startDate和endDate, 所以感觉需要做一个定时器,每天某个时间检测endDate是否已经到期,如果到了就修改状态。同样,如果在endDate之前的想置为无效的话,感觉需要一个专门的管理员系统去管理,可以人为修改推广单元,推广计划,以及广告创意等信息。

作业2:为什么匹配过程没有校验推广计划的开始和结束时间呢 ?
答: 这个想让我们去扩展吧,因为校验和过滤其实并不难,我们根据过滤掉任意我们想过滤的条件

作业3:如果媒体方的请求需要对省进行匹配,即不传递城市信息,地域 Feature 的匹配过程应该怎么去实现 ?
答: 在过滤的时候,修改UnitDistrictIndex.match(), 从province-city的匹配方式改为province匹配,代码如下


    public boolean match(Long unitId, List<DistrictFeature.ProvinceAndCity> districts) {
        if (unitId == null) {
            return false;
        }
        if (unitDistrictMap.containsKey(unitId) && CollectionUtils.isNotEmpty(unitDistrictMap.get(unitId))) {
            // province-city
            Set<String> unitDistricts = unitDistrictMap.get(unitId);
            List<String> provinceList = Collections.emptyList();
            // 填充provinceList,只包含province
            unitDistricts.forEach(u -> provinceList.add(
                    Splitter.on("-").omitEmptyStrings().trimResults().splitToList(u).get(0)
            ));
            List<String> targetProvinces = districts.stream().map(
                    DistrictFeature.ProvinceAndCity::getProvince
            ).collect(Collectors.toList());
            
            return CollectionUtils.isSubCollection(targetProvinces, provinceList);
            
        }
        return false;
    }

作业4:当前的实现,所有广告位(AdSlot)的 Feature 是一样的,你能把它扩展到每个广告位有不同的 Feature 吗?

答: 没太读懂题目…

作业5:你还能对当前的广告检索服务做哪些扩展 ?

答: 可以引入缓存,将检索结果存入缓存中, 媒体方的请求作为key;另外就是可以把binlog的监听转移到新增的ad-binlog-kafka模块,让ad-search进行监听相应的topic,然后构建增量索引。

正在回答

1回答

同学你好:

    非常感谢你的回答,给出的答案或解决方案非常好。下面我针对你的答案做出一些解释。

    作业1:推广计划和推广的状态怎么修改呢 ?应该由谁去做修改呢 ?

    这个功能是由计费系统来完成的。广告在投放的过程中,需要计费系统来负责扣费,当扣到没钱的时候,推广单元或推广计划就需要下线了。此时,由计费系统修改数据记录的状态(直接修改 MySQL 中的记录,因为 Binlog 会持续监听)。同时,时间过期的修改也是由计费系统来负责的,可以采用简单的定时线程去处理(与你提出的答案是类似的)。


    作业2:为什么匹配过程没有校验推广计划的开始和结束时间呢 ?    

    因为开始和结束时间其实是标志推广计划或推广单元是否有效的,这个是由计费系统来完成的。


    作业3:如果媒体方的请求需要对省进行匹配,即不传递城市信息,地域 Feature 的匹配过程应该怎么去实现 ?

    对的,你给出的实现方式是没问题的。直接验证省是否相等就可以了。


    作业4:当前的实现,所有广告位(AdSlot)的 Feature 是一样的,你能把它扩展到每个广告位有不同的 Feature 吗?

    Feature 就是广告位需要比对的条件,目前的设计是广告位都有媒体、地域等等信息。我的意思是将不同类型的广告位设置不同的匹配条件,比较简单的做法是广告位也要加上一个 FeatureType 标记它有哪些 Feature(对应的信息在代码中管理)。


    作业5:你还能对当前的广告检索服务做哪些扩展 ?

    你给出的答案非常好。另外,也可以考虑将索引对象存储到 Redis 中。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!    

1 回复 有任何疑惑可以回复我~
  • 提问者 mapper #1
    ok,懂了  解释得非常清楚!
    回复 有任何疑惑可以回复我~ 2019-02-26 15:27:19
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信