【lucene】advanceshallow就是遍历跳表的,可以看作是跳表的遍历器

一句话总结所有关键点:

  1. `skipTo(target)` 的返回值 不是"跳过的精确文档数",而是上一个间隔已跳过累计数;

  2. `lastDoc` 是 小于 target 的最后一个间隔的最后一个 docID;

  3. `lastChildPointer` 指向 ≥ target 的那个间隔在 posting 列表中的起始文件指针;

  4. Lucene 把 docID 按全局升序排序后,只有第一个存绝对 docID,其余全部存"与前一个的差值";

  5. 这些差值被 128 个一组 block 压缩,但差值链 跨 block 连续,不会因为换块而重置;

  6. 读 block 时给 `base`(上一 block 最后一个绝对 docID),就地累加本 block 128 个 delta,避免从文件头一路算到当前位置,实现 O(1) 定位 + O(128) 解压。

相关推荐
cyh男3 天前
lucene中AutomatonQuery类的作用
lucene
cyh男3 天前
lucene中的PointRangeQuery和PointInSetQuery有什么区别
lucene
cyh男3 天前
为什么ES中不推荐使用wildcard查询
elasticsearch·lucene
渣渣盟5 天前
中文分词技术全解析
搜索引擎·全文检索·lucene
cyh男17 天前
lucene 8.7.0 版本中的倒排索引、数字、DocValues三种类型的查询性能对比
lucene
cyh男19 天前
Lucene 8.7.0 版本中dvd、dvm文件详解
lucene
是犹橐籥19 天前
头歌Educoder答案 Lucene - 全文检索入门
搜索引擎·全文检索·lucene
cyh男20 天前
Lucene 8.7.0 版本中docFreq、totalTermFreq、getDocCount等方法的含义
lucene
cyh男21 天前
Lucene 8.7.0 版本中doc、tim、tip、tmd文件详解
lucene
极限实验室1 个月前
搜索百科(1):Lucene —— 打开现代搜索世界的第一扇门
搜索引擎·lucene