我有一个包含不同类别的内容列表,还有创建时间和可能的到期时间,这些时间随着时间的推移而变化(新项目被添加到其中),我也有许多不同偏好的用户。 现在,我想要做的是每次向用户展示新内容,而不是重复,但也有一定程度的随机性。 显然,我不能将所有显示的内容存储到用户,每次检查整个集合。 一种可能的解决方案是使用一些集群并将每个用户分配到一个集群,并为每个集群存储一些数据,但我认为有更好的方法。
编辑:好的,在向同事提出同样的问题之后,他们建议"布鲁姆过滤器",是否有人同意这些问题?
答案 0 :(得分:0)
对于每个用户,都要显示要显示的项目的优先级队列。每次创建项目时,将其插入每个感兴趣的用户的优先级队列中,并具有随机优先级。当用户查看它时,从优先级队列中删除顶部项目,直到找到一个未过期的项目。所有每个用户操作都有O(log(n))
时间,这是可以接受的。