Lucene可删除文件已被锁定

时间:2011-06-09 12:13:57

标签: java lucene indexing hibernate-search

我用来重建索引MassIndexer。我从一些网站获得了代码示例(不记得在哪里)。

massIndexe.purgeAllOnStart(true) // true by default, highly recommended
.optimizeAfterPurge(true) // true is default, saves some disk space
.optimizeOnFinish(true) // true by default
.batchSizeToLoadObjects(100)
.threadsForSubsequentFetching(15)
.threadsToLoadObjects(10)
.limitIndexedObjectsTo(1000)
.cacheMode(CacheMode.IGNORE) // defaults to CacheMode.IGNORE
.startAndWait();
但是经过几次reindex大小的指数真的非常巨大。任何建议如何解决这个问题。

Lucene说:

  

这是Windows上的正常行为   每当你也有读者   (IndexReaders或IndexSearchers)打开   针对您正在优化的索引。   Lucene试图删除旧段   合并后的文件   (优化)。但是,因为Windows   不允许删除文件   开放阅读,Lucene抓住了   IOException删除这些文件和   然后记录这些待处理的   删除文件到“删除”   文件。在下一段合并,   这发生在显式优化()   或者close()调用以及何时调用   IndexWriter刷新其内部   RAMDirectory到磁盘(每个   IndexWriter.DEFAULT_MAX_BUFFERED_DOCS   (默认10)addDocuments),Lucene   将再次尝试删除这些文件   (和其他的)和任何   仍然失败将被重写为   删除文件。

但我相信有办法解决这个问题。在任何情况下索引都将占用所有可用空间,因为它在任何时候都被某人使用..

0 个答案:

没有答案