gpt4 book ai didi

Firebase Firestore 结构,用于获取不可见的热门帖子 - 社交

转载 作者:行者123 更新时间:2023-12-04 16:44:04 25 4
gpt4 key购买 nike

这是当前的样本结构

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)
最终目标是
  • 我需要获取当前用户未查看的帖子,并在分页中按点字段降序排列。

  • 可能的最佳解决方案是什么(例如更改结构、云功能、来自客户端的多个查询)?

    最佳答案

    我正在研究一种解决方案,以显示热门帖子并消除用户已经看到的帖子或内容不佳的帖子。处理两个查询真的很痛苦,尤其是在用户群增加的情况下。
    很难维护“已查看”集合并过滤新帖子。想象一下有 100 万个查看过的帖子,然后过滤掉未看到的帖子。
    所以我想出了一个解决方案,虽然不是很好,但仍然很酷。
    所以这是我们的数据结构
    帖子(收藏)
    --postid(文件)

  • 标题。
  • 描述。
  • 图片。
  • 时间戳。
  • 优先级

  • 这是一个带有基本细节的简单帖子结构。你可以看到我添加了一个 优先 field 。这个领域会发挥作用。
    如何使用优先级。
  • 我们应该查询以较高优先级开始并以较低优先级结束的帖子。
  • 当用户发布新帖子时。将当前时间戳指定为默认优先级。
  • 当用户对帖子点赞(赞)时,将优先级提高 1 分钟(60000 毫秒)
  • 当用户反对(不喜欢)帖子时,将优先级降低 1 分钟(60000 毫秒)
  • 您可以每 24 小时重置一次优先级。如果您今天早上开始浏览提要,您将看到过去 24 小时内的帖子。一旦达到 24 小时持续时间,您可以将优先级重置为当前时间。可以根据您的需要更改 24 小时限制。您可能希望每 15 分钟重置一次限制。因为每 15 分钟可能会添加 100 条新帖子。此限制将确保提要中的内容重复。

  • 因此,当您开始滚动提要时,您将首先获得所有热门帖子,然后再获得优先级较低的帖子。如果您今天发布帖子并且人们开始对其进行投票。它将获得更长的生命周期,从而压倒糟糕的内容,并且当您对它投反对票时,只要用户无法访问它,它就会将帖子推下。
    使用时间戳作为优先级,因为旧帖子应该随着时间的推移而失去优先级。即使是今天的热门帖子明天也应该失去优先级。
    需要考虑的事项:
    使用生命周期可以根据您的需要而有所不同。
    用户群越大。你应该降低生命周期值(value)。因为如果今天发布的帖子被 10,000 名用户点赞,它会在 future 6.9 天趋势。如果有超过 100 个帖子被 10,000 多个用户点赞,那么在这 6.9 天内您将永远看不到新帖子。
    所以一个热门帖子应该不会持续一两天。
    因此,在这种情况下,您可以提供 10 秒的生命周期,10,000 个赞成票将提供 1.1 天的生命周期。
    这不是一个完美的解决方案,但它可以帮助您入门。

    关于Firebase Firestore 结构,用于获取不可见的热门帖子 - 社交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53159028/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com