IndexWriter myWriter = new IndexWriter(pathOnDisk);
int segCount = myWriter.GetSegmentCount();
if (segCount > 1)
myWriter.Optimize();
myWriter.Close()
我想为50个不同的索引目录运行上面的代码,所以我想知道打开索引编写器是否有开销?
答案 0 :(得分:0)
它有一些开销,包括创建一个锁文件(参见第133行),阅读段信息,以及一些可能或可能不昂贵的其他东西。
0113打开IndexWriter会为正在使用的目录创建一个锁定文件。试图打开 同一目录下的另一个IndexWriter将导致a {@link LockObtainFailedException}。 {@link LockObtainFailedException} 如果使用同一目录中的IndexReader删除文档,也会抛出此异常 来自指数。
从第816行开始查看java source。这不是一个小构造函数,但你必须判断它有多重要。