我们使用Elasticsearch为大约100,000个文档编制索引。用户可以喜欢的项目,目前我们正在使用Django Haystack的RelatedSearchQuerySet
查看收藏夹表格,但这会执行大量SQL查询来过滤这些文档的子集,这使得搜索通过用户的最爱非常慢。
为了加快速度,我考虑为每个文档添加一个多值字段(例如favorited_by
)并存储用户'其中的主键,但由于用户可以收藏数千个项目,流行的文档会变得很大。
搜索用户的收藏夹似乎是一个已解决的问题。怎么做?
答案 0 :(得分:0)
在elasticsearch中,我会将收藏夹与该收藏夹的用户名一起存储。然后使用用户名向查询添加过滤器。您甚至可以将用户名用作多值字段,不确定在数千个用户的情况下是否可以扩展。如果多个用户创建相同的收藏,则每个网站可以获得优势。但我认为我会保留每位用户的最爱。