我建立了一个站点,让您可以自由添加rails相关的gem,并标记这些gem。下一个我想添加的功能是宝石排名我已经考虑过一些常见的系统,比如stars和up-voting,但是我认为一个简单的系统不够好用。
以下是我希望排名算法能很好地用于以下几个场景:
有一种流行的宝石名为gem1,它可以做xyz。gem1已经发布了一年,在xyz的gems中排名最高。一个新的gem,GEM2,也可以做XYZ,已经发布,显然比GEM1好gem2应该能够很快超过gem1。
有一种高级宝石叫GEM1新版本的rails已经发布,gem1不适用于这个版本。随着时间的推移(可能与大多数人开始使用新的rails版本所需的时间相同),gem1仍然不支持这个版本,它应该会失去它的高排名。
我们提供给我们的一些宝石信息是:
下载次数
当前版本的下载次数
如果gem托管在github上,那么我们有很多fork和watcher(尽管gem不应该超过托管在github上的另一个gem b/c)
这些信息可能是算法的一部分(包括向上投票或星星或我们需要从用户那里收集的任何信息)。
所以我的问题是,你能想出一个好的算法(当然不确切,只是描述一下)来处理这些场景,或者至少能提供一些好的建议,或者给我指明正确的方向。
最佳答案
在我看来,下载量并不是一个非常有用的指标。可能有一些代码片段已经有好几年没用了,但是每个月仍有成千上万的人在尝试(即下载)。
请提交者确定代码是在哪个版本的rails中生成的。虽然它可能无法解决您的所有问题,因为它们无法预测哪个更高版本的Rails会破坏它,但是需要两秒钟来指定该信息,而且它可以节省大量的时间在下载页面上显示。
让下载程序给代码打分执行速度、执行可靠性、代码可读性、易于安装、文档等。