
lucene
文章平均质量分 68
spring-hz
a programming engineer
展开
-
lucene增量编解码与单调性
目录编码原理 新吸收了个单词 Monotonic(单调的),MonotonicBlockPackedWriter和MonotonicBlockPackedReader类主要用于对于单调递增的数据进行编解码。 举个例子,现在有一批数据100个,是单调递增的,首元素是Interger.MAX_VALUE-88888,后面每个元素比前一个元素大1-10之间,如果不进行压缩编码的话,需要100*4=400个字节。 如果编码的话,如果按照增量编码的话,基准元素需要4字节(最小元素,也是首元素), 100个源数据都用增原创 2021-08-07 18:44:46 · 376 阅读 · 0 评论 -
PackedInts Reader + Writer
PackedInts.Reader Reader定义了如何解码的过程,其子类Mutable还附加定义了设置源数据的过程。 大的层面编解码存在紧凑型和对齐型两种方式,对齐型速度更快,但是存在空间浪费。 相关文章原创 2021-08-07 14:54:06 · 181 阅读 · 0 评论 -
你的java对象占用了多少内存?
目录Java对象内存结构相关文档 Java对象内存结构 没什么可说的,可查看下方的相关文档Java对象的内存布局。 只是需要多补充一个知识点,对象头(object header) 本身就是要求8字节对齐的,而不仅仅是object整个对象要求8字节对齐。 相关文档 Java对象的内存布局 RamUsageEstimator hotspot ...原创 2021-08-07 11:46:47 · 695 阅读 · 0 评论 -
lucene工具包packed概述
目录包类结构 lucene 中org.apache.lucene.util.packed包主要提供了高效压缩int(或者long)数组和解压的方法,以便压缩索引文件大小,以及快速读取索引文件内容。 包类结构原创 2021-07-24 23:47:48 · 453 阅读 · 0 评论 -
nvd、nvm索引文件的生成
nvd, nvm文件主要描述的是索引阶段每个Field的域标准化值。 nvd 参考 -nvd&&nvm原创 2021-07-10 22:52:12 · 581 阅读 · 0 评论 -
SmallFloat编解码
目录longToInt4 longToInt4 public static int longToInt4(long i) { if (i < 0) { throw new IllegalArgumentException("Only supports positive values, got " + i); } // 表达i所需要的bit个数 int numBits = 64 - Long.numberOfLeadingZeros(i); if原创 2021-07-09 21:26:50 · 178 阅读 · 0 评论 -
ForUtil的原理与使用
目录原理使用参考 lucene 中的倒排索引DocId压缩工具类,尽量将一组连续的int类型的docId压缩存储。 原理 看了源码中的forUtil.encode的代码,着实看不太懂,等待大佬指教。 // Inspired from https://fulmicoton.com/posts/bitpacking/ // Encodes multiple integers in a long to get SIMD-like speedups. // If bitsPerValue <= 8 then原创 2021-07-04 14:13:56 · 176 阅读 · 0 评论 -
lucene FST
FST相关的文章很多,这里就不再讲解了,将网上看到的比较好的文章,记录下来。 关于Lucene的词典FST深入剖析 FST(一)Lucene 8.4.0原创 2021-06-12 21:54:49 · 133 阅读 · 0 评论 -
字符编码分析
目录字符编码案例Binary string comparison with UTF-16相关文章 字符编码案例 从unicode字符百科上随机找到一个字符 ????,其code Point为U+1F600, codePoint的范围为0x0000到 100000。 其编码结果如下: 这里只做一个基本的解释,具体原因参考其他资料。 uft-8 0x1F600用utf-8表示,需要4个字节,所以binary列 第一个11110xxx,4个连续的1表示表示需要4个字节表示,后面每个字节以10开头,将0x1F原创 2021-06-11 23:01:44 · 575 阅读 · 0 评论 -
lucene系列文章导航
工具类 FutureArrays原创 2021-06-06 23:56:20 · 133 阅读 · 0 评论 -
lucene工具类FutureArrays
lucene7.x 引入,数组处理工具类。方法大多与与jdk 9 中Arrays的方法相同。在java 8的环境下,lucene仍然使用此类。当lucene的后续发行版本最低要求使用jdk9时,该类将移除,直接使用jdk9的Arrays类,功能一致。 equals方法比较两个字节数组 /** * Behaves like Java 9's Arrays.equals * @see <a href="http://download.java.net/java/jdk9/docs/api/原创 2021-06-06 23:54:34 · 361 阅读 · 0 评论 -
lucene内存建立倒排索引分析
目录基本知识示例与分析总结参考 本文基于lucene 8.8.2,总体介绍了倒排索引的写入过程 基本知识 基本可以参考倒排表上这篇文章。 示例与分析 测试源码见github /** * 测试只增加倒排索引 */ @Test public void testCreateInvertFieldDocIndex() throws IOException, URISyntaxException { IndexWriter writer = getIndexWr原创 2021-06-05 23:09:47 · 502 阅读 · 0 评论 -
文档相关性
目录tf-idf参考 tf-idf TF-IDF(term frequency–inverse document frequency)词频-逆文档频率。 从感性的角度看,一个词在一篇文档中出现的频率越高,则相关性越高,词频(tf)就越高,相关性也越高。 但是,如果该词在所有文档中出现的频率也很高,则说明该词很普遍,区分度没那么高,文档频率高,逆文档频率(idf)低,相关性就低。 最终已 tf * idf 综合起来评估相关性。 参考 百度百科 ...原创 2021-05-04 17:43:20 · 367 阅读 · 0 评论 -
lucene analyzer
参考 关于Tokenizer与TokenFilter的区别 官网介绍原创 2021-04-24 16:29:26 · 181 阅读 · 0 评论