打开lucene目录时如何指定readonly=false?

How to specify readonly=false when opening a lucene directory?

我正在使用 FSDirectory.open(Paths.get("/path/to/index)) 获取对包含我的 lucene 索引数据的目录的引用。

我想获得一个通过 readOnly 的 IndexReader,因为它根据文档提供了更好的性能。

DirectoryReader 上的

None 方法提供了此选项。有什么想法吗?

我相信这只适用于非常旧版本的 Lucene。

例如,查看 IndexReader javadoc for version 3.5.0(早在 2011 年),它指出:

it's possible to open a read-only IndexReader using the static open methods that accept the boolean readOnly parameter. Such a reader has better concurrency as it's not necessary to synchronize on the isDeleted method.

您会看到 open() 方法,例如 this one 接受“只读”布尔值。

但是,从(至少)5.5.0 版开始,这不再适用。查看该版本的 IndexReader javadoc,它指出:

IndexReader instances are completely thread safe, meaning multiple threads can call any of its methods, concurrently.

最新版本(当前为 8.5.2)仍然如此。

因此,除非您使用的是非常旧版本的 Lucene,否则您无需为此做任何事情。 demo code samples 也反映了这一点。