假设我将故事文档存储在Elasticsearch中,例如>>
{ story_id: 1, title: "Hello World", content: "Foo. Bar." likes: 2222 }
[当客户端(前端)进行搜索时,他们应该可以选择喜欢(或删除喜欢的东西)任何搜索结果,但也应该表明他们是否喜欢每个搜索结果。
将这些信息提供给客户的好方法是什么?
执行数据库查询以获取用户喜欢的所有故事,并将其保存在客户端的本地存储中。检索到搜索结果后,将用户喜欢的故事映射到客户端上检索到的搜索结果。当用户喜欢一个故事时,这将增加更新本地存储以及API的复杂性。此外,用户喜欢的故事数量可能会非常多。
保留一个喜欢文档本身内的故事的用户列表,并在搜索时检查该用户是否在列表中。这可能会炸毁搜索索引的大小?
{ ...
likes: [ 'foo_user', 'bar_user', ... ]
}
在API中,在搜索之后,执行数据库查询以确定用户已经喜欢搜索响应中的哪些故事,并在返回API响应之前将此信息映射到搜索结果。因为可能需要附加的数据库查询,所以这可能会减慢搜索速度,但是可能没有必要吗?
[假设我将故事文档存储在Elasticsearch中,例如{story_id:1,标题:“ Hello World”,内容:“ Foo。Bar。”喜欢:2222}当客户端(前端)搜索时,他们应该具有...
对于此用例,最常见/主流的方法是您的选择3。