【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 基本不用它来回滚。**

相关推荐
闻哥18 小时前
深入理解 ES 词库与 Lucene 倒排索引底层实现
java·大数据·jvm·elasticsearch·面试·springboot·lucene
龙山云仓1 天前
No140:AI世间故事-对话康德——先验哲学与AI理性:范畴、道德律与自主性
大数据·人工智能·深度学习·机器学习·全文检索·lucene
TracyCoder1233 天前
ElasticSearch核心引擎Apache Lucene(五):相关性算分 (Scoring)
elasticsearch·apache·lucene
TracyCoder1234 天前
ElasticSearch核心引擎Apache Lucene(四):段 (Segment) 的设计与合并
elasticsearch·apache·lucene
TracyCoder1234 天前
ElasticSearch核心引擎Apache Lucene(三):数值与空间数据索引
elasticsearch·apache·lucene
Elastic 中国社区官方博客4 天前
Elasticsearch:Apache Lucene 2025 年终总结
大数据·人工智能·elasticsearch·搜索引擎·apache·lucene
TracyCoder1234 天前
ElasticSearch核心引擎Apache Lucene(二):正排索引的奥秘
elasticsearch·apache·lucene
TracyCoder1234 天前
ElasticSearch核心引擎Apache Lucene(一):倒排索引底层实现
elasticsearch·apache·lucene
程序员agions24 天前
Unity 游戏开发邪修秘籍:从入门到被策划追杀的艺术
unity·cocoa·lucene
AC赳赳老秦24 天前
Unity游戏开发实战指南:核心逻辑与场景构建详解
开发语言·spring boot·爬虫·搜索引擎·全文检索·lucene·deepseek