如何实现网站有一项建议,系统类似于计算器/推荐/签交易?即, 用户提交的内容和网站需要计算出某种"辣"如何根据流行的项目。该流程如下:

  • 用户提交的内容
  • 其他用户查看和表决的内容(假定90%的用户只景内容和10%的选民积极向上或向下的内容)
  • 新内容是连续的提交

我怎么实现了一种算法,计算出"热"的一种提交项目,最好是在现实的时间?是否有任何最佳做法或设计的模式?

我会假设算法考虑以下因素:

  • 当一个项目是提交
  • 当每个投票铸
  • 当该项目被视

E.g。一个项目,获取一定的涓流的选民将留有些"热"不断,而一个项目,收到了突发的选民时,它首先提交会跳到顶部的"辣"名单,但然后掉下来作为选民停止进来。

(I am使用MySQL+PHP,但我感兴趣的一般设计图案)。

有帮助吗?

解决方案

你可以使用类似的东西 签交易的算法 -的基本原则,这是你计算的价值为根据的时间被张贴和分。什么是整齐约的签交易的算法是,你只需要重新计算价值时,这是你的一个员额的变化。当你想显示你的前面,你只是获得顶n员额从数据库的基础上,分。随着时间的推移分数自然会增加,所以你不需要做任何特殊处理,以去除的项目从前页。

其他提示

在我自己的网站,我给每个条目的一个独特的整数单调增加的系列(新职位获得更高的数字)。每个最多票数增加一个,每个下投降低它由一个(你可以调整这些价值观,当然)。然后,简单地排序的数量显示最热'项目。

我开发了一个书签社会网站, 网站的个最喜欢的是, 和使用的一个复杂的算法:

  1. 第一,选民是有限的,一个用户只有数量有限的选民和投票的数量取决于用户点。赚点每个用户都必须添加链接,以获得积极投票。
  2. 然后,用户可以投票-3,-2,-1,1,2或3选民对每个链接。作为选民为限,每个用户将投票只在那些链接,他们喜欢。
  3. 防止用户投票的唯一的联系对于相同的用户,创建支持团体,每个投票增加了链接取决于一个racio之间的总的选民和选民的联系的所有者的投票的链接。如果你总是投票相同用户的链接,你的选民将失去价值。
  4. 选民失去价值与时间。
  5. 新的链接,用户不必要点(新用户)将有一个起0分。新的联系从旧的用户将有点根据自己的观点。从+3-无限的。链接,用户与负分将负起始点,链接,从用户的积极点,将有积极的起点。

用户将获得随意点时,他们的链接投了反对票。积极的选民得到积极点,负选民负点。

保罗*格雷厄姆写的一篇文章上他在学 发展中黑客的消息.重点是更多的人/交互他在试图吸引/创建于上算法本身,但还是很值得一读。例如,他讨论了不同的结果,当故事泡沫从底部(H)对爆炸的顶部(推荐)的前页。(尽管从我所看到的HN,它看起来像是故事发生爆炸的顶部还有).

他提供这句话:

关键性能优雅的,不是营的特殊情况。

它在光的 声称算法 为产生的HN前页:

(p-1)/(t+2)^1.5

哪里

p=条和点

t=时间从提交的文章

可能是一个良好的起点。

我实现了一个SQL版本的签交易中的排名算法进行视频聚合器像这样:

SELECT id, title
FROM videos
ORDER BY 
    LOG10(ABS(cached_votes_total) + 1) * SIGN(cached_votes_total)   
    + (UNIX_TIMESTAMP(created_at) / 300000) DESC
LIMIT 50

*cached_votes_total*更新的通过触发器每当一个新的投票是演员。它运行足够快的我们当前的网站,但是我计划增加一名值列和更新相同的触发作*cached_votes_total*柱。在这之后的最优化,它应当足够快,对于大多数的任何尺寸的网站。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top