BinaryDocValuesField与SortedDocValuesField类似,但又有不一样之处,当字段的值重复项较少且共同前缀较少时使用BinaryDocValuesField存储较好。算法
该字段的存储在代码实现较简单主要过程就是两步:数组
一、写入字段原始字节数组没有采用任何压缩算法;优化
二、采用Monotonic算法对每一个字段值在文件中的指针进行压缩存储,该算法对于这种近似于线性的序列值压缩很是有效。有兴趣的能够看看结合lucene谈谈整形值压缩--上篇。.net
原始代码中除了这两个关键步骤,还有一个重要的优化类IndexedDISI将放在下一篇单独说明!指针