首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现类似Digg的算法?

如何实现类似Digg的算法?
EN

Stack Overflow用户
提问于 2008-09-16 12:59:00
回答 5查看 2.5K关注 0票数 10

如何使用类似于堆栈溢出/digg/reddit的推荐系统来实现网站?也就是说,用户提交的内容和网站需要计算某种类型的“性感”,根据项目的流行程度。流动情况如下:

  • 用户提交内容
  • 其他用户对内容进行查看和投票(假设90%的用户只查看内容,10%的用户对内容进行向上或向下的投票)
  • 新内容不断提交

如何实现算法来计算提交项目的“热度”,最好是实时计算?有什么最佳实践或设计模式吗?

我假定该算法考虑到了以下几点:

  • 当一个项目提交时
  • 每投一票
  • 当该项目被查看时

例如,一个不断获得少量选票的项目会在某种程度上一直保持“热门”,而当第一次提交时收到大量选票的项目会跳到“热门”-list的顶端,但随着投票的停止,它会下降。

(我使用的是MySQL+PHP,但我对一般的设计模式感兴趣)。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-09-16 13:05:05

您可以使用类似于Reddit算法的东西--它的基本原理是根据发布的时间和得分计算帖子的值。Reddit算法的优点是,当post的分数发生变化时,您只需要重新计算这个值。当你想要显示你的头版时,你只需根据这个分数从你的数据库中得到前n个帖子。随着时间的推移,分数自然会增加,所以你不需要做任何特殊的处理,从头版删除项目。

票数 6
EN

Stack Overflow用户

发布于 2008-09-19 17:04:36

在我自己的站点上,我从一个单调递增的系列中为每个条目分配一个唯一的整数(更新的帖子得到更高的数字)。每次向上投票都会增加一个数字,而每一个否决投票都会减少一个(当然,您可以调整这些值)。然后,只需按数字排序,以显示“最热门”条目。

票数 4
EN

Stack Overflow用户

发布于 2008-09-19 17:25:27

我开发了一个名为网站收藏的社交书签站点,并使用了一个复杂的algoritm:

  1. 首先,选票是有限的,用户只有有限的票数,而票数取决于用户的点数。要想获得积分,每个用户都必须添加获得正面选票的链接。
  2. 然后,用户可以为每个链接投票-3,-2,-1,1,2或3票。由于投票是有限的,每个用户只会在他们喜欢的链接上投票。
  3. 为了防止用户只在同一用户的链接上投票,创建支持组,每次投票添加到链接中的点数取决于总票数和投票到投票链接所有者的链接之间的拉焦值。如果您总是在相同的用户链接上投票,您的选票将失去价值。
  4. 选票随着时间的推移而失去价值。
  5. 来自没有积分的用户(新用户)的新链接将有一个起始0点。来自老用户的新链接将根据他们的点而定。范围从+3到-infinite。来自消极点的用户的链接将有负面的起点,来自积极点的用户的链接将有积极的起点。

当他们的链接被投票时,用户会得到随机点。积极的投票给出肯定的分数,否定的投票给否定的分数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档