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:

Lucene FST算法(二)

  如果用节点跟边的关系来描述图1中的FST信息见下图:

图2:

Lucene FST算法(二)

  由图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