码迷,mamicode.com
首页 > 编程语言 > 详细

Raddit算法Java实现

时间:2016-10-22 01:10:05      阅读:266      评论:0      收藏:0      [点我收藏+]

标签: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实现

标签:raddit算法java实现

原文地址:http://woodpecker.blog.51cto.com/2349932/1864339

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!