Lucene的RAMDirectory已弃用,如何实现仅内存运行的Directory方案?
Lucene 弃用 RAMDirectory 后的纯内存索引替代方案
最优官方方案:ByteBuffersDirectory
这是Lucene 8.0及以上版本官方推出的RAMDirectory直接替代实现,完全匹配需求:
- 纯内存实现,全程无磁盘IO,不需要任何硬盘写入权限,也不需要修改任何系统配置
- 解决了旧版
RAMDirectory处理大索引时的大量小对象GC开销问题,大索引场景下稳定性和性能表现更优 - 完全适配只读索引场景,性能测试表现和旧版
RAMDirectory持平甚至更优
使用示例
import org.apache.lucene.store.ByteBuffersDirectory; import org.apache.lucene.store.Directory; // 直接初始化即可得到纯内存索引目录 Directory memoryDirectory = new ByteBuffersDirectory();
低版本Lucene兼容方案
如果你当前使用的Lucene版本低于8.0暂时无法升级,可以自行封装基于字节数组的轻量内存目录实现,核心基于Lucene的ByteArrayDataInput、ByteArrayDataOutput类处理索引读写逻辑,全程不需要操作磁盘。
不建议使用RAMDisk搭配FSDirectory的方案,该方案需要操作系统级配置,且读写性能弱于原生纯内存目录实现。
内容的提问来源于stack exchange,提问作者ptstone
相关产品推荐
相关产品推荐

