Lucene RAMDirectory 已弃用-无论如何如何保留仅目录 RAM?

Posted

技术标签:

【中文标题】Lucene RAMDirectory 已弃用-无论如何如何保留仅目录 RAM?【英文标题】:Lucene RAMDirectory deprecated - how to keep Directory RAM-only anyway? 【发布时间】:2021-07-07 06:40:55 【问题描述】:

我目前正在使用 org.apache.lucene.store.RAMDirectory 类来实现基于 RAM 的快速索引,而无需硬盘写入权限。 RAM 大小和持久性不是限制因素。但是,RAMDirectory 被标记为已弃用,并且根据其API 似乎对于大型索引也存在问题。

所以我的问题是,对于已弃用的 RAMDirectory仅 RAM 的替代方案是什么?

在硬盘上写任何东西对我来说都是不可能的(只读),而且在我自己的系统上似乎也有点慢。我正在考虑将FSDDirectory 与 RAMDisk 一起使用,但找不到仅使用 java / jar 创建所述 RAMDisk 的方法(再次需要更改系统)。

【问题讨论】:

【参考方案1】:

ByteBuffersDirectory 是 RAMDirectory 的替代品。

下面的图表清楚地说明了为什么RAMDiretory 被贬值然后被删除。 BBDIR 是ByteBuffersDirectory,RAMDIR 是RAMDirectory

Dawid Weiss 绘制的图表。来源:LUCENE-8438 并在 Apache 2.0 许可下显示。 .

【讨论】:

我并不是在为 RAMDirectory 争论,恰恰相反,我正在寻找替代品,但无法找到没有磁盘写入权限的替代品。非常感谢,这正是我想要的!【参考方案2】:

你也可以只创建一个ramdisk

【讨论】:

如果你有办法从我运行的 java 程序中创建一个 ramdisk,我会全力以赴。如果它是关于创建具有额外安装和系统访问权限的 ramdisk,我已经特别提到那不是一个选项。 哦。我太快了。不过好像有:***.com/questions/4428217/… 谢谢,这个链接很有帮助 - 似乎没有办法(如,没有非常广泛的自己的补充)只有 java 的 ramdisk。

以上是关于Lucene RAMDirectory 已弃用-无论如何如何保留仅目录 RAM?的主要内容,如果未能解决你的问题,请参考以下文章

lucene 6.0 经常使用类与方法

React 16.7 - React.SFC 现在已弃用

PHP 已弃用:each() 函数已弃用 [重复]

已弃用:指令 'allow_url_include' 在第 0 行的 Unknown 中已弃用

Modernizr.load 已弃用。 Yepnope.js 已弃用。怎么办?

UIAlertView 已弃用:首先在 iOS 9.0 中弃用 - UIAlertView 已弃用。将 UIAlertController 与首选样式一起使用