Lucene核心知识点
所属分类 lucene
浏览量 1140
信息检索 IR Information Retrieval
倒排索引 高效实现文本查找
分段存储 较少锁的使用 提升读写性能
index document in-memory-buffer segment
DocId (Sequence Number)
Field
不同的字段类型采用不同的索引方式
InvertIndex StoreField DocValues N-dimensional等
Term TermDictionary
Term 由 Field Analyzer(分词)产生
词典数据结构
排序数组 二分查找
HashMap 查找速度快但耗存储空间
跳跃表
FST(finite-state transducer) 更高的数据压缩率和查询效率 ,默认的词典数据结构
写入 类似 LSM
Segment 不可变 合并
flush或commit之前,数据在内存中,不可搜索
近实时搜索的原因
搜索依赖构建的索引(如Term Dictionary)
flush或commit 时才构建索引
DocId Segment内唯一 , 从0递增, 方便压缩优化 ,Segment合并时 可能会变
查询的两阶段
根据Term获取DocId列表
根据DocId查找Doc
数据压缩 Delta策略 ZigZag编码
词典和倒排表分两部分存储
倒排表中存储了文档id,词频,位置等信息
Lucene 主要模块
analysis 词法分析及语言处理,分词,形成存储或者搜索的最小单元Term
index 索引
store 索引的读写
queryParser 语法分析,把查询语句生成Lucene底层可以识别的条件
search 索引搜索工作
similarity 相关性打分和排序
Segment
新增 更新 删除
更新=删除+新增
.del文件
Segment优点
不需要锁
不可变,常驻内存 ,缓存友好
增量创建索引
Segment缺点
数据删除,.del文件标记 ,浪费空间
更新由删除和新增这两个动作组成,数据频繁更新,浪费大量空间
不可变变 ,段太多,资源消耗大,影响查询性能
查询需要对已经删除的数据进行过滤
延迟写,先写内存,然后批量写入磁盘
段被写到硬盘,生成一个提交点,用来记录所有提交后的段信息。
默认一秒,或者内存中的数据量达到某个阈值
Segment合并策略
根据段的大小分组,属于同一组的段进行合并
大段不会合并
mergeFactor 当同一组的段的数量达到此值时开始合并 ,默认值10
SegmentSize
minMergeSize 小于该值的段分到一组,加速小段的合并
maxMergeSize 大于该值的大段不再参与合并
正向信息 反向信息
正向信息合并,例如存储域、词向量、标准化因子等
反向信息合并,例如词典、倒排表等
段合并时,执行删除
lucene flush commit与elasticsearch的refresh flush
elasticsearch中refresh和flush区别
lucene知识点整理
上一篇
下一篇
Lucene7 Index File Formats
lucene二十年
lucene flush commit与elasticsearch的refresh flush
《清单革命》读书笔记
Lucene 查询类型及实例
iotdb 概述