【发布时间】:2012-07-13 03:24:42
【问题描述】:
假设我有大量 (300-500k) 的文本文档集合存储在关系数据库中。每个文档可以属于一个或多个(最多六个)类别。我需要用户能够随机选择特定类别中的文档,这样单个实体就不会重复,就像 StumbleUpon 的工作方式一样。
我真的看不出有一种方法可以使用带有大量用户和文档的慢速 NOT IN 查询来实现这一点,所以我想我可能需要为此目的实现一些自定义数据结构。也许已经有一篇论文描述了一些可能适合我需要的算法?
目前我正在考虑以下方法:
- 从数据库中读取所有条目
- 根据属于该类别的文档的 ID,为每个类别创建一个基于链表的索引。随机播放
- 创建一个包含特定用户查看的所有条目的布隆过滤器
- 使用迭代器遍历索引,使用布隆过滤器随机选择项目以挑选未查看的项目。
【问题讨论】:
-
集合会随着时间的推移而增长,还是固定的?此外,您是否希望任何给定用户对类别中的文档进行不同的随机化,或者不同的用户可以看到相同的随机排序? (我认为这不好,但您正在考虑的方法似乎涉及每个类别的固定随机化......?)
标签: algorithm data-structures random indexing