具体算法上可以用高斯衰减,比如72小时内基本无衰减,超过72小时后每过12小时就衰减一点。说到衰减,最近看了采铜的效益半衰期理论感觉颇为受用,大意是:一个人管理自己日常的行为,可以考虑这个行为对自己长期受用程度来衡量,有些事情效益半衰期很长比如读书和健身,就应该多做,另外一些事情效益半衰期很短比如游戏,就可以少做。 扯一扯防松一下,接回来说。 文章要排序,就是看这3个因子,编一个数据公式把:热度分,质量分,时效分串起来计算出一个数值就ok了,想要公式?好像不是很方便哎,再说你那么聪明,自己也能搞出来。 6.按频道权重整合输出 文章有了排序,下一步直接输出么?可是当前我们只有一个全国新闻频道,细分分频道啊,个性化呀那都是以后的事情,极简系统就是千人一面的啦。所以下一步我们要定一下各种频道的内容如何混在一起。这个没有啥技术含量,就是给各个频道定个权重,然后按这个权重计算个比例去混合就好了。技术上可确保,用户看的越多,实际比例就越接近预先定义的权重分布 咦,好像漏了说文章属于什么频道的了。在我们第2步里决定去哪些数据源抓新闻的时候就决定了。每个数据源都对应了一个频道, 那么从这个数据源里抓取的文章也就对应了一个频道。主要的几个频道是:社会、娱乐、体育、汽车、历史、房产、科技、财经、军事、国际。 7.过滤用户已读 终于来到了最后一步,作诗也没这么累啊。 对于全国新闻这种用之不尽、取之不竭、看过就忘、不看两遍的题材来说,给用户最好的阅读体验就是每次都给他没看过的,过滤掉所有已经看过的。 那如何尽可能简洁地实现呢?简洁的本质就是照顾主要场景忽略次要场景。主要场景是用户每几个小时打开一次,打开一次看十来分钟。如果我们每小时爬取的新闻数足够多,衰减做的足够高,是否需要过滤已读都是可以商量的了。实操里,我们还是记录了用户的已读信息,然后一次请求里返回足够多的新闻,比如10个频道每个频道300篇,也就是3000篇,然后再过滤一下,性能上完全可接受,主要场景里也不会出现新闻看完的情况。 总结一下 在设计这个热门新闻列表产品的过程中,主要是几个点: 新闻的热度本质上是标签的热度,标签用百度的词条标签的热度其实就是同时出现在多个网站上的频度文章的排序就是文章热度分,质量分,时效分的综合打分作者:大中,内容类创业公司的产品总监,此前在阿里5年,负责过虾米音乐等产品。平常关注内容、社区和电商类产品。 (责任编辑:admin) |