热搜热点生成话题并上线推热门优化后的流程如图所示
热点话题自动排序
热点话题根据实时指标变化生成热门话题榜,主要包括话题实时数据产生、自动排序、热门话题的展示3个部分。
话题实时数据指标主要关注的是话题广场uvctr、话题页访问的pv/uv、点击发布按钮的uv转化率等。数据流向从客户端埋点上报到北极星,flink任务消费北极星发布的kafka流,将数据洗出来,写入clickhouse。
自动创建的热点话题在后台草稿态话题进行管理,草稿态话题经人工审核通过确认上线后进入备选话题池,参与自动排序。定时任务对广场话题进行自动排序调整,拉取话题实时数据作为排序分计算。仅对首页热门话题进行自动排序,每轮从备选话题中选取一个话题,顶到实验位测试效果(上线一定时间内不参与自动排序,即保持在实验位),掉出热门top榜的话题淘汰,不再参与自动排序,实现了热点话题从草稿态冲上热门话题的过程。后台展示了热门话题、备选话题的实时数据,支持人工调整广场话题排序。
用户进入话题广场,拉取热门话题榜,自动排序每10分钟执行一次。
话题的自动收录
那么有了话题以后如何召回内容呢。
首先我们需要一个包含全部内容的召回池,并且尽可能全的包含所有需要用来召回的字段,并且存储介质的选型上要尽可能保证可以快速实时的召回内容。
最终我们选择了基于动态id作为doc_id 的 ES 来做召回池。
动态的子类型基本包含站内所有的稿件,文章,图文,转发使召回池的内容足够全,而es可以在搜索存量数据时提供比较好的性能。
自定义规则的自动收录