【lucene】lucene索引文件的读取器都是单向的只能向前不能后退读

**凡是通过 `IndexInput`/`IndexOutput` 的 `readXxx / writeXxx` 系列方法读写的底层流** 都是**单向顺序或随机定位**;

但 Lucene 在**高层**提供了几种不同的"游标"语义,要分清:

  1. **PostingsEnum / DocsEnum / ImpactsEnum**

→ **单向、不可回退**。用完就丢,想再扫必须重新要一个新的实例。

  1. **TermsEnum(词典迭代器)**

→ 也是**单向**,`seekCeil / seekExact` 只能向前定位;不能回到已扫过的 term。

  1. **StoredFieldsVisitor / TermVectors**

→ 读取某个文档的**完整字段/词向量**时,内部会**随机定位**到 `.fdx/.fdt/.tvx/.tvd` 的指定字节位置。

这里**不是顺序流**,而是 **"按 docId 随机 seek"**,但也**不会回退到比当前 doc 更小的位置**。

  1. **Points / DocValues / Norms**

→ 同样支持按 docId **随机 seek**,但读出的迭代器依旧**单向**。

  1. **IndexInput 本身**

→ 你可以随时 `seek(pos)` 到任意字节位置,**可以前后跳**,但这是**底层字节流**;

Lucene 的**倒排迭代器不会暴露这种能力**给搜索层。

一句话总结

  • **倒排链、词典、 postings 相关迭代器:单向,不可回退。**

  • **字段、向量、点值、DocValues:可以按 doc 随机定位,但读出的迭代器仍单向。**

  • **底层 `IndexInput`:支持任意 `seek`,但 Lucene 的高层 API 基本不用它来回滚。**

相关推荐
risc12345613 天前
lucene的复杂性体现
lucene
risc12345616 天前
反序列化层的迭代器接口
lucene
暗影凋落18 天前
Unity 射线检测优化:使用 Job System 实现高性能射线批处理
unity·游戏引擎·lucene
risc1234561 个月前
【lucene】impacts与帕累托最优
lucene
risc1234561 个月前
通过树来理解访问者模式 访问者模式的灵魂在于数据结构的遍历 访问者访问的是数据结构的某一个元素他要觉得要不要访问这个元素或者访问哪些元素
lucene·访问者模式
risc1234561 个月前
内隐表征构建
lucene
J_bean1 个月前
Elasticsearch 倒排索引中词条索引原理分析 — 基于 Lucene FST
elasticsearch·lucene·倒排索引·词条索引·fst
野区捕龙为宠1 个月前
Unity 持久化数据
unity·游戏引擎·lucene
拼搏的水杯1 个月前
使用Lucene.Net实现全文检索
全文检索·.net·lucene
sunxunyong2 个月前
ranger与solr&ldap&doris集成部署
solr·lucene