Apache Lucene 是 Elasticsearch 和 Solr 等搜索引擎的核心。为了在海量数据下实现毫秒级的搜索响应,Lucene 在底层使用了多种极其精妙的数据结构。 你提到的 FST、SkipList 和 BKD Tree 分别解决了倒排索引中不同环节的性能瓶颈。 以下是这三种核心数据结构的详细深度解析: --- 1. FST (Finite State Transducer) - 有限状态传感器 应用场景:词典索引 (Term Index) 在倒排索引中,我们需要根据关键词(Term)找到对应的文档 ID 列表(Posting List)。 Term Dictionary (.tim):存储了所有的 Term,按字典序排列。 Term Index (.tip):为了快速在 Dictionary 中定位 Term,需要一个索引。 早期 Lucene 将 Term Dictionary 全部加载到内存,但随着数据量增大,内存会爆。后来引入了 FST 作为 Term Index,它常驻内存(或堆外内存),用于快速定位 Term 在磁盘上的大概位置。 FST 的核心原理...