Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Lucene可删除文件已锁定_Java_Lucene_Indexing_Hibernate Search - Fatal编程技术网

Java Lucene可删除文件已锁定

Java Lucene可删除文件已锁定,java,lucene,indexing,hibernate-search,Java,Lucene,Indexing,Hibernate Search,我用来重新编制MassIndexer的索引。我从一些网站上得到了代码示例(不记得在哪里) 但经过几次重新索引后,指数的规模真的很大。任何关于我如何解决这个问题的建议 Lucene说: 这是Windows上的正常行为 当你也有读者的时候 (IndexReaders或IndexSearchers)打开 针对您正在优化的索引。 Lucene尝试删除旧段 文件合并后 (优化)。但是,因为Windows 不允许删除已删除的文件 打开阅读,Lucene抓到了一个 IOException删除这些文件和 然后记

我用来重新编制MassIndexer的索引。我从一些网站上得到了代码示例(不记得在哪里)

但经过几次重新索引后,指数的规模真的很大。任何关于我如何解决这个问题的建议

Lucene说:

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

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

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();