Lucene FST算法(二)
在文章FST(一)(必须先阅读该篇文章)中我们通过一个例子,简单的描述了Lucene是如何使用一个字节数组current[ ]存储FST信息的,为了能更好的理解读取过程,我们需要另外给出例子(差别在于把"mop"改成了"mo"),输入数据以及对应FST的信息如下
String[] inputValues = {"mo", "moth", "pop", "star", "stop", "top"};
long[] outputValues = {100, 91, 72, 83, 54, 55};
图1:
如果用节点跟边的关系来描述图1中的FST信息见下图:
图2:
由图1可以看出FST的两个特性,相同前缀存储和相同后缀存储:
-
相同前缀存储:
- mo、moth的相同前缀"mo"
- stop、star的相同前缀"st"
-
相同后缀存储:
- pop、top的相同后缀"op"
- pop、top、stop的相同后缀"p"
看这里:https://www.amazingkoala.com.cn/Lucene/yasuocunchu/2020/1009/168.html