首页 > 代码库 > Raddit算法Java实现
Raddit算法Java实现
import java.util.Date; public class HotArticleRank { /************ * 输入发贴时间,返回发贴时间距离1970.1.1的秒数 * @param Date dateTimes * @return */ private static long epoch_seconds(Date pubtimes) { return pubtimes.getTime() / 1000 - 1134028003; } /****** * 输入顶,踩,返回差值 * @param ups * @param downs * @return */ private static long score(long ups, long downs) { return ups - downs; } /****** * 计算热度值,输入顶,踩和发贴时间,返回热度值 * @param ups 文章顶的数量 * @param downs 文章踩的数量 * @param pubtimes 文章发布时间 * @return */ public static double getHotVal(long ups, long downs, Date pubtimes) { double hotrank = 0; long seconds = 0; long scorecount = 0; double order = 0; long signcount = 0; scorecount = score(ups, downs); seconds = epoch_seconds(pubtimes); //计算贴子的受肯定(否定)的程度,如果对某个贴子的评价,越是一边倒, //order就越大,但会趋于平缓。如果顶等于踩,则为0 order = Math.log10(Math.max(Math.abs(scorecount), 1)); signcount = (long) Math.signum(scorecount); //seconds越大,得分越高,即新帖子的得分会高于老帖子。 //它起到自动将老帖子的排名往下拉的作用。 hotrank = order + (signcount * seconds) / 45000; return hotrank; } }
本文出自 “宁静致远” 博客,请务必保留此出处http://woodpecker.blog.51cto.com/2349932/1864339
Raddit算法Java实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。