查找最新的&最近的帖子,限制20

时间:2011-06-09 03:00:50

标签: algorithm sorting mongodb

我最近在这里看到了一个问题并将其加入书签以供进一步考虑。这是question。我无法确定自己的问题是这个问题真的很有意思还是没什么特别的?

为什么会这样,因为它让我觉得它有一个真正简单的答案,按最短距离*时间产品排序,还是我错过了一些明显的东西?

我可以解释为什么它看起来很简单:

  1. 无论在何时何地运行查询,距离总是保持不变,这意味着如果:我的家位于A点并且在B点有一个帖子而在C点有另一个帖子,无论何时我运行查询我将始终得到常数值说5km& 7千米。

  2. 自帖子后的时间偏移看起来像在一定程度上保持不变,因为它对所有帖子都同等增长。这意味着,如果B是从2004年开始,而后C是从2009年开始,现在它们将分别是7年和2年前。所以明年它将是8年和3年前,依此类推。

  3. 添加重量值以'调整'距离&时间没有任何帮助(不需要),因为(从上面的两个帖子中取值)5 * 7 * alpha总是会超过2 * 7 * aplha因此无论我们何时运行查询后C(2 * 7 * aplha)将永远是'最近最近的'

  4. 同时添加一个权重常数以“调整”结果似乎不再是最接近和最近的产品但是会有利于或者在这种情况下我可能会排序最近,然后大多数最接近或反之亦然。但这不再是最接近最近的,但要么是最接近的,要么是最近的,或者更接近最近,所以这两个问题都是微不足道的我相信。所以这就是为什么我认为无论选择什么单位来表示时间偏移和距离,调整都不是一个好主意。 我认为增加不如乘法,但距离*时间似乎足以始终得到正确的结果。

  5. 所以这就是我的想法,但后来我想,不,那不可能那么简单。那我在这里错过了什么?

1 个答案:

答案 0 :(得分:0)

确定所需排序表达式的最佳方法是让一些人手动对某些项目进行排序,并从他们的答案中推断出表达式。很可能不同的人会给出不同的答案,因此单个表达式无法容纳每个人。

还有其他有用的多项式表达式,例如t*d + A*t + B*d,其中td是时间和距离。如果我们引入一个多项式度数,可能会得到更精确的结果,因此表达式变为t*d + A*t*t + B*d*d + C*t + D*d。只有真实人类的答案才能设计出这个公式。