Php 投票权算法
我正在开发一个类似Digg的web应用程序,我需要一个算法,用于按流行程度排序帖子。例如:在第一页,我希望有今天最受欢迎的帖子,以及前几天的几篇获得足够票数的帖子。我的数据库目前看起来是这样的:Php 投票权算法,php,algorithm,statistics,theory,Php,Algorithm,Statistics,Theory,我正在开发一个类似Digg的web应用程序,我需要一个算法,用于按流行程度排序帖子。例如:在第一页,我希望有今天最受欢迎的帖子,以及前几天的几篇获得足够票数的帖子。我的数据库目前看起来是这样的: Table | fields Posts | id | ... | time Feedback | id | userid | time | upvote “向上投票”字段是布尔。如果是肯定的,则表示用户单击了向上投票按钮 我的表格是空的,可以修改 如果我理解正确,您希望投票的价值与其年龄成反比,我们
Table | fields
Posts | id | ... | time
Feedback | id | userid | time | upvote
“向上投票”字段是布尔。如果是肯定的,则表示用户单击了向上投票按钮
我的表格是空的,可以修改
如果我理解正确,您希望投票的价值与其年龄成反比,我们将非常感谢您的帮助。(投票年龄越大,在你的人气指数中所占的比例就越小。)
实现这一点的一个简单方法是将投票转换为人气单位(PUs),并且不只是简单投票的总和,而是PUs的总和。PU的构造可以简单到等于1/(投票年龄以天或小时为单位)。一天的投票价值1 PU,而两天的投票价值一半 就我个人而言,我喜欢采取更复杂的方法。一般的想法是,cron处理器每5分钟运行一次,根据您提到的标准计算每个实体的受欢迎程度,并基于用户计算受欢迎程度,以消除明显的帮派投票聚集现象,从而提升他们自己社交圈内的内容 看看劳森的答案,可以找到一个考虑投票年龄的好办法。但是考虑一下,根据声誉、资历等来应用用户自己的权重可能是有用的。 不幸的是,这并不简单。虽然我发现它比大多数网络编程更有趣,但考虑到游戏系统的所有基本心理因素可能是一个非常耗时的过程,并且可能不是你所想的,除非你碰巧为Digg工作,或者是一家严肃的初创公司的一部分 以下是php.net标准偏差: 虽然我认为这个答案更切题: 代码示例可能很好,但我们需要一些数据来完成这项工作,即使这样,这可能会变得相当复杂。但它确实很有趣。尤其是当您的代码发现有人试图玩系统游戏时。为什么不按过去X小时内的投票数进行排名?或者使用一个时间延迟过滤器。。。。