1.官网地址

https://lucene.apache.org/core/9_1_0/index.html

2. lucene源码结构

https://juejin.cn/post/6844903736016371725
使用tree命令查看lucene源码结构

#core目录下
chenyuxi@chenyuxideMacBook-Pro lucene % tree -L 1
.
├── analysis #用于文本分析
├── codecs #提供了对倒排索引结构的编码和解码的抽象,可以根据应用选择不同的实现
├── document #提供了一个简单的Document类
├── geo #地理信息
├── index #提供两个类,IndexiWriter:创建文档并将其添加到索引 IndexReader:访问索引中的数据
├── internal
├── package-info.java
├── search #提供数据结构来表示查询。提供QueryParser来从字符串或者xml生成查询结构
├── store # 定义了用于存储持久性数据结构的抽象类Directory。试图有效地使用操作系统磁盘缓冲区缓存
└── util #工具类

3.index目录

官网给了这样的解释

DocValues字段有时被称为列或列跨度字段,类似于关系数据库术语,其中文档被视为行,字段和列。DocValues 字段存储每个字段的值:每个文档的值保存在单个数据结构中,提供给定 docid 的字段值的快速、顺序查找。这些字段用于高效的基于值的排序和分面,但它们对过滤没有用处。

每一个文档在存储时候,可以设定是否为某个字段存储DocValue,而es是默认是每个字段都开启的。DocValue用于快速、顺序查找。所以排序使用的是DocValue这点是正确的。
下面来探索下DocValue的各种数据结构和的如何使用在顺序查找的。
官网的 DocValue api
https://lucene.apache.org/core/9_1_0/core/org/apache/lucene/index/DocValues.html

可以从源码里找到这个类

org.apache.lucene.index.DocValues

看其他网友的文章说DocValues有五种,我以为这些不同类型的DocValue都是直接继承DocValues,但实际不是 DocValues是一个final类型的类,不能被继承。
整理下五种DocValue

BinaryDocValues
NumericDocValues
SortedDocValues
SortedNumericDocValues
SortedSetDocValues

找到了一篇写docvalue很好的博客:https://www.amazingkoala.com.cn/Lucene/DocValues/2019/0409/46.html
先mark住,明天开始跟着他的源码一起看下。
他的源码注释:https://github.com/luxugang/Lucene-7.5.0/blob/master/solr-7.5.0/lucene/core/src/java/org/apache/lucene/codecs/lucene70/Lucene70DocValuesConsumer.java

lucene源码学习相关推荐

  1. lucene 源码分析_Lucene分析过程指南

    lucene 源码分析 本文是我们名为" Apache Lucene基础知识 "的学院课程的一部分. 在本课程中,您将了解Lucene. 您将了解为什么这样的库很重要,然后了解Lu ...

  2. Tomcat源码学习(一)

    Tomcat源码学习(一) 已有 9159 次阅读 2008-3-13 03:10 |个人分类:Tomcat|系统分类:开发 http://blog.ccidnet.com/home.php?mod= ...

  3. Shiro源码学习之二

    接上一篇 Shiro源码学习之一 3.subject.login 进入login public void login(AuthenticationToken token) throws Authent ...

  4. Shiro源码学习之一

    一.最基本的使用 1.Maven依赖 <dependency><groupId>org.apache.shiro</groupId><artifactId&g ...

  5. mutations vuex 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...

    前言 Vuex源码系列不知不觉已经到了第六篇.前置的五篇分别如下: 长篇连载:Vuex源码学习(一)功能梳理 长篇连载:Vuex源码学习(二)脉络梳理 作为一个Web前端,你知道Vuex的instal ...

  6. vue实例没有挂载到html上,vue 源码学习 - 实例挂载

    前言 在学习vue源码之前需要先了解源码目录设计(了解各个模块的功能)丶Flow语法. src ├── compiler # 把模板解析成 ast 语法树,ast 语法树优化,代码生成等功能. ├── ...

  7. 2021-03-19Tomcat源码学习--WebAppClassLoader类加载机制

    Tomcat源码学习--WebAppClassLoader类加载机制 在WebappClassLoaderBase中重写了ClassLoader的loadClass方法,在这个实现方法中我们可以一窥t ...

  8. jQuery源码学习之Callbacks

    jQuery源码学习之Callbacks jQuery的ajax.deferred通过回调实现异步,其实现核心是Callbacks. 使用方法 使用首先要先新建一个实例对象.创建时可以传入参数flag ...

  9. JDK源码学习笔记——Integer

    一.类定义 public final class Integer extends Number implements Comparable<Integer> 二.属性 private fi ...

最新文章

  1. 阿里某员工:发完年终奖后就离职,工作让我心力交瘁
  2. liunx检查与安装软件包
  3. 计算机系统的储存器结构
  4. Google Guava Cache 移除监听器
  5. 轻松学习JavaScript十七:JavaScript的BOM学习(二)
  6. 1 python基础
  7. 荣登2019中国“十佳大数据案例”,腾讯大数据再获国家认可
  8. 项目启动正常,访问网页500怎么办?【思考问题要全面,小问题或许就是问题的关键,小本本记下来!!!】
  9. CKFinder根据用户设置权限,不同用户有自己的私有的、独立的文件夹
  10. docker 容器安装conposer_docker和php:将依赖项(composer)放入容器中
  11. 2021年香水品牌社媒营销分析报告
  12. ABBYY FineReader中的OCR选项怎样运用好
  13. SkyEye:航空发动机控制系统仿真
  14. SQLi LABS Less-26 联合注入+报错注入+布尔盲注+时间盲注
  15. 【音乐欣赏】《Sunflower》 - Post Malone / Swae Lee
  16. [内附完整源码和文档] 基于Java的高校科研管理系统
  17. 从零开始的立绘拆包教程
  18. Stm32f103的can模块配置和调试
  19. CentOS 6.9下安装PostgreSQL
  20. python 静态网站生成_最全的静态网站生成器(开源项目)

热门文章

  1. 全球多媒体软件行业调研及趋势分析报告
  2. 英国爵位的头衔和誉称
  3. 电容(3)电解电容储能篇
  4. pgsql serial自增序列用法
  5. Springboot配置文件随机生成内容
  6. HTML服务器推送技术简介
  7. Sklearn Impute SimpleImputer 处理缺失值
  8. 2022熔化焊接与热切割复习题模拟考试平台操作
  9. 2021年熔化焊接与热切割考试资料及熔化焊接与热切割考试技巧
  10. debian 编译linux内核源码,安装debian总结以及编译linux内核