0

有时需要重新生成 lucene 索引,例如,当 Compass 映射或应用增强的方式发生更改时,或者由于某种原因而损坏时。

就我而言,索引的生成大约需要 5 到 6 个小时,在此之前清除索引会导致此时间间隔内的数据不完整。IE。在这段时间内进行搜索会返回不完整的结果。

是否有任何标准方法可以让 lucene 在后台生成索引?例如,将索引写入临时目录并(当索引完成无例外等)用新索引替换现有索引?

当然,可以“手动”实现这一点,但必须这样做吗?对我来说听起来像是一个常见的用例。

最好的问候+感谢您的意见,

彼得:)

4

3 回答 3

0

我们也有类似的问题。我们的数据在 Lucene 中被索引,但原始来源是 DB 和内容 repo。

因此,如果索引不同步(或数据类型更改等),我们只需遍历索引中的所有现有条目并重新生成数据,以便更新每个文档。这并不是一件复杂的事情。

于 2010-12-14T22:05:33.083 回答
0

我也有类似的经历;分析仪的某些参数会不时更改;显然,如果是这种情况,则需要重建整个索引。(我不会详细说明,我只想说我有同样的要求!)

我做了你在问题中提出的建议。共有三个目录,“旧”、“当前”和“新”。来自实时站点的查询总是与“当前”背道而驰。索引创建过程是:

  1. 递归删除“旧”和“新”目录
  2. 在“新”目录中创建新索引(在我的情况下大约需要 6 小时)
  3. 将“当前”重命名为“旧”;和“新”到“当前”
  4. 递归删除“旧”目录

分析进程崩溃时会发生什么——如果它在第一步崩溃,下一次它将继续。如果它在第二步中崩溃,那么“新”目录将在下次运行时被删除。第三步非常快 - 重命名目录既快速又原子。在第 4 步崩溃无关紧要,它只会在下一次运行时被清理。

细心的观察者会注意到,在第 3 步中,系统可能会在重命名当前目录和移入新目录之间崩溃。这不太可能发生,因为目录重命名是如此之快。该系统已经投入生产几年了,但从未发生过(还没有?)。

于 2010-10-15T13:32:28.167 回答
0

我认为通常的方法是使用 solr 的复制功能。但是,在您的情况下,主服务器和从服务器将在同一台机器上,但只是指向不同的目录。

于 2010-09-10T19:55:49.917 回答