文档章节

谈谈lucene的DocValues特性之NumericDocValuesField

F
 FAT_mt
发布于 05/22 22:01
字数 442
阅读 5
收藏 0

在默认实现的DocValuesCosumer中,数值有可能分块存储也有可能放在一个数据块中存储。

分块的大小默认是16384,并且通过预先计算如果按一个块存储最大值与最小值的差所占用的比特数和分块存储后最大值与最小值的差所占用的比特数,当节约的比特数大于10%时才分块存储,否则就会按一个数据块存储。

当按照一个数据块存储时,又分了两种情况(这里强调一下,无论是否分块都会通过求解的最大公约数将每个数值减去最小值后除之进行压缩!):

1、当唯一值个数小于等于256时会将值从小到大的排序后从0-(size-1)重新赋予新的编号进行压缩存储,这样新的值就小于等于255。如果新值占用的比特数比经过最大公约数压缩后还要小就会按照新的编号进行压缩存储;

2、不满足1的条件就按照最大公约数压缩存储。

这里留个疑问:为什么不重复的值个数选择了256?因为目前只是根据代码推测原理,这个问题估计等到自己写代码时会自行解决。

© 著作权归作者所有

F

FAT_mt

粉丝 2
博文 68
码字总数 38894
作品 3
南京
高级程序员
私信 提问
谈谈lucene的DocValues特性之SortedNumericDocValuesField

前面已经介绍过NumericDocValuesField,这里想强调一下SortedNumericDocValuesField是针对同一篇文档中一键多值的情况进行排序的,换句话说不同文档的同一字段值可以乱序。核心的写入流程与谈...

FAT_mt
05/23
0
0
浅谈Lucene中的DocValues

前言:在Lucene4.x之后,出现一个重大的特性,就是索引支持DocValues,这对于广大的solr和elasticsearch用户,无疑来说是一个福音,这玩意的出现通过牺牲一定的磁盘空间带来的好处主要有两个...

九劫散仙
2016/05/10
150
0
谈谈lucene的DocValues特性之SortedSetDocValuesField

SortedSetDocValuesField与SortedDocValuesField类似但它是一键多值的(注意:lucene的数据模型是支持一键多值的即key-values模型),lucene在实现时会判断是一键一值还是多值,如果单值就调...

FAT_mt
05/24
0
0
谈谈lucene的DocValues特性之BinaryDocValuesField

BinaryDocValuesField与SortedDocValuesField相似,但又有不同之处,当字段的值重复项较少且共同前缀较少时使用BinaryDocValuesField存储较好。 该字段的存储在代码实现较简单主要过程就是两...

FAT_mt
04/28
0
0
谈谈lucene的DocValues特性之SortedDocValuesField

lucene的DocValues不同于document文档级别的存储,它是一个面向列的存储结构,提供从文档编号到值的映射功能。根据不同的数据类型和应用场景支持多个DocValuesField类型,SortedDocValuesFi...

FAT_mt
01/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

FPGA 设备 USB Platform Cable USB

lsusbFuture Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC

MtrS
今天
4
0
lua web快速开发指南(6) - Cache、DB介绍

"数据库"与"缓存"的基本概念 数据库与缓存是服务端开发人员的必学知识点. 数据库 "数据库"是一种信息记录、存取的虚拟标记地点的集合统称. 比如现实生活中, 我们经常会用到文件柜、书桌等等数...

水果糖的小铺子
今天
5
0
Oracle分页查询语句的写法

Oracle分页查询语句的写法 Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,Oracle分页查询语句基本上可以按本文给出的格式来进行套用。   Oracle分...

康师傅
昨天
5
0
java并发图谱

1527
昨天
2
0
Mybatis之拦截器Interceptor

使用mybatis时用PageHelper进行分页,用到了PageInterceptor,借此了解下mybatis的interceptor。Mybatis的版本是3.4.6,MybatisHelper的版本是5.1.3。 1、PageInterceptor 先上一段代码,如下...

克虏伯
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部