算法实战 您所在的位置:网站首页 热度退减 算法实战

算法实战

2024-06-02 22:54| 来源: 网络整理| 查看: 265

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

算法选择

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

库表设计

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

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

热度计算及维护 

 

参数解释:

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

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

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

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

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

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

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

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

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

实现效果 DOWN源码

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有