假设我有一个存储在关系数据库中的大量(300-500k)文本文档集合。每个文档可以属于一个或多个(最多六个)类别。我需要用户能够随机选择特定类别中的文档,这样单个实体就不会重复,就像 StumbleUpon 的工作方式一样。
我真的没有看到一种方法可以使用带有大量用户和文档的慢速 NOT IN 查询来实现这一点,所以我想我可能需要为此目的实现一些自定义数据结构。也许已经有一篇论文描述了一些可能适合我需要的算法?
目前我正在考虑以下方法:
从数据库中读取所有条目 根据属于该类别的文档的 ID,为每个类别创建一个基于链表的索引。随机播放创建一个包含特定用户查看的所有条目的布隆过滤器使用迭代器遍历索引,使用布隆过滤器随机选择项目以挑选未查看的项目。