有关对基于位置的社交网络的帖子提要进行排序的评分公式的建议

时间:2019-01-24 20:34:28

标签: algorithm sorting formula

我正在构建一个基于位置的社交网络应用程序。这个想法是允许用户发布附近的人并与他们互动。该应用程序的主要提要将根据其接近程度(d =发布该帖子的距离)和新近度(a =发布多久)显示帖子。

我正在尝试提出一个公式,该公式将对每个帖子进行排序并实现以下目标:

  • 新近度高且贴近度高的帖子首先显示(例如d = 1km,a = 1小时)
  • 如果某个职位附近很近但是很老(例如d = 1km,a = 5天),则进一步的结果(例如d = 5km,a = 1小时)的排名会更高
  • 距离很远的职位(例如d = 10000,a = 1小时)的排名仅会高于附近的旧帖子(例如d = 10km,a = 1年)

我们正试图在看到足够局部的事物之间保持平衡,而这些事物又既相关又新鲜。虽然算法解决方案是可行的,但目前我们正在寻找一种公式来对帖子进行评分和排序。寻找适合的计分公式的建议。

1 个答案:

答案 0 :(得分:0)

一个好的公式几乎肯定会具有一些需要调整的任意参数。 (要弄清为什么,请注意,无论距离以米为单位,其中500是一个很小的值,还是以公里为单位,其中500是一个很大的值,都希望得到相同的结果。)

对于中到较大的值,我的直觉是您需要对数刻度; 1 km与2 km之间的差异似乎与100 km与200 km之间的差异非常相似(而不是100 km与101 km之间的差异),而3天与6天之间的差异似乎与该差异相似30天到60天之间(而不是30天到31天之间的差额)。这意味着类似

  

得分= a 日志 d + b 日志 t

(分数越低表示该帖子越相关)。

但是,由于极小值的对数发散到负无穷大,因此您需要针对极小值进行调整。您不希望“一年前就在这里”和“零秒前的地球另一端”比“十分钟前的三十米外”更有意义。一种方法是添加一些偏移量,以免取很小值的对数:

  

分数= a log( d +1)+ b log( t +1)

我敢肯定,随着时间的推移,您将不得不做更多的调整。我很想听听您的想法!