这是我的用例:
我使用MySQL作为主要数据存储,使用CloudSearch进行搜索。该数据库包含表:线程,注释,upvotes,用户。
我创建了一个表达式,用于根据"趋势"对搜索结果进行排序。使用upvotes和created_at日期(Hacker News Hot算法)。此表达式称为"趋势",并在CloudSearch查询中使用,如下所示:/search?q=Superman&sort=trend+desc
(upotes-1)/pow(floor((_time-created_at)/3600000)+2, 1.8)
现在,当用户赞成线程或评论时,它存储在MySQL数据库中。我的问题如何让upvotes与CloudSearch保持同步?
我看到两个选项:
处理这种情况的最佳方法是什么?
答案 0 :(得分:0)
这真的取决于很多事情
您的solr设置,服务器数量,内存,CPU,存储空间,文档数量,每个分片/服务器的索引大小等。
有多少"估计"你期待的是什么?如果你选择 1,将更容易决定你是否可以估计这一点 号。
由于您使用的是SolrCloud,因此它具有NRT功能,可确保使用 这些文件几乎可以立即用于搜索。但 再次,这取决于您当前的文档语料库,以及多少 每秒或每分钟更新一次。
如果你知道upvotes的数量(对solr的更新)以及你是否有足够好的服务器,我会选择1,因为它将减少管理另一个数据库的开销,以及每小时更新upvotes的逻辑到solr 。
您可以随时设置几个测试服务器,并进行一些压力测试,以找出Solr性能降低的确切更新次数。
我知道这可能不会给你一个确切的是或否,但就像我说的,这实际上取决于你的特定用例。