【Lucene】架构

Lucene 的架构可以简单拆成 "两大流程、六大模块、N 个核心类"。

下面用一张脑图思路 + 关键类清单帮你一次理清。


一、两大流程

阶段 关键动作 涉及核心类

索引流程 分词 → 写倒排 → 刷盘/合并 `IndexWriter` `Analyzer` `Document` `Field`

搜索流程 解析查询 → 检索 → 打分 → 收集结果 `IndexSearcher` `Query*` `Collector` `ScoreDoc`


二、六大模块 & 代表类

模块 职责 重要类 / 接口

analysis 把文本切成 Term(分词、过滤、大小写、停用词) `Analyzer` `Tokenizer` `TokenFilter`

document 承载数据的"一行记录" `Document` `Field` `TextField` `StringField`

index 写:建索引、刷盘、合并;读:读倒排、正排、向量 `IndexWriter` `IndexWriterConfig` `DirectoryReader` `LeafReader`

store 抽象磁盘/内存目录,管理索引文件 `Directory` `FSDirectory` `RAMDirectory`

search 查询解析、打分、排序、翻页、聚合 `IndexSearcher` `Query` `TermQuery` `BooleanQuery` `TopDocsCollector`

util 辅助数据结构 `PriorityQueue` `FixedBitSet`


三、核心类速查表(按使用频率)

类 一句话定位

`IndexWriter` 写索引的入口,负责 `addDocument/updateDocument/forceMerge`

`IndexWriterConfig` 控制分词器、合并策略、Codec 等所有写参数

`Analyzer` 把原始文本变成 Token,常用实现 `StandardAnalyzer`

`Document` 一条"记录",内部由多个 `Field` 组成

`Directory` 索引文件存放的抽象目录,`FSDirectory`/`RAMDirectory`

`DirectoryReader` 打开只读视图,可感知实时刷新 `openIfChanged`

`IndexSearcher` 搜索门面,封装打分器、Collector,执行 `search(query, collector)`

`Query` 家族 查询语法树:TermQuery、BooleanQuery、RangeQuery、KnnVectorQuery...

`Collector` 家族 结果收集器:TopDocsCollector、TotalHitCountCollector、自定义聚合

`ScoreDoc` / `TopDocs` 搜索结果载体,含 docID + score + 排序键


四、索引物理结构(对应类)

  • Directory → 一个文件夹 = 一个索引

  • Segment → 每次 flush 产生一个段,对应 `LeafReader`

  • 倒排文件:`.tim/.tip/.doc/.pos/.pay` 由 `PostingsFormat` 管理(如 `Lucene90PostingsFormat`)

  • 正排/列存:`DocValues`(用于排序、聚合)

  • 存储字段:`.fdt/.fdx` 由 `StoredFieldsFormat` 管理


五、一句话总结

> Lucene = Analyzer 分词 + IndexWriter 写段 + DirectoryReader 读段 + IndexSearcher 查段 + Collector 收结果;

所有 API 都围绕 Document-Field / Query-Collector 这两组核心抽象旋转。

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