-
TOP
前导
简单说明 博客中的Lucene版本是7.5.0,如果是其他版本的会在文章标题体现。 如果你喜欢我的文章,可以下载每篇文章结尾的附件,附件中的MD文件,强烈推荐使用Typora阅读。 博客中所有关于Lucene文章的代码大家可以在我的GitHub中... -
NumericUtils(Lucene 9.8.0)
Lucene中用BKD存储的数值无论是哪种类型(long,int,float,double,BigInteger),为了便于使用相同的代码逻辑中实现BKD的遍历以及优化存储,都统一使用字节数组byte[]描述原值(original value)并... -
索引文件之vec&vem&vex(Lucene 9.8.0)
本篇文章将介绍Lucene中向量搜索相关的索引文件。当前版本中由三个索引文件,即文件后缀名为.vec、.vex、.vem的文件,文件中包含的内容主要包括图的分层信息,每一层中节点的编号,向量值,相连的邻居节点等信息。 向量搜索的实现基于这篇论... -
Scorer(Lucene 9.6.0)
阅读文本之前,建议先看下文章ImpactsDISI,有助于理解。先直接给出Scorer在Lucene中的注释: 图1: 图1中的注释已经几乎不能完全用于理解Scorer类,因为这个类经过十几年的迭代,注释却没有保持更新,甚至部分描述还不准确... -
ImpactsDISI(Lucene 9.6.0)
在文章BulkScorer(一)中,我们介绍了抽象类DocIdSetIterator类,而ImpactsDISI是DocIdSetIterator的其中一种实现,当排序规则为文档打分值时,使得在查询TopN遍历文档时,可以跳过那些不具备竞争力的文... -
BulkScorer(二)(Lucene 9.6.0)
本篇文章我们继续介绍BulkScorer的其他子类,下图为BulkScorer主要的几个子类,其中DefaultBulkScorer的介绍可以见文章BulkScorer(一): 图1: ReqExclBulkScorer 实现逻辑 Re... -
BulkScorer(一)(Lucene 9.6.0)
本篇文章介绍在查询阶段,BulkScorer相关的知识点,在查询流程中的流程点如下红框所示: 图1: 父类BulkScorer BulkScorer类的定位是一个对满足查询条件的所有文档号进行收集的最初入口。在执行完该类的方法一后,Luc... -
段的多线程查询(一)(Lucene 9.6.0)
前段时间有个朋友问到我:对多个段进行查询时,为什么在定义IndexSearcher时使用了Executor后,相比较单个线程轮询方式查询相同的多个段,查询速度并没有提升,有时候还下降了?本篇文章会介绍多线程查询中的一些知识点,给与大家在解决性能问... -
IndexSortSortedNumericDocValuesRangeQuery (一)(Lucene 9.0.0)
我们先通过IndexSortSortedNumericDocValuesRangeQuery类的注释了解下这个Query。 图1: 图1中红框标注的注释说到,范围查询可以通过利用Index Sort来提高查询效率。如果查询条件的域field...
明月几时有 把酒问青天|
不知道天上宫阙 今夕是何年|