反序列化层的迭代器接口

它们是"反序列化层的迭代器接口"。


它们的角色

接口/抽象类 属于什么 职责

TermsEnum 反序列化迭代器 遍历倒排词典中的词项

PostingsEnum 反序列化迭代器 遍历某个词项对应的文档列表

NumericDocValues 反序列化迭代器 按文档 ID 读取数值(随机访问)

SortedDocValues 反序列化迭代器 按文档 ID 读取序数,再查词典还原字符串

SortedSetDocValues 反序列化迭代器 遍历多值字符串的序数列表

BinaryDocValues 反序列化迭代器 按文档 ID 读取二进制值

PointValues 反序列化迭代器 intersect() 递归遍历 BKD 树

它们都是反序列化层的"游标"。你在上层通过它们来逐条读取数据,不需要关心底层文件格式。

它们的关系

```

反序列化层(SegmentCoreReaders)

├── 提供入口:FieldsProducer、DocValuesProducer、StoredFieldsReader...

└── 返回游标:TermsEnum、PostingsEnum、NumericDocValues...

这些就是你问的"提供遍历方法的接口"

```

它们的共同特征

特征 说明

从磁盘读数据 内部持有 IndexInput,从 .doc、.dvd 等文件读字节

逐条暴露给上层 一次给一条,不一次性全加载

有状态 内部维护当前读到的位置(docID、ord、term 等)

上层不关心底层 上层只知道 nextDoc() 返回 int,不知道数据来自哪

生命周期短 用完就扔,不长期持有

它们的名字

命名模式 例子 说明

*Enum TermsEnum、PostingsEnum 传统的"枚举器",按顺序一个个取

*Values NumericDocValues、SortedDocValues 按文档 ID 取值的"值访问器"

*Reader StoredFieldsReader 读取器的顶层入口,返回 Enum/Values

一句话

这些接口和抽象类,是反序列化层的"迭代器协议"------它们定义了如何从磁盘数据中逐条读取信息,让上层可以用统一的方式访问不同类型的数据,而不需要关心底层文件格式。 🎯

相关推荐
暗影凋落2 天前
Unity 射线检测优化:使用 Job System 实现高性能射线批处理
unity·游戏引擎·lucene
risc12345610 天前
【lucene】impacts与帕累托最优
lucene
risc12345611 天前
通过树来理解访问者模式 访问者模式的灵魂在于数据结构的遍历 访问者访问的是数据结构的某一个元素他要觉得要不要访问这个元素或者访问哪些元素
lucene·访问者模式
risc12345616 天前
内隐表征构建
lucene
J_bean16 天前
Elasticsearch 倒排索引中词条索引原理分析 — 基于 Lucene FST
elasticsearch·lucene·倒排索引·词条索引·fst
野区捕龙为宠22 天前
Unity 持久化数据
unity·游戏引擎·lucene
拼搏的水杯1 个月前
使用Lucene.Net实现全文检索
全文检索·.net·lucene
sunxunyong2 个月前
ranger与solr&ldap&doris集成部署
solr·lucene
编码者卢布2 个月前
【Azure AI Search】Index的字段使用默认Analyzer(standard.lucene) 和 en.microsoft 有什么不同?
microsoft·lucene·azure