发现:搜索 / 推荐 / 话题 / 标签 / 统计
Discovery 子域解决「内容怎么被找到」——它和 Content 正交:Content 生产内容,Discovery 把内容分发出去。能力分两层:检索(让用户主动找)与推荐(把内容推给用户),外加话题/标签聚合、作者中心与站点统计。
概念与关系
检索(Search)
文章/沸点真正的检索走 MeiliSearch(见 MeiliSearch 搜索)。Discovery 这一层提供围绕检索的体验能力:ISearchSuggestionService 负责搜索建议、热搜榜、用户搜索历史、记录;SearchHighlightHelper 负责按关键词高亮与片段抽取。这些是对索引结果的「包装」,不自己存数据。
推荐(Recommendation)
推荐流由一组协作组件构成,而非单一接口:
IShortMsgFeedMixer:把多个召回源混排成最终信息流;IShortMsgRecommendationPoolStore/IShortMsgRecommendationPoolBuilder:语义召回池的读写与构建;IShortMsgExposureStore:记录已曝光内容,做曝光去重避免重复刷到;IUserProfileStore:存放用户画像(UserProfileData,含对标签/频道/话题/圈子/作者的权重)。
为什么做成「每日全量重算 + 预热」:CmsKitJobService.DailyProfileRebuildAsync 每天基于最近 90 天的互动日志、点赞、收藏、关注,按时间衰减(文章半衰期 30 天、沸点 14 天)算出每个用户的兴趣权重,再预热到 Redis(WarmupActiveUserProfilesAsync)。推荐召回快照与模板基础池也由后台预热(Warmup*Recommendation*)。这样把昂贵的画像计算从请求链路剥离,线上推荐只需读预热好的画像做轻量混排——请求不被重计算拖慢。
话题(Topic)与标签(Tag)
Topic / Tag 是内容的聚合维度。话题经 ShortMsgTopic 挂到沸点,标签经 ArticleTag 挂到文章,二者都支持热度(如 TopicHotIndexService)。它们是推荐的「信号源」之一——用户画像中的 TopicWeights / TagWeights 正来自此。
作者中心与站点统计
IAuthorCenterService 提供作者维度的计数与趋势图;ISiteStatisticsService 汇总全站概览、趋势与每日统计。二者是内容价值的度量层,不反向影响内容。
AI 资讯(AINews)
IAINewsService 提供 AI 资讯流(按 ArticleCategory.AiNews 归类,独立索引 articles_AiNews),是内容形态的一种扩展。
业务能力
- MeiliSearch 全文检索、搜索建议、热搜、历史、高亮;
- 个性化推荐流(文章/沸点 + 相关推荐),含曝光去重与召回混排;
- 话题与标签聚合及热度;
- 作者中心统计、全站站点统计与趋势;
- AI 资讯流。