lucene源码学习
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源码学习相关推荐
- lucene 源码分析_Lucene分析过程指南
lucene 源码分析 本文是我们名为" Apache Lucene基础知识 "的学院课程的一部分. 在本课程中,您将了解Lucene. 您将了解为什么这样的库很重要,然后了解Lu ...
- Tomcat源码学习(一)
Tomcat源码学习(一) 已有 9159 次阅读 2008-3-13 03:10 |个人分类:Tomcat|系统分类:开发 http://blog.ccidnet.com/home.php?mod= ...
- Shiro源码学习之二
接上一篇 Shiro源码学习之一 3.subject.login 进入login public void login(AuthenticationToken token) throws Authent ...
- Shiro源码学习之一
一.最基本的使用 1.Maven依赖 <dependency><groupId>org.apache.shiro</groupId><artifactId&g ...
- mutations vuex 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...
前言 Vuex源码系列不知不觉已经到了第六篇.前置的五篇分别如下: 长篇连载:Vuex源码学习(一)功能梳理 长篇连载:Vuex源码学习(二)脉络梳理 作为一个Web前端,你知道Vuex的instal ...
- vue实例没有挂载到html上,vue 源码学习 - 实例挂载
前言 在学习vue源码之前需要先了解源码目录设计(了解各个模块的功能)丶Flow语法. src ├── compiler # 把模板解析成 ast 语法树,ast 语法树优化,代码生成等功能. ├── ...
- 2021-03-19Tomcat源码学习--WebAppClassLoader类加载机制
Tomcat源码学习--WebAppClassLoader类加载机制 在WebappClassLoaderBase中重写了ClassLoader的loadClass方法,在这个实现方法中我们可以一窥t ...
- jQuery源码学习之Callbacks
jQuery源码学习之Callbacks jQuery的ajax.deferred通过回调实现异步,其实现核心是Callbacks. 使用方法 使用首先要先新建一个实例对象.创建时可以传入参数flag ...
- JDK源码学习笔记——Integer
一.类定义 public final class Integer extends Number implements Comparable<Integer> 二.属性 private fi ...
最新文章
- SpringBoot使用笔记
- Dynamips与VMware配合搭建网络实验环境
- 用Pytorch给你的母校做一个样式迁移吧!
- STM8控制4位LED数码管显示数字
- MySQL基础之控制台常用命令
- 快速问医生接入云信,医患沟通快速搞定,关键是稳定
- jquery获取当前的节点
- 我对XCode Objective-c Cocoa的简单理解
- python当作为条件表达式时_2019知到Python程序设计基础(山东联盟)结课测验答案...
- python求解在给定递减数组中寻找两个数和等于定值,乘积最小
- 安居客Android项目架构演进
- 一个计算机软件学生的求职简历,计算机学生求职的个人简历模板
- 自己做量化交易软件(28)小白量化实战2--变红买入变绿卖出
- css怎么设置鼠标手势?
- NLP之文本分类方法之基础知识
- 服务器CPU占用率过高问题分析
- DropdownMenu 下拉菜单的使用
- 秋招面/笔试题目集合——06
- matlab如何实现分峰,分峰拟合,将一条曲线分为单独的小峰
- Caused by: java.lang.IllegalArgumentException: Mapped Statements collection already contains valu...
热门文章
- Win10启动VMware虚拟机结果宿主机蓝屏重启
- 手把手教学构建农业知识图谱:农业领域的信息检索+智能问答,命名实体识别,关系抽取,实体关系查询
- 经济学基础(本)【2】
- vue.extend详解
- xmlns, xmlns:xsi, xsi:schemaLocation 解释
- Unity PostProcess Volume
- 利用计算机设计产品,计算机在产品设计的应用论文.docx
- 毕业设计-深度学习的点云分类方法研究
- wgc84 笛卡尔_大地坐标系(WGS84)转空间直角坐标系(笛卡尔坐标系XYZ)
- 韩老师多目标优化:多目标粒子群算法