Lucene源码项目结构
Lucene项目每个目录包含的类以及用途:
Analysis
主要用于对query,document的解析,拆解为token
codecs
编码类的包,里面囊括了对各类数据的编码、解码的定义与实现,核心类。
其中有大量的抽象类,也就是只有声明,没有实现。
可根据需求自行设计,基于抽象类来实现一些满足自己需求的类。
简单梳理:
数据维度
lucene将要处理的数据分为以下类
- PostingList 倒排表,
即 term->[doc1, doc3, doc5] 这样的倒排索引数据 - BlockTree
从 term 到 PostingList 的映射关系,就是TermDict。一般这种映射关系用FST这种数据结构表示,其实是一种树形结构,类似于Tier树,Lucene里称为BlockTree。 - StoredField
存储的是原始信息 - DocVelue
键值数据,主要用来加速对字段的排序、筛选 - TermVector
词向量信息,记录不同term的全局出现频率 - Norms
存储Normalisation信息,比如给某些field加权之类 - PointValue
用来加速range Query的信息
行为维度
Writer
Reader
Format 本质是用于唤起Writer和Reader的一种媒介