【问题标题】:Solr DIH delta importSolr DIH 增量导入
【发布时间】:2015-09-28 02:59:18
【问题描述】:

我们计划在 Web 应用程序中使用 MySQL 作为 RDBMS。但也将数据发送到 Solr 以支持更快的搜索。我正在寻求关于推荐哪种方法以及为什么推荐的建议:

  1. 设置一个 cron 作业以进行定期更新(比如每 30 分钟一次) - 大多数教程似乎都建议这样做。
  2. http post 期间,将数据发送到 mySQL 和 Solr。

该应用将具有用户发布的 cmets 和需要全文搜索和构面的不同范围属性。

编辑:对于那些找到解决此主题的方法的人,solr wiki 在https://wiki.apache.org/solr/SolrPerformanceFactors 上对此进行了简要说明

【问题讨论】:

  • 如果您能提供更多关于应用程序和数据的信息,会更容易回答。

标签: solr dih


【解决方案1】:

如果您需要为用户提供near-real 时间数据,那么您应该采用第二种方法。它将更新 solr 索引中的数据,并可供用户搜索。

如果您不需要近乎实时的用户搜索,那么您应该采用第一种方法,即每 30 分钟更新一次索引。

但请记住,这些可能需要在您的 solr 设置中进行一些不同的配置。

【讨论】:

  • 总是使用方法#2 有什么缺点吗?为什么还要考虑方法 #1。
  • @beginner101 取决于您要索引多少数据的系统配置。您还计划使用 solrCloud 模式还是 Standalone 模式?
【解决方案2】:

正如 younghobbit 所建议的那样,对应用程序数据类型的更深入的了解使这个问题更容易回答。

即便如此,我还是会列出一些我知道的点,然后您可能会做出更明智的选择。

  1. SOLR 索引不像事务处理数据库。它旨在对原始文本内容搜索有效,并且在内部它做了一些很好的东西来帮助提高搜索速度(我不是 SOLR 内部专家..所以 SOLR 专家请随时详细说明“好东西”)。为搜索索引数据的过程并不便宜,因此最好让 SOLR 每 X 分钟而不是一直执行索引魔法。毕竟,您希望它利用其大部分可用资源为搜索提供最相关的结果。
  2. 您可以根据需要随时向 SOLR 发送数据,但它只有在提交后才真正可用。您可以在每次操作后提交或让 SOLR 每 x 分钟自动提交一次。 (我不记得确切的配置,但我认为是 15 分钟左右)。提交是真正触发资源匮乏的索引过程的原因,因此提交太多是不好的。另一方面,提交太少会导致索引过时。
  3. 既然你有一个 MySQL 数据库,我猜也有更新的记录。从 4.x SOLR 开始 SOLR 内部并没有真正更新文档。 SOLR 处理更新的方式是将旧文档标记为已删除,然后简单地创建一个新文档。这意味着每次更新都会导致 SOLR 在磁盘上使用更多空间。您偶尔可以调用“优化”操作,SOLR 将删除“已删除”文档。再次优化是资源匮乏的,最好在服务器不那么忙时完成。此外,Optimize 会导致 SOLR 在优化期间使用更多磁盘空间(规则拇指 = 索引大小 * 2)。 想象一下,如果您有一条 MySQL 记录在 30 分钟内更新了 10 次,那么如果您在每个 http 帖子上向 SOLR 发送数据,这将导致 SOLR 中的 9 个被删除文档和一个活动文档。而如果是 30 分钟的 cron 作业,则意味着发布 1 条或最多 2 条记录。
  4. SOLR 不完全是事务性的。它具有提交和回滚操作,但它们适用于自上次提交以来添加的所有文档。 (建议阅读有关此的 SOLR 文档)。这与您的 http 帖子不同,通常在 MySQL 数据库上提交、回滚将在同一个 http 请求的范围内。例如,您在每个 http 帖子上向 SOLR 发送数据,让我们说您遇到需要回滚的场景,MySQL 将执行干净回滚,但 SOLR 回滚是不可行的,因为它可能会回滚当前 http 帖子时所做的其他更改处理正在进行中。

我个人认为方法 1 更好,但您可能需要调整 cron 的频率以获得近乎实时的搜索响应。真正的实时只能通过方法 2 实现,但您必须考虑如何处理与 SOLR 相关的更新、事务。在选择任一选项之前,请充分了解 SOLR 中的提交、回滚、优化操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多