Algorithm 对基于位置的社交网络排序的评分公式的建议';s后馈送

Algorithm 对基于位置的社交网络排序的评分公式的建议';s后馈送,algorithm,sorting,formula,Algorithm,Sorting,Formula,我正在构建一个基于位置的社交网络应用程序。这样做的目的是让用户能够发布帖子并与附近的人进行互动。应用程序的主提要将根据帖子的距离(d=帖子发布的距离)和最近程度(a=帖子发布的时间)显示帖子 我试图提出一个公式,对每个帖子进行评分,以进行排序,并实现以下目标: 首先显示高近距和高近距离柱(例如d=1km,a=1小时) 如果一个柱子距离很近,但很老(例如d=1公里,a=5天),稍微远一点的结果(例如d=5公里,a=1小时)排名更高 非常远的岗位(如d=10000,a=1小时)的排名只会高于非常老

我正在构建一个基于位置的社交网络应用程序。这样做的目的是让用户能够发布帖子并与附近的人进行互动。应用程序的主提要将根据帖子的距离(d=帖子发布的距离)和最近程度(a=帖子发布的时间)显示帖子

我试图提出一个公式,对每个帖子进行评分,以进行排序,并实现以下目标:

  • 首先显示高近距和高近距离柱(例如d=1km,a=1小时)
  • 如果一个柱子距离很近,但很老(例如d=1公里,a=5天),稍微远一点的结果(例如d=5公里,a=1小时)排名更高
  • 非常远的岗位(如d=10000,a=1小时)的排名只会高于非常老的附近岗位(如d=10km,a=1年)

我们正试图在看到足够局部的东西和新鲜事物之间取得平衡。虽然算法解决方案是可能的,但此时我们正在寻找一个公式来对帖子进行评分和排序。寻找合适评分公式的建议。

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

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

分数=a对数d+b对数t

(分数越低意味着职位越相关)

然而,由于对数对于非常小的值发散到负无穷大,所以对于非常小的值,您需要调整它;你不希望“一年前就在这里”和“地球的另一边,零秒前”被认为比“三十米外,十分钟前”更相关。一种方法是添加一点偏移量,这样就不会取非常小的值的对数:

得分=a对数(d+1)+b对数(t+1)

我相信你会发现,随着时间的推移,你必须做更多的调整。我很想听听你的想法