Lucene Contents

2023-11-10

Lucene核心技术

Lucene7.5.0 vs Lucene 8.7.0

codecs

SIMD(Single Instruction Multiple Data)

索引文件

DocValues

  • BinaryDocValues
  • SortedSetDocValues
  • SortedDocValues
  • SortedNumericDocValues
  • NumericDocValues
  • BinaryDocValues-8.7.0

索引文件之cfs&cfe

索引文件之segment_N

索引文件之fnm

索引文件之si

索引文件之fdx&fdt

索引文件之tvx&tvd

索引文件之liv

索引文件之dim&dii

索引文件之tim&tip

索引文件之doc

索引文件之pos&pay

索引文件之nvd&nvm

索引文件之fdx&fdt&fdm-8.6.0

索引文件之 kdd&kdi&kdm-8.6.0

索引文件之tvd&tvx&tvm-8.7.0

Index

(1) 构造IndexWriter对象

(2)执行段的合并

(3)段的合并策略

  • LogMergePolicy
  • TieredMergerPolicy

(4)段的合并调度MergeScheduler

(5) 索引文件的合并

  • 索引文件合并之 fdx&fdt&fdm

  • 索引文件合并之 fdx&fdt&

(6) 文档的增删改

(7)近实时搜索NRT

(8) 文档提交之commit

(9) 文档提交之flush

(10) SegmentReader

(11) 索引文件的生成

(12) 软删除softDeletes

(13) ReaderPool

(14) 索引文件的载入

(15) 内存索引

(16) 强制合并 ForceMerge

(17) 段内排序IndexSort

Search

查询原理

Collector

查询缓存LRU QueryCache

FieldComparator

文档号合并(SHOLD)

文档号合并(MUST)

BooleanQuery

Store

  • 索引文件锁LockFactory

Directory

索引文件的读取

范围域 rangeField

block-max-WAND

查询topN的优化 之 NumericDocValues

IndexOrDocValuesQuery

DisjunctionMaxQuery

GeoQuery

PointRangeQuery

IndexSortSortedNumericDocValuesRangeQuery

段的多线程查询

BulkScorer

Util

RoaringDocIdSet

Bkd-tree

Automaton

FixedBitSet

ByteRefHash

IntBlockPool

RamUsageEstimator

IndexedDISI

文档号搜集器DocIdSet

压缩存储

LZ4 algorithm

FST

BulkOperationPacked

去重编码 dedupAndEncode

PackedInts

DirectWriter & DirectReader

DirectMonotonicWriter & Reader

Run Length游标编码

Other

倒排表的数据结构

  • TermVector倒排表
  • 倒排表

SortedDocValues VS BinaryDocValues

两阶段遍历(TwoPhaseIterator)

查找表(lookup table)

off-heap/on-heap

TermRangeQuery

TermsEnum

  • TermsEnum(一)
  • PostingsEnum(一)

删除队列DeleteQueue

GeoHash编码

DocIdSetIterator

ImpactsDISI

Scorer

##