如同磁铁吸引四周的铁粉,热情也能吸引周围的人,改变周围的情况。

关于倒排表和FST表的问题

Elasticsearch | 作者 Charele | 发布于2021年06月22日 | 阅读数:1284

它们是一回事吗?
经常看到这两个词,有点晕了,
如果不是,查询中用的是哪个?两个都用吗?

你的问题补充太简单了,一个详细的问题描述能够让大家更快的帮助你,请继续完善问题描述!
你的问题补充太简单了,一个详细的问题描述能够让大家更快的帮助你,请继续完善问题描述!
已邀请:

Ombres

赞同来自:

据个人理解倒排表可能是直译,指posting list ,存储文章id、词频、位置
fst是词典的存储结构
 
学习lucene推荐大神的博客https://www.amazingkoala.com.cn/

rimutuyuan_

赞同来自:

我理解词典不等于fst   词典就是单纯的存储term的大数组,数组的每一个value对应一个posting list的内存地址的指针,lucene会对词典做一个索引,这个索引的数据结构就是fst。

yuechen323 - 晨儿哥

赞同来自:

一个文档, 经过分词以后, 所有的分词也就是 term 会有一个独立的结构, 而 term 对应的 docId set 是另一个数据结构, 而不是一般人认为的 HashMap<term, List<DocId>>
 
存 term 的结构就是  fst, 你搜索的时候, 现在  fst 中找到 term,  然后通过 term 找到 DocId set 
 
简单的说, 当所有  term 对应的 docId set 都有了以后,  最后做一个交集就是你的搜索结果

zmc - ES PAAS、JuiceFS

赞同来自:

按照存储的地方来理解可能更清晰一点:
1.倒排索引理解来说就是一组 k:v ,k是词元,例如“中国”,v是文档的编号,这个结构是存在磁盘的(磁盘就会有io,多次读取效率肯定低,所以在这个索引的结构上再加一层前缀索引,用来快速定位倒排索引的k,这个结构放在内存)
2.FST是一个存储的数据结构(字典树的升级版,为了减小内存空间),FST存的实际上是前缀索引,常驻内存
3.不走缓存的情况下,查询会先在内存找,定位到磁盘的倒排表,再去磁盘取doc

要回复问题请先登录注册