【问题标题】:Is it better to update all records or reindex while using solr?使用 solr 时更新所有记录或重新索引是否更好?
【发布时间】:2016-06-16 08:22:20
【问题描述】:

我正在使用 solr 搜索引擎。我最初定义了一个模式,并使用 DIH 将数据从 SQL db 导入到 solr。我在 sql db 中有一个新列,并且使用以前的一些列填充了该列。现在,我必须将这个新列索引到 solr。

我的问题是:我是对所有记录执行更新还是从 solr 中删除所有记录并使用 DIH 再次重建索引?我问这个问题是因为我读过如果我们对任何文档执行更新,solr 首先删除索引,然后再次重建它。

【问题讨论】:

  • 您好,“如果我们对任何文档执行更新,solr 首先删除索引然后再次重建它”的说法是错误的,如果 Solr 删除整个索引只是为了更新文档。确实,虽然 Solr 中不存在文档更新,但是具有相同唯一 ID 的文档会被删除,然后新文档会被索引。因此,从头开始编制索引可能会给您带来某种优势,但是一旦您的索引变得足够大,您将无法做到这一点。

标签: solr lucene solrj


【解决方案1】:

与往常一样,关于速度的答案是“视情况而定”。但是重新索引通常更容易。它不需要将所有字段都存储在 Solr 中,而且无论如何您都必须支持它 - 所以它不需要任何额外的代码。

它还为索引提供了更多的灵活性,因为正如您所注意到的,如果您要进行部分更新,实际的实现是内部删除+添加(因为可能存在依赖于您的字段的字段'正在更改、更新处理器、跨集群分布等)——这需要存储所有字段。这可能会对索引大小产生巨大影响,而这可能不是必需的 - 特别是如果您将数据库中的所有内容用于所有其他用途。

因此,关于速度,您可能只需要尝试一下(文档大小、数据库速度、字段大小等都会影响每个案例的速度) - 但通常重新索引的速度是这不是最重要的部分。

【讨论】:

    【解决方案2】:

    如果您更新索引,请不要忘记事后对其进行优化(例如通过管理控制台)以删除所有已删除的文档。

    【讨论】:

      猜你喜欢
      • 2014-08-04
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 2012-02-14
      • 2013-03-08
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      相关资源
      最近更新 更多