首页  

Lucene核心知识点     所属分类 lucene 浏览量 955
信息检索 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 概述