Lucene API提供了一个实现“随机访问输入流”的类IndexInput,并包含为后续读取(seek(long))设置游标位置和获取当前值的方法将执行后续读取的光标位置(getFilePointer())。
Lucene API还提供了一个实现“随机访问输出流”的并行IndexOutput类,但是,此类的API不具有搜索(长)方法 。缺乏定位光标进行写入的方法,IndexOutput如何以及在何种意义上是随机访问输出流?
答案 0 :(得分:0)
AFAIK,Lucene从未通过随机定位写作。这样做成本很高。即使您更新现有文档,它也会删除文档并创建应用了更新的新文档。删除的文档位于那里,但在bitset数据结构中标记为已删除。每当合并发生或刷新发生时,它将从索引中删除。这种方式lucene避免写入文件中的随机位置。因此,如果需要编写,请始终附加到现有文件。
对于阅读,它需要寻找在搜索查找发布列表等时读取正确的数据块。
答案 1 :(得分:0)
回答我自己的问题,正如我想出来的那样:
文档错误。自版本5以来,Lucene的IndexOutput没有实现随机访问输出流。
为此目的所需的搜索(长)方法was deprecated with version 4.1及其签名和支持它的实现类已从Lucene的第5版源代码中删除,但界面& #39; s描述尚未更新以反映此更改。