2013-07-19 175 views
0

我使用RAMDirectory创建lucene索引,然后允许使用索引执行搜索。当文本更新时,我也具有重新编制索引的功能。问题是,如果文本更改,旧索引不会被清除/删除。删除lucene索引并重新索引

我试过使用close();Directory,但它阻止它在未来被访问(AFAIK)。

如何在重新编制索引之前删除旧的索引?

+0

源代码将有助于这样的问题......目前还不清楚你在做什么。 – basZero

回答

-1

调用IndexWriter.update(doc)实际上执行删除 - 添加过程。

据其Documentation

通过首先删除包含术语文档(多个),然后加入新文档更新的文档。删除然后添加是原子的,就像读者在同一索引中看到的(刷新可能只在添加后发生)。

-1

如果在每个文档更新(添加/删除)后重新打开搜索索引,则搜索将查找新文档。当您更新(添加/删除)文档时,您不必立即重新索引每个文档--Lucene会为您记录这一点。

+0

所有这些答案都是关于单个文档的,但问题是关于整个索引。 – DCShannon