我正在使用 RAMDirectory 创建一个 lucene 索引,然后允许使用该索引执行搜索。我还具有在文本更新时重新索引的功能。问题是,如果文本更改,旧索引不会被清除/删除。
我试过使用close();
fromDirectory
但这会阻止它在未来被访问(AFAIK)。
如何在重新索引之前删除旧索引?
如果在每个文档更新(添加/删除)后重新打开索引进行搜索,则搜索将找到新文档。当您更新(添加/删除)文档时,您不必立即重新索引每个文档——Lucene 会为您记录这一点。
调用 IndexWriter.update(doc) 实际上会执行删除添加过程。
根据其文档:
通过首先删除包含术语的文档然后添加新文档来更新文档。删除然后添加是原子的,正如读者在同一索引上看到的那样(刷新可能仅在添加之后发生)。