java - 打开lucene目录时如何指定readonly=false?
问题描述
我FSDirectory.open(Paths.get("/path/to/index))
用来获取对包含我的 lucene 索引数据的目录的引用。
我想获得一个 IndexReader ,它可以通过readOnly
,因为它根据文档提供了更好的性能。
没有任何方法DirectoryReader
提供此选项。有什么想法该怎么做?
解决方案
我相信这只适用于非常旧的 Lucene 版本。
例如,查看3.5.0 版IndexReader
的javadoc (早在 2011 年),它指出:
可以使用接受布尔 readOnly 参数的静态打开方法打开只读 IndexReader。这样的阅读器具有更好的并发性,因为不需要在 isDeleted 方法上进行同步。
你会看到open()
像这个这样的方法,它采用“只读”布尔值。
但是,从(至少)5.5.0 版开始,这不再适用。查看IndexReader
该版本的 javadoc,它指出:
IndexReader 实例是完全线程安全的,这意味着多个线程可以同时调用它的任何方法。
在最新版本(当前为 8.5.2)中仍然如此。
因此,除非您使用的是非常旧的 Lucene 版本,否则您无需为此做任何事情。演示代码示例也反映了这一点。
推荐阅读
- tfs - 在 TFS 2015 积压工作中隐藏已关闭状态工作项的可能性
- python - 将 altair 条形图中的轴设置为整数
- c++ - 如何并行处理不可预测的工作?
- java - 带有引用游标的postgresql java存储过程
- arrays - 使用滑动窗口方法找到最大的连续子数组
- apache-flink - 如何在 Apache Flink 中有条件地处理流数据
- filesystems - EFI 应用程序错误写保护
- java - IAnnotation 转换方法不会禁用 testng 中的测试
- typescript - 如果缺少构造函数参数,则不会出错
- xamarin.forms - Xamarin 表单:epubreader NuGet 包的问题