整理下几篇博客
1 Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和Index文件 (FST详细解析)
https://www.cnblogs.com/forfuture1978/p/3945755.html
2 关于Lucene的词典FST深入剖析
https://www.shenyanchao.cn/blog/2018/12/04/lucene-fst/
FST类似一种TRIE树。
使用FSM(Finite State Machines)作为数据结构
FSM(Finite State Machines)有限状态机: 表示有限个状态(State)集合以及这些状态之间转移和动作的数学模型。其中一个状态被标记为开始状态,0个或更多的状态被标记为final状态。
一个FSM同一时间只处于1个状态。FSM很通用,可以用来表示多种处理过程,下面的FSM描述了《小猫咪的一天》。
总结
FST,不但能共享前缀还能共享后缀。不但能判断查找的key是否存在,还能给出响应的输入output。 它在时间复杂度和空间复杂度上都做了最大程度的优化,使得Lucene能够将Term Dictionary完全加载到内存,快速的定位Term找到响应的output(posting倒排列表)
场景大概有以下:
自动联想:suggester
charFilter: mappingcharFilter
同义词过滤器
hu