lucene的并发读写

时间:2014-04-14 07:59:18

标签: java lucene

我正在使用lucene 4.5版本。

我目前正在从Oracle DB中读取数据并将所有数据索引到lucene中。现在,我需要在十分钟后逐步更新索引文件夹。因此,在这种情况下,如果我打开写入,我的段文件将被删除。所以我无法从lucene进行搜索。我试着看看我们是否可以同时读写。但我无法找到任何解决办法。

有人能为此提出一些想法吗?我们在增量期间读取的数据较少。因此数据很快就会被索引。但我不能每隔十分钟就停下来寻找一次。  很抱歉,如果我重复了同样的问题。但我找到lucene 3.6的所有答案,并不适合lucene 4.5版本。

2 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

  1. 创建初始索引。
  2. 十分钟后,使用更新的数据创建另一个索引。
  3. 完成2时,切换阅读器以使用更新的索引。
  4. 删除(现已过时)索引。
  5. 见2.
  6. 此建议与任何Lucene版本完全无关。

答案 1 :(得分:2)

您还可以打开appending

IndexWriter
IndexWriterConfig iwc = new IndexWriterConfig(LUCENE_VERSION, analyzer);
iwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);
IndexWriter writer = new IndexWriter(directory, iwc);

您的读者不应受此影响,他们可以继续搜索。更新索引后,您应该重新打开读者,以便他们可以搜索更新的数据。