0

我正在使用 RAMDirectory 创建一个 lucene 索引,然后允许使用该索引执行搜索。我还具有在文本更新时重新索引的功能。问题是,如果文本更改,旧索引不会被清除/删除。

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

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

4

2 回答 2

0

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

于 2013-08-16T18:36:39.193 回答
-1

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

根据其文档

通过首先删除包含术语的文档然后添加新文档来更新文档。删除然后添加是原子的,正如读者在同一索引上看到的那样(刷新可能仅在添加之后发生)。

于 2013-08-16T07:24:56.910 回答