这篇文章我要向大家介绍Hacker News网站的文章排名算法工作原理,以及如何在自己的应用里使用这种算法,这个算法非常简单,但却在突出热门文章和遴选新文章上表现的非常优秀。本质上,这段Hacker News采用的排名算法工作原理大概是这个样子:

Score = (P - 1) / (T + 2)^G

其中:
P = 文章获得的票数(-1是去掉文章提交人的票)
T = 从文章提交至今的时间(小时)
G = 比重, 默认选用1。8

  正如你看到的,这个算法很容易实现。在下面的内容里,我们将辉看到这个算法是如何工作的。

  比重(G)和时间(T)对排名的影响

  比重和时间在文章的排名的得分上有重大影响,正常情况如下面所述:1。当T增加时文章时文章得分会下降,这就是说越老的文章分数会越低;2.当比重加大时,老的文章的得分会减的更快。

得分随着时间是如何变化,你可以看到,随着时间的流失,得分骤然下降,例如,24小时前的文章的分数变的非常低,不管它获得了如何多的分数

比重参数是如何影响排名的,你可以看到,比重越大,得分下降的越快

  

Hacker News排名算法工作原理的更多相关文章

  1. 转:Reddit排名算法工作原理

    http://www.aqee.net/how-reddit-ranking-algorithms-work/ 这是一篇继<Hacker News 排名算法工作原理>之后的又一篇关于排名算 ...

  2. Hacker News网站的文章排名算法工作原理

    In this post I'll try to explain how Hacker News ranking algorithm works and how you can reuse it in ...

  3. 词向量( Distributed Representation)工作原理是什么

    原文:http://www.zhihu.com/question/21714667 4 个回答 83赞同反对,不会显示你的姓名 皮果提 刘鑫.莫教授要养猫.Starling Niohuru 等人赞同 ...

  4. Zookeeper笔记(二)Paxos算法与Zookeeper的工作原理

    Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目, 它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管 ...

  5. 7.redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?

    作者:中华石杉 面试题 redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗? 面试官心理分析 在前几年, ...

  6. FIR滤波器工作原理(算法)以及verilog算法实现(包含与IIR的一些对比)

    滤波器在2017年IC前端的笔试中,出现频率十分的高.不论今后是否会涉及,还是要记住一些会比较好.接下来就将从这四个方面来讲解,FIR数字滤波器的工作原理(算法)与verilog实现. ·什么是FIR ...

  7. GC算法介绍及工作原理和优缺点

    一.GC定义与作用 GC就是垃圾回收机制的简写 GC可以找到内存中的垃圾,并释放和回收空间,GC里的垃圾是什么 如下图所示: GC算法是什么:GC是一种机制,垃圾回收器完成具体的工作 工作的内容就是查 ...

  8. 博客SEO-搜索引擎工作原理简介

    资源推荐 Zac出版的<SEO实战密码>是SEO入门的好书,可惜我在当当网买的电子书受DRM版权保护,无法与大家分享. 我在网上找到了此书的  了解搜索引擎  章节,非常详细,且容易理解. ...

  9. PageRank算法--从原理到实现

    本文将介绍PageRank算法的相关内容,具体如下: 1.算法来源 2.算法原理 3.算法证明 4.PR值计算方法 4.1 幂迭代法 4.2 特征值法 4.3 代数法 5.算法实现 5.1 基于迭代法 ...

随机推荐

  1. TCP,你懂的

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的. 基于IP的传输层协议.TCP在IP报文的协议号是6.TCP是一个超级麻烦的协议 ...

  2. 字符串转换为字典的函数eval(字符串)

    首先把多行的字符串,变成一个字符串,用'''和'''扩起来: 然后把这个字符串,赋值给b 这个时候,b根本调不出来,也用不起来: 用eval(b),来格式化字符串变成字典: 然后b就变成了一个字典:

  3. (转)Docker - 创建 Docker overlay network (containers 通信)

    原文链接: http://www.cnblogs.com/AlanWalkOn/p/6101875.html --- 创建基于Key-Value的Docker overlay network. 这样运 ...

  4. Linux MTD系统剖析

    MTD,Memory Technology Device即内存技术设备,在Linux内核中,引入MTD层为NOR FLASH和NAND FLASH设备提供统一接口.MTD将文件系统与底层FLASH存储 ...

  5. Python3 持久化pickle模块

    pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. 1.pickle.dump(obj, file[, protocol]) 序列化对象,并将结果数据流写入到文件对象中.参数 ...

  6. Flask之测试与部署

    5.1 蓝图Blueprint 为什么学习蓝图? 我们学习Flask框架,是从写单个文件,执行hello world开始的.我们在这单个文件中可以定义路由.视图函数.定义模型等等.但这显然存在一个问题 ...

  7. Python 面向对象的进阶

    类的成员 类的成员可以分为三大类 :  字段 , 方法 和  属性 注 :  所有的成员中,只有普通字段的内容保存对象中,  即 : 根据此类创建了对象,在内存就有多少个普通字段.  而其他的成员,则 ...

  8. PHP 环境安装

    官方 http://www.php.net/ http://php.net/manual/zh/install.php http://php.net/manual/zh/index.php 下载也就是 ...

  9. git用法小结(1)--建立远程仓库

    最近一直在学习使用git来管理自己的程序,总是今天东学一点,明天西凑一点,到用的时候,总是有些茫然不知所措. 在博客园里看见一篇老好的文章,教我们做笔记啦,但是做完笔记还是要记得总结哦! 来吧,让我们 ...

  10. HTTP直接请求webService

    在实际开发中,会遇到各种各样的webService接口,并且对方提供的接口并不规范,一些客户端反而就不好使了,如cxf(客户端与动态调用)等,直接用java提供的api比较繁琐,这时直接用http r ...