![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Lucene
文章平均质量分 95
呼延十
呼延
展开
-
lucene系列(四)DirectMonotonicWriter源码分析
前言 来学习一下DirectMonotonicWriter类的代码. 源码版本: 8.7.0 介绍 先上一下源码注释: Write monotonically-increasing sequences of integers. This writer splits data into blocks and then for each block, computes the average slope, the minimum value and only encode the delta from the原创 2021-01-31 16:19:39 · 312 阅读 · 1 评论 -
lucene系列(三)DirectWriter源码分析
前言 本文学习下 Lucene 在存储大量整数时使用到的编码方法。 介绍 DirectWriter 用 bit 编码方式进行数组压缩的功能,它在整个数组的所有元素都不大的情况下能带来不错的压缩效果。 DirectWriter 是 Lucene 为整型数组重编码成字节数组的工具,它的底层包含一系列编码器,将整型数组的所有元素按固定位长度的位存储。它按 Bit 存储,预留长度过长会浪费空间,短了会因为截断导致错误。因此需要在数组中查找最大值,由它的长度作为存储的长度。 假设有一组数据{4,5,9,0},它们的二原创 2021-01-31 16:13:05 · 254 阅读 · 0 评论 -
Lucene系列(二)int的变长存储与zigzag编码
前言 lucene 代码量还是比较多的,在没有看的很明白的情况下,先写一写新学到的工具类的一些操作吧~也是收获很多。 在 lucene 写入索引文件时,为了节省空间,经常会对数据进行一些压缩,这篇文章介绍一种对 int, long 类型有用的压缩方式。即变长存储。 它在 lucene 中的应用十分广泛,有事没事就用一下,因此为了熟练的理解代码,我们还是来一探究竟吧~ 在 lucene8.7.0 版本的代码中,它没有单独定义成类,可能是因为是一个小的功能点吧~ 对变长数据的写入实现在org.apache.lu原创 2021-01-31 16:04:59 · 501 阅读 · 0 评论 -
Lucene系列(一)什么是Lucene
前言 上一个系列还没有完结,我又来开新坑啦~ 接触搜索/推荐相关工作,也有两年了。工作里对lucene的接触不少,却也不精。最近工作里没有那么忙,因此想通过学习源码的方式,来对lucene进行一个系统的学习。 此外,听闻lucene源码堪称面对对象设计届的典范,也想从中吸收一些代码设计/开发方面的知识。最近老是感觉自己写的代码有问题,想尝试优化却感觉非常吃力,经常一顿操作下来提升的很有限。 lucene简介 以下内容来自维基百科: Lucene是一套用于全文检索和搜索的开放源码程序库,由Apache软件基原创 2021-01-30 18:22:52 · 348 阅读 · 0 评论