【问题标题】:Delete lucene index and re-index删除lucene索引并重新索引
【发布时间】:2013-07-19 17:14:24
【问题描述】:

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

我尝试使用来自Directoryclose();,但这会阻止它在未来被访问(AFAIK)。

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

【问题讨论】:

  • 源代码将有助于解决此类问题...目前尚不清楚您到底在做什么。

标签: java lucene


【解决方案1】:

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

【讨论】:

  • 所有这些答案都是关于单个文档的,但问题是关于整个索引的。
【解决方案2】:

调用 IndexWriter.update(doc) 实际上做了一个删除-添加过程。

据其Documentation

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多