• 算法实战-Hacker News内容热度推荐算法


            运营了一个模版下载网站,之前根据查看详情、下载、收藏等交互维护了模版的热度,但是发现并不是很“人性化”,因为点击的越多的模版永远霸榜了,一些其他的优质模版几乎很难再出现在首页,所以打算更换算法,可以更加人性化的展示真正的优质模版~

    算法选择

            基于Hacker News的内容热度推荐算法

    库表设计

    模版表原来维护的hot字段,现在增加hot_score维护热度分值

    增加一个维护一周内模版交互的记录表

    热度计算及维护 

     

    参数解释:

    Hinit : 初始热度值,这里我们直接用的原模版的hot热度

    Hinteract:互动热度值,我们取一周内交互的热度和

    Htime:时间衰减因子,这里取7*24。

    G:重力因子,它决定了热度随时间下降的速度,前期平台人员较少时,相对应得发的资源也会比较少,这时可以把G调小一点,减缓时间推移对热度下降的影响,后期平台人员增多时,相对应的资源也会增加,这时可以把G调大一点,加速时间推移对热度下降的影响。比如:1.2-1.8

    Hweight: 加减权重,初始值可以为0,在某些偶然或者极端情况下需要人为干预的时候,可以动态调整其值,使其能够及时的控制其热度。

    1. /**
    2. * @param hInit 初始热度值,可以以用户活跃度来衡量,比如以积分的形式
    3. * @param hInteract 互动热度值,根据用户行为数据来衡量
    4. * @param hTime 时间衰减因子,也就是从提交到现在的时间(以小时计),加2是为了防止最新发表的会导致分母过小 ,这个值可调,在前期平台人数较少时调整大一些,在后期人数增长起来后,可以调整的小一些,比如,因为用户对平台资源有一个消化时间。
    5. * @param g 重力因子,它决定了热度随时间下降的速度,前期平台人员较少时,相对应得发的资源也会比较少,这时可以把G调小一点,减缓时间推移对热度下降的影响,后期平台人员增多时,相对应的资源也会增加,这时可以把G调大一点,加速时间推移对热度下降的影响。比如:1.2-1.8
    6. * @param hWeigh 加减权重,初始值可以为0,在某些偶然或者极端情况下需要人为干预的时候,可以动态调整其值,使其能够及时的控制其热度。
    7. * @Author l'amour solitaire
    8. * @Description Hacker News的内容热度推荐算法
    9. * @Date 2022/6/28 下午10:48
    10. **/
    11. public static Double resourceHot(Integer hInit, Integer hInteract, Integer hTime, Double g, Integer hWeigh) {
    12. return (hInit + hInteract) / Math.pow((hTime + 2), g) + hWeigh;
    13. }

    理想的方式是有交互的时候更新当前模版的热度,同时定时任务执行全局重新计算,但是这个项目我们不打算运用定时任务,所以最终我的的方式是有交互的时候更新当前模版的热度,同时加上热点的排序,如下

    lastSql.append(" ORDER BY hot_score DESC,hot DESC");

    也就是基于hot和hot_score进行排序,通过用户操作来更新实时数据,未更新的以hot来排序,同时删除7天前的热点数据,省略了定时任务

  • 相关阅读:
    六、串口通信
    【自学前端】HTML篇已完结(附14节视频)
    SAP入门到放弃系列之QM检验计划-Part1
    Linux开发工具之文本编译器vim
    代码随想录刷题| 01背包理论基础 LeetCode 416. 分割等和子集
    条件渲染(v-if、v-show)、列表渲染(v-for)、列表中key的原理和作用、列表过滤(filter)、列表排序(sort)
    html实训大作业《简单的学生网页作业源码 基于html css javascript红色文化传媒网站(20页)》
    protobuf 详解
    缓存穿透、缓存雪崩、缓存击穿问题的解决思路
    2020年12月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 原文地址:https://blog.csdn.net/kuangni5808/article/details/125516900