我应该多久将文档上传到 CloudSearch (Solr)?
How often should I upload documents to CloudSearch (Solr)?
这是我的用例:
我使用 MySQL 作为我的主要数据存储,并使用 CloudSearch 进行搜索。数据库包含表:话题、评论、点赞、用户。
我创建了一个表达式,根据 "trending" 使用投票和 created_at 日期(Hacker News Hot 算法)对搜索结果进行排序。此表达式称为 "trend",并在 CloudSearch 查询中使用,如下所示:/search?q=Superman&sort=trend+desc
(upotes-1)/pow(floor((_time-created_at)/3600000)+2, 1.8)
现在,当用户对话题或评论点赞时,它会存储在 MySQL 数据库中。我的问题 我应该如何使点赞与 CloudSearch 保持同步?
我看到的两个选项:
- 立即在 MySQL 中插入(替换)赞成票,然后更新 CloudSearch 上的分数。这涉及在每次投票时发送单个文档上传,但确保实时准确性。
- 立即在 MySQL 中插入(替换)一个赞成票,然后将赞成票保存在某个地方的缓存中(Redis?)。每小时一次,将所有投票上传到 CloudSearch。
处理这种情况的最佳方法是什么?
这真的取决于很多事情
您的 solr 设置、多少台服务器、多少内存、CPU、存储、多少文档、每个 shard/server 的索引大小等
您期望获得多少 "estimated" 赞成票?如果你选择
1,如果你能估计这个会更容易决定
数.
由于您使用的是 SolrCloud,因此它具有 NRT 功能,可确保
这些文件几乎可以立即用于搜索。但
同样,这取决于您当前的文档语料库,以及有多少
您期望的每秒或每分钟更新。
如果您知道赞成票的数量(对 solr 的更新)并且您有足够好的服务器,我会选择选项 1,因为它会减少维护另一个数据库的开销,以及每小时更新赞成票的逻辑进入解决方案。
您始终可以设置几个测试服务器,并进行一些压力测试以找出 Solr 性能会降低的确切更新次数。
我知道这可能不会给你一个确切的是或否,但就像我说的,这真的取决于你的特定用例。
这是我的用例:
我使用 MySQL 作为我的主要数据存储,并使用 CloudSearch 进行搜索。数据库包含表:话题、评论、点赞、用户。
我创建了一个表达式,根据 "trending" 使用投票和 created_at 日期(Hacker News Hot 算法)对搜索结果进行排序。此表达式称为 "trend",并在 CloudSearch 查询中使用,如下所示:/search?q=Superman&sort=trend+desc
(upotes-1)/pow(floor((_time-created_at)/3600000)+2, 1.8)
现在,当用户对话题或评论点赞时,它会存储在 MySQL 数据库中。我的问题 我应该如何使点赞与 CloudSearch 保持同步?
我看到的两个选项:
- 立即在 MySQL 中插入(替换)赞成票,然后更新 CloudSearch 上的分数。这涉及在每次投票时发送单个文档上传,但确保实时准确性。
- 立即在 MySQL 中插入(替换)一个赞成票,然后将赞成票保存在某个地方的缓存中(Redis?)。每小时一次,将所有投票上传到 CloudSearch。
处理这种情况的最佳方法是什么?
这真的取决于很多事情
您的 solr 设置、多少台服务器、多少内存、CPU、存储、多少文档、每个 shard/server 的索引大小等
您期望获得多少 "estimated" 赞成票?如果你选择 1,如果你能估计这个会更容易决定 数.
由于您使用的是 SolrCloud,因此它具有 NRT 功能,可确保 这些文件几乎可以立即用于搜索。但 同样,这取决于您当前的文档语料库,以及有多少 您期望的每秒或每分钟更新。
如果您知道赞成票的数量(对 solr 的更新)并且您有足够好的服务器,我会选择选项 1,因为它会减少维护另一个数据库的开销,以及每小时更新赞成票的逻辑进入解决方案。
您始终可以设置几个测试服务器,并进行一些压力测试以找出 Solr 性能会降低的确切更新次数。
我知道这可能不会给你一个确切的是或否,但就像我说的,这真的取决于你的特定用例。