Lucene FST算法

这篇博客不深入解释FST算法概念,而是通过一个实例介绍如何在Lucene中构建FST。文章引用了其他网友的资源并进行了扩展,详细阐述了构建过程中涉及的current数组、Node和Arc的概念,以及它们的状态转换。同时,解释了Arc的label、target和output字段的意义,以一个具体的输入示例展示了附加值的存放位置。
摘要由CSDN通过智能技术生成

FST(Finite State Transducer)算法的概念在这篇博客中并不涉及,网上有太多的资料啦,写的都非常的不错。这里推荐这位网友的介绍:https://www.shenyanchao.cn/blog/2018/12/04/lucene-fst/ 。如果链接失效了,可以看附件中的副本。本文中,我们基于一个例子来介绍在Lucene中如何构建FST。感谢网友关新全的分享,基于他的分享使得我在看源码的时候事半功倍,在此基础上,增加一些更加贴近源码的内容。同样的,关新全同学分享的文章在附件中。

准备工作

  为了便于理解,先介绍几个概念。

current[ ]数组

  构建FST后生成的信息都最终保存到字节数组current[ ]数组中,即生成FST的最终结果就是该数组。

Node(节点)、Arc(弧、边)

  在下文的介绍中使用节点跟弧(边),即有向无环图的概念来描述生成的过程,Node之间使用一个Arc连接,一个Node跟一个或多个Node连接。

  Node还具有两种状态:UnCompiledNode和CompiledNode。在源码中,使用两个对象来描述这两种状态,如下所示:

图0:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值