You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2013/01/23 19:42:38 UTC
svn commit: r1437619 - in
/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene40:
Lucene40DocValuesFormat.java Lucene40DocValuesReader.java
Author: rmuir
Date: Wed Jan 23 18:42:38 2013
New Revision: 1437619
URL: http://svn.apache.org/viewvc?rev=1437619&view=rev
Log:
add readers for 4.0 numeric types
Modified:
lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40DocValuesFormat.java
lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40DocValuesReader.java
Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40DocValuesFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40DocValuesFormat.java?rev=1437619&r1=1437618&r2=1437619&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40DocValuesFormat.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40DocValuesFormat.java Wed Jan 23 18:42:38 2013
@@ -54,4 +54,14 @@ public class Lucene40DocValuesFormat ext
static final byte VAR_INTS_PACKED = 0x00;
static final byte VAR_INTS_FIXED_64 = 0x01;
+
+ // constants for FIXED_INTS_8, FIXED_INTS_16, FIXED_INTS_32, FIXED_INTS_64
+ static final String INTS_CODEC_NAME = "Ints";
+ static final int INTS_VERSION_START = 0;
+ static final int INTS_VERSION_CURRENT = INTS_VERSION_START;
+
+ // constants for FLOAT_32, FLOAT_64
+ static final String FLOATS_CODEC_NAME = "Floats";
+ static final int FLOATS_VERSION_START = 0;
+ static final int FLOATS_VERSION_CURRENT = FLOATS_VERSION_START;
}
Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40DocValuesReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40DocValuesReader.java?rev=1437619&r1=1437618&r2=1437619&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40DocValuesReader.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40DocValuesReader.java Wed Jan 23 18:42:38 2013
@@ -64,6 +64,24 @@ class Lucene40DocValuesReader extends Do
case VAR_INTS:
instance = loadVarIntsField(field);
break;
+ case FIXED_INTS_8:
+ instance = loadByteField(field);
+ break;
+ case FIXED_INTS_16:
+ instance = loadShortField(field);
+ break;
+ case FIXED_INTS_32:
+ instance = loadIntField(field);
+ break;
+ case FIXED_INTS_64:
+ instance = loadLongField(field);
+ break;
+ case FLOAT_32:
+ instance = loadFloatField(field);
+ break;
+ case FLOAT_64:
+ instance = loadDoubleField(field);
+ break;
default:
throw new AssertionError(); // nocommit, implement the other types
}
@@ -119,6 +137,178 @@ class Lucene40DocValuesReader extends Do
}
}
}
+
+ private NumericDocValues loadByteField(FieldInfo field) throws IOException {
+ String fileName = IndexFileNames.segmentFileName(state.segmentInfo.name, Integer.toString(field.number), "dat");
+ IndexInput input = dir.openInput(fileName, state.context);
+ boolean success = false;
+ try {
+ CodecUtil.checkHeader(input, Lucene40DocValuesFormat.INTS_CODEC_NAME,
+ Lucene40DocValuesFormat.INTS_VERSION_START,
+ Lucene40DocValuesFormat.INTS_VERSION_CURRENT);
+ input.readInt();
+ int maxDoc = state.segmentInfo.getDocCount();
+ final byte values[] = new byte[maxDoc];
+ input.readBytes(values, 0, values.length);
+ return new NumericDocValues() {
+ @Override
+ public long get(int docID) {
+ return values[docID];
+ }
+ };
+ } finally {
+ if (success) {
+ IOUtils.close(input);
+ } else {
+ IOUtils.closeWhileHandlingException(input);
+ }
+ }
+ }
+
+ private NumericDocValues loadShortField(FieldInfo field) throws IOException {
+ String fileName = IndexFileNames.segmentFileName(state.segmentInfo.name, Integer.toString(field.number), "dat");
+ IndexInput input = dir.openInput(fileName, state.context);
+ boolean success = false;
+ try {
+ CodecUtil.checkHeader(input, Lucene40DocValuesFormat.INTS_CODEC_NAME,
+ Lucene40DocValuesFormat.INTS_VERSION_START,
+ Lucene40DocValuesFormat.INTS_VERSION_CURRENT);
+ input.readInt();
+ int maxDoc = state.segmentInfo.getDocCount();
+ final short values[] = new short[maxDoc];
+ for (int i = 0; i < values.length; i++) {
+ values[i] = input.readShort();
+ }
+ return new NumericDocValues() {
+ @Override
+ public long get(int docID) {
+ return values[docID];
+ }
+ };
+ } finally {
+ if (success) {
+ IOUtils.close(input);
+ } else {
+ IOUtils.closeWhileHandlingException(input);
+ }
+ }
+ }
+
+ private NumericDocValues loadIntField(FieldInfo field) throws IOException {
+ String fileName = IndexFileNames.segmentFileName(state.segmentInfo.name, Integer.toString(field.number), "dat");
+ IndexInput input = dir.openInput(fileName, state.context);
+ boolean success = false;
+ try {
+ CodecUtil.checkHeader(input, Lucene40DocValuesFormat.INTS_CODEC_NAME,
+ Lucene40DocValuesFormat.INTS_VERSION_START,
+ Lucene40DocValuesFormat.INTS_VERSION_CURRENT);
+ input.readInt();
+ int maxDoc = state.segmentInfo.getDocCount();
+ final int values[] = new int[maxDoc];
+ for (int i = 0; i < values.length; i++) {
+ values[i] = input.readInt();
+ }
+ return new NumericDocValues() {
+ @Override
+ public long get(int docID) {
+ return values[docID];
+ }
+ };
+ } finally {
+ if (success) {
+ IOUtils.close(input);
+ } else {
+ IOUtils.closeWhileHandlingException(input);
+ }
+ }
+ }
+
+ private NumericDocValues loadLongField(FieldInfo field) throws IOException {
+ String fileName = IndexFileNames.segmentFileName(state.segmentInfo.name, Integer.toString(field.number), "dat");
+ IndexInput input = dir.openInput(fileName, state.context);
+ boolean success = false;
+ try {
+ CodecUtil.checkHeader(input, Lucene40DocValuesFormat.INTS_CODEC_NAME,
+ Lucene40DocValuesFormat.INTS_VERSION_START,
+ Lucene40DocValuesFormat.INTS_VERSION_CURRENT);
+ input.readInt();
+ int maxDoc = state.segmentInfo.getDocCount();
+ final long values[] = new long[maxDoc];
+ for (int i = 0; i < values.length; i++) {
+ values[i] = input.readLong();
+ }
+ return new NumericDocValues() {
+ @Override
+ public long get(int docID) {
+ return values[docID];
+ }
+ };
+ } finally {
+ if (success) {
+ IOUtils.close(input);
+ } else {
+ IOUtils.closeWhileHandlingException(input);
+ }
+ }
+ }
+
+ private NumericDocValues loadFloatField(FieldInfo field) throws IOException {
+ String fileName = IndexFileNames.segmentFileName(state.segmentInfo.name, Integer.toString(field.number), "dat");
+ IndexInput input = dir.openInput(fileName, state.context);
+ boolean success = false;
+ try {
+ CodecUtil.checkHeader(input, Lucene40DocValuesFormat.FLOATS_CODEC_NAME,
+ Lucene40DocValuesFormat.FLOATS_VERSION_START,
+ Lucene40DocValuesFormat.FLOATS_VERSION_CURRENT);
+ input.readInt();
+ int maxDoc = state.segmentInfo.getDocCount();
+ final int values[] = new int[maxDoc];
+ for (int i = 0; i < values.length; i++) {
+ values[i] = input.readInt();
+ }
+ return new NumericDocValues() {
+ @Override
+ public long get(int docID) {
+ return values[docID];
+ }
+ };
+ } finally {
+ if (success) {
+ IOUtils.close(input);
+ } else {
+ IOUtils.closeWhileHandlingException(input);
+ }
+ }
+ }
+
+ private NumericDocValues loadDoubleField(FieldInfo field) throws IOException {
+ String fileName = IndexFileNames.segmentFileName(state.segmentInfo.name, Integer.toString(field.number), "dat");
+ IndexInput input = dir.openInput(fileName, state.context);
+ boolean success = false;
+ try {
+ CodecUtil.checkHeader(input, Lucene40DocValuesFormat.FLOATS_CODEC_NAME,
+ Lucene40DocValuesFormat.FLOATS_VERSION_START,
+ Lucene40DocValuesFormat.FLOATS_VERSION_CURRENT);
+ input.readInt();
+ int maxDoc = state.segmentInfo.getDocCount();
+ final long values[] = new long[maxDoc];
+ for (int i = 0; i < values.length; i++) {
+ values[i] = input.readLong();
+ }
+ return new NumericDocValues() {
+ @Override
+ public long get(int docID) {
+ return values[docID];
+ }
+ };
+ } finally {
+ if (success) {
+ IOUtils.close(input);
+ } else {
+ IOUtils.closeWhileHandlingException(input);
+ }
+ }
+ }
@Override
public synchronized BinaryDocValues getBinary(FieldInfo field) throws IOException {