【发布时间】:2015-09-20 02:20:45
【问题描述】:
创建只向用户显示文档的应用程序的最佳方法是什么,例如 Tinder。
每个人(即文档)只提供给每个用户一次。在用户对其他人(在文档上)执行操作后,该文档不会再向同一用户显示。
构建这样一个系统的最佳方法是什么?
- 存储已经看到的文档 ID 并将它们发送到搜索引擎以过滤掉它们。这种方法似乎很糟糕,因为您最终可能会将数千个 ID 发送到搜索引擎的过滤查询中
- 将已对文档执行操作的用户的 ID 存储在文档内的字段中,并在搜索查询中发送用户 ID,请求将文档从所述字段中过滤掉。这种方法可以使文档的大小大幅增长,因为文档中可能存储了数千个 ID。
- 为每个用户创建一个包含必要文档的索引,并在用户对其执行操作时从索引中删除这些文档。这里的缺点是很难维护和更新可能有数千个索引。
- 将查看的文档存储在数据库的用户对象中,并查询文档。获得结果后,根据用户对象存储的内容,使控制器从用户已经看到的列表中跳过或删除文档。这里的缺点是您最终可能会检索到 20 个结果,并且所有 20 个结果都已被用户看到。
必须有更好的方法来构建这种类型的应用程序,这样可以更好地扩展。
有什么想法吗?
【问题讨论】:
标签: search indexing full-text-search search-engine