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. SpringBoot使用笔记
  2. Dynamips与VMware配合搭建网络实验环境
  3. 用Pytorch给你的母校做一个样式迁移吧!
  4. STM8控制4位LED数码管显示数字
  5. MySQL基础之控制台常用命令
  6. 快速问医生接入云信,医患沟通快速搞定,关键是稳定
  7. jquery获取当前的节点
  8. 我对XCode Objective-c Cocoa的简单理解
  9. python当作为条件表达式时_2019知到Python程序设计基础(山东联盟)结课测验答案...
  10. python求解在给定递减数组中寻找两个数和等于定值,乘积最小
  11. 安居客Android项目架构演进
  12. 一个计算机软件学生的求职简历,计算机学生求职的个人简历模板
  13. 自己做量化交易软件(28)小白量化实战2--变红买入变绿卖出
  14. css怎么设置鼠标手势?
  15. NLP之文本分类方法之基础知识
  16. 服务器CPU占用率过高问题分析
  17. DropdownMenu 下拉菜单的使用
  18. 秋招面/笔试题目集合——06
  19. matlab如何实现分峰,分峰拟合,将一条曲线分为单独的小峰
  20. Caused by: java.lang.IllegalArgumentException: Mapped Statements collection already contains valu...

热门文章

  1. Win10启动VMware虚拟机结果宿主机蓝屏重启
  2. 手把手教学构建农业知识图谱:农业领域的信息检索+智能问答,命名实体识别,关系抽取,实体关系查询
  3. 经济学基础(本)【2】
  4. vue.extend详解
  5. xmlns, xmlns:xsi, xsi:schemaLocation 解释
  6. Unity PostProcess Volume
  7. 利用计算机设计产品,计算机在产品设计的应用论文.docx
  8. 毕业设计-深度学习的点云分类方法研究
  9. wgc84 笛卡尔_大地坐标系(WGS84)转空间直角坐标系(笛卡尔坐标系XYZ)
  10. 韩老师多目标优化:多目标粒子群算法