Pav*_*rma 5 firebase google-cloud-firestore
这是当前的示例结构
Posts(Collection)
- post1Id : {
viewCount : 100,
likes : 45,
points : 190,
title : "Title",
postType : image/video
url : FileUrl,
createdOn : Timestamp,
createdBy : user20Id,
userName : name,
profilePic: url
}
Users(Collection)
- user1Id(Document):{
postsCount : 10,
userName : name,
profilePic : url
}
viewed(Collection)
- post1Id(Document):{
viewedTime : ""
}
- user2Id(Document)
Run Code Online (Sandbox Code Playgroud)
最终目标是
可能的最佳解决方案是什么(例如改变结构、云功能、客户端多次查询)?
小智 7
我正在研究一种解决方案来显示热门帖子并消除用户已经看过的帖子或不良内容。处理两个查询确实很痛苦,尤其是当用户群不断增加时。维护“已查看”集合并过滤新帖子很困难。想象一下,有 100 万个已查看的帖子,然后过滤掉未查看的帖子。
所以我想了一个解决方案,虽然不是那么好,但仍然很酷。
这是我们的数据结构
帖子(集合)--postid(文档)
这是一个包含基本细节的简单帖子结构。您可以看到我添加了一个优先级字段。这个字段将会发挥魔力。
如何使用优先级。
因此,当您开始滚动提要时,您将首先看到所有热门帖子,然后再看到优先级较低的帖子。如果您今天发布帖子并且人们开始点赞。它将获得更长的生命周期,从而压倒那些糟糕的内容,当你对它投反对票时,只要用户无法访问它,它就会下推该帖子。
使用时间戳作为优先级,因为旧帖子会随着时间的推移而失去优先级。即使是今天的热门帖子明天也会失去优先权。
需要考虑的事项:
使用寿命可以根据您的需求而有所不同。用户基数越大。您应该降低终生价值。因为如果今天发布的帖子得到 10,000 个用户的投票,那么它在未来 6.9 天就会成为趋势。如果有超过 100 个帖子被超过 10,000 个用户点赞,那么在 6.9 天内你将永远看不到新帖子。因此,热门帖子几乎不会持续一两天。
因此,在这种情况下,您可以给出 10 秒的生命周期,对于 10,000 个赞成票,它将给出 1.1 天的生命周期。
这不是一个完美的解决方案,但它可以帮助您入门。
| 归档时间: |
|
| 查看次数: |
1501 次 |
| 最近记录: |