帖子排序算法(或wordpress插件)为新鲜和喜欢的内容


post sorting algorithms (or wordpress plugin) for fresh and liked contents

我想做一个网站,将有帖子(用户可以喜欢或不喜欢的帖子)。我想排序的帖子结合他们的新鲜度和喜欢的用户。但问题就在下面。

  1. 如果我按发布日期显示帖子,则新帖子将始终显示在顶部,然后用户将不会获得旧帖子(可能被许多人喜欢)。
  2. 如果我按最喜欢的帖子排序,新鲜帖子将向下移动,因为新帖子没有足够的时间被用户喜欢。

所以我想要一个算法(或一个wordpress插件,因为我使用wordpress),这样我就可以在我的网站上显示新的和最喜欢的内容的组合。

尝试定义更具体的规则,以便对帖子进行排序。在您的示例中,您希望按帖子数量降序排序,并按帖子年龄升序排序。

define compare:
    input: date ageA , date ageB , int likesA , int likes B
    output: int
    double ageFactor
    double likesFactor
    long ageA = diffSeconds(today() , ageA)
    long ageB = diffSeconds(today() , ageB)
    return (int) ((likesA - likesB) * likesFactor + (ageA - ageB) * ageFactor)

基本上,你所要做的就是找到ageFactorlikesFactor的正确值,以平衡点赞和年龄对帖子位置的影响。如果后A (ageAlikesA)应该比后b更高,则结果int将是正的

你不想要一个算法,但你想要一个指令来设计你自己的算法。

这是你要做的:

  • 收集过去30天的帖子
  • 评估日期得分(最后10天= 5分,10 - 20天= 3分,30天= 1分,等等…)
  • 评估新鲜度评分(500+赞= 10分,200 - 500赞= 5分,等等…)
  • 创建一个函数'getScore(post)',它将根据新鲜度和日期标准为您提供帖子的分数。(如果您想更准确,可以添加更多标准)
  • 创建/排序一个数组,以便有最大的得分第一的帖子。

这种算法有很多用例(根据视频的属性、用户的历史记录、类似用户对视频的反馈等,使用与用户匹配的分数来推荐视频),自己设计会教会你很多东西。

好运。

编辑:这比wordpress更纯粹的PHP方式,感谢Paul发布wordpress方式。