【问题标题】:How do you build a ratings implementation?您如何构建评级实施?
【发布时间】:2010-09-07 06:43:11
【问题描述】:

在我们正在进行的项目中,我们需要一个“评级”系统,类似于 SO 中的系统。但是,在我们的系统中,有多个实体需要通过投票来“标记”(仅向上,从不向下,就像增量一样)。有时我们需要按照评分最高的顺序显示所有实体,不管实体类型如何,我猜基本上是混合结果集。您使用什么数据结构/算法来实现这一点,这样既灵活又可扩展?

【问题讨论】:

    标签: algorithm database-design architecture data-structures


    【解决方案1】:

    由于 reddit 的排名算法很牛逼,如果不复制它,看看它是非常有意义的:


    鉴于条目发布的时间 A 和 2005 年 12 月 8 日上午 7:46:43 B 的时间,我们有 ts 作为它们的秒差:

    ts = A - B

    x 为赞成票数 U 和反对票数 D 之差:

    x = U - D

    在哪里

    y = 1 if x > 0
    y = 0 if x = 0
    y = -1 if x < 0
    

    和z为x和1的绝对值的最大值:

    z = |x| if |x| >= 1
    z = 1 if |x| < 1
    

    我们将评分作为函数 ƒ(ts, y, z):

    ƒ(ts, y, z) = log10 z + (y • ts)/45000


    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多