打开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 也反映了这一点。
我正在使用 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 也反映了这一点。