我正在使用RAMDirectory创建一个lucene索引,然后允许使用索引执行搜索。我还具有在文本更新时重新索引的功能。问题是,如果文本更改,则不会清除/删除旧索引。
我尝试使用close();
中的Directory
,但这会阻止将来访问它(AFAIK)。
如何在重新编制索引之前删除旧索引?
答案 0 :(得分:-1)
调用IndexWriter.update(doc)实际上会执行删除 - 添加过程。
根据其Documentation:
首先删除包含term的文档然后添加新文档来更新文档。删除然后添加是原子的,因为阅读器在同一索引上看到(刷新可能只在添加后发生)。
答案 1 :(得分:-1)
如果在更新(添加/删除)每个文档后重新打开搜索索引,则搜索将找到新文档。更新(添加/删除)文档时,您不必立即重新索引每个文档 - Lucene会为您跟踪此事。