仅向每个用户提供一次文档的方法

时间:2015-07-02 13:52:28

标签: search indexing full-text-search search-engine

创建应用程序的最佳方法是向用户展示文档,例如Tinder。

每个人(即文件)仅向每个用户提供一次。用户对另一个人(在文档上)执行操作后,该文档不再显示给同一用户。

建立这样一个系统的最佳方法是什么?

  • 存储已经看过的文档ID并发送它们以将它们过滤到搜索引擎。这种方法看起来很糟糕,因为您最终会将数千个ID发送到搜索引擎的过滤器查询中
  • 存储对文档采取操作的用户的ID,在文档内的文件中以及搜索查询中,发送请求过滤出所述字段的文档的用户ID。这种方法可以使文档的大小增长很多,因为可能有数千个ID存储在文档中。
  • 使用必要的文档为每个用户创建索引,并在用户对其执行操作时从索引中删除文档。这里的缺点是很难维护和更新数以千计的索引。
  • 将查看过的文档存储在数据库的用户对象中,然后查询文档。获得结果后,根据用户对象的存储内容,使控制器跳过或从用户已经看过的列表中删除文档。这里的缺点是你可能最终检索出20个结果,并且所有20个结果都被用户看到了。

必须有一种更好的方法来构建这种类型的应用程序,它可以更好地扩展。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我想知道与我即将建立一个火种式应用程序完全相同的事情。我相信答案是您只需根据帐户创建日期按降序请求所有用户。如果您访问的数据库具有分页,您将一次收到100个。然后你有一个缓冲区,你可以决定你将实际显示你的应用程序的用户以及按什么顺序。显示后,您将在本地删除它。只要您跟踪从远程服务器获得的最后一个用户的日期,您就可以继续要求更多,并且永远不必处理重复。