Lucene使用FST算法以字节的方式来存储所有的Term,重复利用Term Index的前缀和后缀,使Term Index小到可以放进内存,减少存储空间,不过相对的也会占用更多的cpu资源。FST在Lucene4.0以后的版本中用于快速定位所查单词在字典中的位置。

Finite StateTransducers,简称 FST,通常中文译作有穷状态转换器,在语音识别和自然语言搜索、处理等方向被广泛应用。

FST的功能类似于字典,可以表示成FST<Key, Value>的形式。其最大的特点是,可以用O(length(key))的复杂度来找到key对应的value,也就是说查找复杂度仅取决于所查找的key长度。

假设我们现在要将以下term index映射到term dictionary的block序号:

“cat” —— > 5

“deep” —— > 10

“do” —— > 15

“dog” —— > 2

“dogs” —— > 8

最简单的做法就是定义个Map<string, integer="">,大家找到自己的位置对应入座就好了,但从内存占用少的角度想想,有没有更优的办法呢?答案就是FST。

对于经典FST算法来说,要求Key必须按字典序从小到大加入到FST中。上面的例子中key已经排好序了。

按照以下步骤建立FST:

ElasticSearch实战(五)-FST有限状态转换算法(索引数据压缩算法)相关推荐

  1. Elasticsearch实战(五)-倒排索引与分词

    1 倒排索引 1.1 书的目录和索引 正排索引即目录页,根据页码去找内容 倒排索引即索引页,根据关键词去找对应页码 1.2 搜索引擎 正排索引 文档Id =>文档内容.单词的关联关系 倒排索引 ...

  2. Python读取多个excel文件(删除字段、数据格式转换、dataframe多表合并)并写入ElasticSearch实战(自动创建索引、写入ElasticSearch、探索性数据分析)

    Python读取多个excel文件(删除字段.数据格式转换.dataframe多表合并)并写入ElasticSearch实战(自动创建索引.写入ElasticSearch.探索性数据分析) 目录

  3. Elasticsearch实战-实现Hotel索引库的自动补全、拼音搜索功能

    一.实现思路 1.修改hotel索引库结构,设置自定义拼音分词器 2.修改索引库的name.all字段,使用自定义分词器 3.索引库添加一个新字段suggestion,类型为completion类型, ...

  4. python将ElasticSearch索引数据读入pandas dataframe实战

    python将ElasticSearch索引数据读入pandas dataframe实战 # 导入基础包和库 import pandas as pdpd.set_option('display.max ...

  5. 【Elasticsearch】es FST (Finite State Tranduer) 有限状态转换器

    1.概述 FST 有限状态转换器 有一篇博客我有翻译到这篇博客. 参考:[elasticsearch]You AutoComplete Me FST数构建的树如下 演示网站地址:http://exam ...

  6. elasticsearch实战三部曲之一:索引操作

    从本章开始,我们一起来实战elasticsearch,熟悉相关操作和命令,为后续的深入学习打好基础: 三部曲介绍 整个系列由以下三篇文章构成: 索引操作实战,也就是本文的主要内容: 文档操作实战: 搜 ...

  7. Elasticsearch实战(五)---高级搜索 Match/Match_phrase/Term/Must/should 组合使用

    Elasticsearch实战-Match/Match_phrase/term/filter 及Must should 组合并列使用 文章目录 Elasticsearch实战-Match/Match_ ...

  8. kinana 清空索引数据_(Elasticsearch)实战Elasticseartch、Logstash、Kibana

    1.Elasticsearch的堆栈内存设置建议 image.png 2.elasticsearch.yml设置中文分词器: /usr/share/elasticsearch/bin/elastics ...

  9. Elasticsearch实战(十五)---查询query,filter过滤,结合aggs 进行局部/全局聚合统计

    Elasticsearch实战-查询query,filter过滤,结合aggs 进行局部/全局聚合统计 文章目录 Elasticsearch实战-查询query,filter过滤,结合aggs 进行局 ...

最新文章

  1. [bzoj1064][Noi2008]假面舞会
  2. 可变形卷积网络--Deformable Convolutional Networks
  3. 记于2014-12-9
  4. html实现拖拽排序,简单的jquery拖拽排序效果实现代码
  5. (王道408考研操作系统)第五章输入/输出(I/O)管理-第一节7:缓冲区管理
  6. python exe enter退出,Python程序退出处理程序(atexit)
  7. Mysql:日志管理:二进制事务日志
  8. 2018计算机一级选择题知识题库,计算机二级选择题题库 2018年计算机一级《WPS》选择题练习及答案...
  9. 多元统计分析最短距离法_多元统计分析复习整理
  10. Java 使用 Redis | 菜鸟教程
  11. 你理解大话西游片尾那句“他好像一条狗”吗?
  12. 美国人口与种族变迁史
  13. 电脑版微信多开,最详细教程没有之一
  14. nginx中报403 Forbidden问题
  15. Python爬虫 | 爬取贝壳找房8万+二手房源,看看普通人在北京买房是有多难!
  16. 数据可视化--物流大数据服务平台
  17. XILINX Ultrascale/Ultrascale+ 高速收发器时钟MGTHREFCLK原语调用
  18. CCNA思科的一些基础知识
  19. Android数字华容道代码,Android源码 之《最强大脑》“数字华容道”
  20. P44 单行子查询案例分析

热门文章

  1. 学习springMVC时遇到的第一个异常:TemplateInputException
  2. 《上海市服务业发展引导资金使用和管理办法》沪府规〔2022〕22号
  3. MySQL函数及提权
  4. 如何在python中一次性输入多个参数_python如何利用input函数输入多个参数?
  5. 腾讯微云如何自动备份照片?
  6. java自动化部署平台_开源Java自动化部署平台JDeploy
  7. 2023-5-29第二十九天
  8. UDP和TCP的区别
  9. 【纯干货】微信支付接入攻略—JAVA代码分享
  10. Acrobat DC 2022安装报错:无法安装服务Acrobat Update Service的解决方法