如何将搜索结果与数据库集成

问题描述 投票:1回答:1

假设我将故事文档存储在Elasticsearch中,例如>>

{
  story_id: 1,
  title: "Hello World",
  content: "Foo. Bar."
  likes: 2222
}

[当客户端(前端)进行搜索时,他们应该可以选择喜欢(或删除喜欢的东西)任何搜索结果,但也应该表明他们是否喜欢每个搜索结果。

将这些信息提供给客户的好方法是什么?

  1. 执行数据库查询以获取用户喜欢的所有故事,并将其保存在客户端的本地存储中。检索到搜索结果后,将用户喜欢的故事映射到客户端上检索到的搜索结果。当用户喜欢一个故事时,这将增加更新本地存储以及API的复杂性。此外,用户喜欢的故事数量可能会非常多。

  2. 保留一个喜欢文档本身内的故事的用户列表,并在搜索时检查该用户是否在列表中。这可能会炸毁搜索索引的大小?

  3. { ...  
      likes: [ 'foo_user', 'bar_user', ... ] 
    }
    
  4. 在API中,在搜索之后,执行数据库查询以确定用户已经喜欢搜索响应中的哪些故事,并在返回API响应之前将此信息映射到搜索结果。因为可能需要附加的数据库查询,所以这可能会减慢搜索速度,但是可能没有必要吗?

[假设我将故事文档存储在Elasticsearch中,例如{story_id:1,标题:“ Hello World”,内容:“ Foo。Bar。”喜欢:2222}当客户端(前端)搜索时,他们应该具有...

api rest elasticsearch search datastore
1个回答
0
投票

对于此用例,最常见/主流的方法是您的选择3。

© www.soinside.com 2019 - 2024. All rights reserved.