我有一个系统的职位和喜欢。用户可以创建帖子并喜欢它们。restapi如下所示。每篇文章可以涉及多个主题:
GET /posts/{id} returns a post-object containing title, text, author name and a link to the authors rest endpoint (doesn't matter for this example)
GET /topics/{name} should return an object with both a list with the N newest posts of the topics as well as one for the N currently most popular posts
POST /posts/ creates a new post where multiple topics can be specified
POST /topics/ creates a new topic
POST /likes/ creates a like for a specified post (does not actually create an object, just adds the post-id to the given user-object's list of liked posts, which is invisible to the users, to avoid double liking)
对象存储在dynamodb中。
我使用elasticsearch按主题对所有帖子进行分类。因此,用户发现帖子的方式是列出给定主题的帖子。我想有一个方法来排序的帖子上传日期(新)和流行。人气是时间和喜好的混合体。例如,穹窿可能看起来像这样:
popularity = number_of_likes - hours_since_posted
哪里人气越高,职位排名就越高。按新的排序当然很容易,只是按上传日期排序,但我怎么能按流行度排序呢?让这变得困难的是,自从发布以来的时间会不断变化,喜欢的次数也会不断变化。另一个问题是,like与用户对象一起存储。我可以更改它,使喜欢这些帖子的人的列表存储在post对象中,但是每次有人喜欢这些帖子时,我都必须定期更新并重新提交给elasticsearch。
有没有一种方法可以通过elasticsearch实现不断变化的人气评级,或者有没有另一种方法可以根据人气对帖子进行排序?
暂无答案!
目前还没有任何答案,快来回答吧!