- 博客(7)
- 资源 (3)
- 收藏
- 关注
原创 Lucene 索引文件的生成(二十二)之nvd&&nvm
在执行flush()的过程中,Lucene会将内存中的索引信息生成索引文件,本篇文章继续介绍索引文件.nvd&&.nvm,其生成的时机点如下图红色框标注:图1: 图1的流程图属于Lucene 7.5.0,在Lucene 8.4.0中同样适用,该流程图为flush()过程中的一个流程点,详情见文章文档提交之flush(二)。 生成索引文件.nvd&&.nvm的目的在于存储normValue值以及文档号,我们先了解下在索引阶段(index phase),Luc
2020-08-28 15:48:58 376
原创 Lucene Automaton(三)
在文章Automaton(二)中我们根据图1的例子生成了图2的转移图以及转移图对应在源码中的描述方式,即状态(state)、转移(transition)函数两个数组,如图3所示:图1:图2:图3: 如果给定一个term,它的最后一个字符作为输入字符,随后在某个状态下,能根据某个转移函数找到下一个状态,并且该状态为可接受状态,那么term是被DFA接受的,其中输入字符、状态、转移函数、DFA的概念见文章Automaton的介绍。 根据图3的两个数据结构,用肉眼已经可以判断出
2020-08-24 09:47:36 167
原创 Lucene 索引文件的读取(十一)之tim&&tip
在上一篇文章索引文件的读取(十)之tim&&tip中我们遗留了一个问题: 为什么要根据是否达到阈值使用不同的处理方式: 这个问题可以分解为两个小问题:问题一:为什么达到阈值后不使用BooleanQuery的方式做文档号的收集 问题二:为什么未达到阈值使用BooleanQuery的方式做文档号的收集处理方式 这两种处理方式的不同之处就在于如何根据每个term对应的文档号集合,并从这些集合中获取满足查询条件的文档号集合。未达到阈值 未达到阈值的情况下,会根据
2020-08-19 17:40:02 181
原创 Lucene 索引文件的读取(十)之tim&&tip
本文承接文章索引文件的读取(九)之tim&&tip,继续介绍剩余的流程点,先给出流程图:获取满足TermRangeQuery查询条件的term集合的流程图图1:收集Term图2: 在文章索引文件的读取(九)之tim&&tip中我们说到,在查询期间,满足查询条件的term数量未达到阈值(默认值16)跟达到阈值后的处理方式是不同的。未达到阈值 当满足查询条件的term数量未达到阈值(默认值16),会将TermRangeQuery转变为Boo
2020-08-12 18:51:27 269
原创 Lucene 索引文件的读取(九)之tim&&tip
本文承接文章索引文件的读取(八)之tim&&tip,继续介绍剩余的流程点,先给出流程图:获取满足TermRangeQuery查询条件的term集合的流程图图1:获取迭代器IntersectTermsEnum图2: IntersectTermsEnum类继承于抽象类TermsEnum,TermsEnum在Lucene中到处可见,它封装了一个段中term的相关操作,下面罗列了TermsEnum类中的几个常用/常见的方法:TermsEnum判断段中是否存在某
2020-08-10 18:38:30 319
原创 Lucene 索引文件的读取(八)之tim&&tip
本文承接文章索引文件的读取(七)之tim&&tip,继续介绍剩余的流程点,先给出流程图:获取满足TermRangeQuery查询条件的term集合的流程图图1:BlockTreeTermsReader 在上一篇文章中,我们已经介绍了当前流程点BlockTreeTermsReader,并且提到在生成FieldReader期间,会采用on-heap/off-heap两种导入模式(loadMode)来获取所有域的FST的主要信息,但是没有说明Lucene是如何选择这两种导入模
2020-08-05 15:26:48 509
原创 Lucene 索引文件的读取(七)之tim&&tip
本篇文章开始介绍索引文件tim&&tip的读取,通过TermRangeQuery的例子来介绍如何从索引文件.tim&&.tip中获取满足查询条件的所有term。 为了便于介绍,使用了文章Automaton(二)中提供的例子:图1: 结合图1的例子,获取满足查询条件(第79行代码)的所有term的过程可以简单的用一句话来描述:根据域名"content",从索引文件.tim&&.tip中获取该域对应的term集合,随后遍历集合中的每一个term
2020-08-04 19:31:35 569
Lucene DocValues介绍
2019-04-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人