整理以下博客
1Lucene 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同时只有一个状态。FSM它非常通用,可以用来表示各种处理过程。FSM描述小猫的一天。
总结 FST,不仅可以共享前缀,还可以共享后缀。不仅可以判断搜索key是否存在也可以给出响应输入output。 它最大限度地优化了时间复杂性和空间复杂性,使之Lucene能够将Term Dictionary内存完全加载,定位快Term找到响应的output(posting倒排列表)
场景如下:
自动联想:suggester charFilter: mappingcharFilter 同义词过滤器 hunspell拼写检查词典
3Lucene BKD树-动态磁盘优化BSP树
https://www.shenyanchao.cn/blog/2018/12/04/lucene-bkd/
4FST(一)Lucene 8.4.0
flag ??由于构建FST之后,所有的信息都存在current[ ]在数组中,这个过程实际上是一个编码过程,需要在构建阶段生成flag,在阅读阶段,根据flag解码值
https://www.amazingkoala.com.cn/Lucene/yasuocunchu/2019/0220/35.html
链接备份:down
5FST(二)(Lucene 8.4.0)
fst的解析
https://www.amazingkoala.com.cn/Lucene/yasuocunchu/2020/1009/168.html
6 lucene字典实现原理
https://www.cnblogs.com/LBSer/p/4119841.html
下面简单描述一下FST结构过程(动态工具演示:http://examples.mikemccandless.com/fst.py?terms=&cmd=Build it!)
许多数据结构可以完成字典功能,总结如下。
数据结构 | 优缺点 |
排序列表Array/List | 采用二分法搜索,不平衡 |
HashMap/TreeMap | 性能高,内存消耗大,几乎是原始数据的三倍 |
Skip List | 跳跃表可以快速找到单词lucene、redis、Hbase均有实现。相对于TreeMap特别适用于高并发场景(Skip List介绍) |
Trie | 适用于英文词典。如果系统中有大量字符串,且这些字符串基本上没有公共前缀,则相应trie树将非常消耗内存(数据结构)trie树) |
Double Array Trie | 适用于中文词典,内存占用小,很多分词工具都采用这种算法(深入双数组Trie) |
Ternary Search Tree | 每一棵三叉树node有三个节点,具有节省空间和快速查询的优点(Ternary Search Tree) |
Finite State Transducers (FST) | 有限状态转移机,Lucene 4实现开源,广泛使用 |
7Lucene学习总结七:Lucene搜索过程分析(5)
https://www.cnblogs.com/forfuture1978/archive/2010/04/04/1704258.html
在得到了Scorer对象树以及SumScorer对象树后,便是倒排表的合并以及打分计算的过程。
8腾讯万亿级 Elasticsearch 提高技术解密效率
https://zhuanlan.zhihu.com/p/146083622
9Lucene FST
https://blog.csdn.net/zx2011302580235/article/details/88594342
Lucene-FST-1 齐天英才
https://zhuanlan.zhihu.com/p/354203255
时间序列数据库的秘密 (2)-索引
https://www.infoq.cn/news/database-timestamp-02
总结:配合官方文档看更省事
附录:
霍夫曼树https://www.bilibili.com/video/BV1MK411j7CR
霍夫曼编码
https://www.bilibili.com/video/BV1ke411s7Nk?from=search&seid=8123455040366095459
https://www.bilibili.com/video/BV1ri4y1t7VH?from=search&seid=8123455040366095459