Lucene学习图解

作者: 达微 | 来源:发表于2018-08-02 10:56 被阅读44次

lucene基本原理
Lucene学习总结之一:全文检索的基本原理
Lucene底层原理和优化经验分享(1)-Lucene简介和索引原理

lucence组成部分:索引构建,索引搜索,索引管理(优化合并段)


image.png image.png

字典和倒排表


image.png

字典的数据结构


image.png

其中可用的有:B+树、跳跃表、FST
  B+树:
              mysql的InnoDB B+数结构


image.png

理论基础:平衡多路查找树
优点:外存索引、可更新
缺点:空间大、速度不够快

跳跃表:


image.png

优点:结构简单、跳跃间隔、级数可控,Lucene3.0之前使用的也是跳跃表结构,后换成了FST,但跳跃表在Lucene其他地方还有应用如倒排表合并和文档号索引。
缺点:模糊查询支持不好

FST
  Lucene现在使用的索引结构


image.png

理论基础: 《Direct construction of minimal acyclic subsequential transducers》,通过输入有序字符串构建最小有向无环图。
优点:内存占用率低,压缩率一般在3倍~20倍之间、模糊查询支持好、查询快
缺点:结构复杂、输入要求有序、更新不易
Lucene里有个FST的实现,从对外接口上看,它跟Map结构很相似,有查找,有迭代:

Lucene索引实现
(本文对Lucene的原理介绍都是基于4.10.3)
  Lucene经多年演进优化,现在的一个索引文件结构如图所示,基本可以分为三个部分:词典、倒排表、正向文件、列式存储DocValues。

image.png

倒排表结构

倒排表就是文档号集合,但怎么存,怎么取也有很多讲究,Lucene现使用的倒排表结构叫Frame of reference,它主要有两个特点:
  1. 数据压缩,可以看下图怎么将6个数字从原先的24bytes压缩到7bytes。


image.png

2. 跳跃表加速合并,因为布尔查询时,and 和or 操作都需要合并倒排表,这时就需要快速定位相同文档号,所以利用跳跃表来进行相同文档号查找。
  这部分可参考ElasticSearch的一篇博客,里面有一些性能测试:
  ElasticSearch 倒排表

正向文件

正向文件指的就是原始文档,Lucene对原始文档也提供了存储功能,它存储特点就是分块+压缩,fdt文件就是存放原始文档的文件,它占了索引库90%的磁盘空间,fdx文件为索引文件,通过文档号(自增数字)快速得到文档位置,它们的文件结构如下:

   image.png

相关文章

  • Lucene学习图解

    lucene基本原理Lucene学习总结之一:全文检索的基本原理Lucene底层原理和优化经验分享(1)-Luce...

  • Lucene的索引文件格式(基于V7_3_0)

    拜读刘超觉先的Lucene学习笔记Lucene学习总结之三:Lucene的索引文件格式(1)、Lucene的索引文...

  • [转]Lucene的索引文件格式

    原文链接Lucene学习总结之三:Lucene的索引文件格式(1)、Lucene的索引文件格式(2)、Lucene...

  • [转]Lucene索引过程分析

    原文链接# Lucene学习总结之四:Lucene索引过程分析(1)、# Lucene索引过程分析(2)、#Lu...

  • lucene 学习文章

    记录几个lucene学习中作为参考非常受用的文章Lucene 近实时搜索

  • [转]Lucene的总体架构

    原文链接# Lucene学习总结之二:Lucene的总体架构,这里做一些摘要并收藏。 Lucene总的来说是:一高...

  • 搜索学习入门--使用LuceneHighlighter高亮显示L

    在上一篇文章搜索学习入门--Lucene初体验(Lucene索引的增删改查)的基础上,我们进行对Lucene检索结...

  • Lucene入门

    参考 Lucene学习总结之一:全文检索的基本原理Lucene就是这么简单Lucene思维导图,让搜索引擎不再难懂...

  • [lucene]Lucene学习1:倒排分析

    基础# 倒排中主要是词典和词频位置等信息,倒排索引的设计要考虑两点:压缩和存取性能,在介绍具体的倒排索引前要明晰L...

  • lucene 6.6 适配

    前言 学习的资料是 lucene 4.10 版本,比较沉旧,查阅最新的 lucene 版本 6.6 的官方文档,整...

网友评论

    本文标题:Lucene学习图解

    本文链接:https://www.haomeiwen.com/subject/yurjvftx.html