我正在构建一个基于位置的社交网络应用程序。这个想法是允许用户发布帖子并与附近的人互动。该应用程序的主提要将根据帖子的接近度(d=帖子发布的距离)和最近度(a=帖子发布的时间)显示帖子。
我正试图想出一个公式,为每个帖子的排序打分,并实现以下目标:
- 首先显示的是高近距和高近距桩(例如d=1公里,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天之间的差分)。这意味着类似
score=alogd+blogt
(其中较低的分数意味着帖子更相关)。
然而,因为对数对于极小的值会发散到负无穷大,所以对于非常小的值,你需要调整它;你不希望"一年前就在这里"one_answers"地球的另一边,零秒前"被认为比"三十米外,十分钟前"更重要。一种方法是添加一点偏移量,这样你就不会得到非常小的值的对数:
score=alog(d+1)+blog(t+1)
我相信随着时间的推移,你会发现你必须做更多的调整。我很想听听你的想法!