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 2011/12/13 19:39:11 UTC
svn commit: r1213844 [2/5] - in /lucene/dev/trunk: ./ lucene/
lucene/contrib/memory/src/java/org/apache/lucene/index/memory/
lucene/contrib/misc/src/java/org/apache/lucene/document/
lucene/contrib/sandbox/src/test/org/apache/lucene/sandbox/queries/rege...
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/PerDocConsumer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/PerDocConsumer.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/PerDocConsumer.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/PerDocConsumer.java Tue Dec 13 18:39:06 2011
@@ -19,11 +19,8 @@ import java.io.Closeable;
import java.io.IOException;
import org.apache.lucene.index.FieldInfo;
-import org.apache.lucene.index.FieldInfos;
+import org.apache.lucene.index.DocValues;
import org.apache.lucene.index.MergeState;
-import org.apache.lucene.index.values.IndexDocValues;
-import org.apache.lucene.index.values.TypePromoter;
-import org.apache.lucene.index.values.ValueType;
/**
* Abstract API that consumes per document values. Concrete implementations of
@@ -37,82 +34,26 @@ import org.apache.lucene.index.values.Va
*/
public abstract class PerDocConsumer implements Closeable{
/** Adds a new DocValuesField */
- public abstract DocValuesConsumer addValuesField(FieldInfo field)
+ public abstract DocValuesConsumer addValuesField(DocValues.Type type, FieldInfo field)
throws IOException;
/**
- * Consumes and merges the given {@link PerDocValues} producer
+ * Consumes and merges the given {@link PerDocProducer} producer
* into this consumers format.
*/
- public void merge(MergeState mergeState)
- throws IOException {
- final FieldInfos fieldInfos = mergeState.fieldInfos;
- final IndexDocValues[] docValues = new IndexDocValues[mergeState.readers.size()];
- final PerDocValues[] perDocValues = new PerDocValues[mergeState.readers.size()];
- // pull all PerDocValues
- for (int i = 0; i < perDocValues.length; i++) {
- perDocValues[i] = mergeState.readers.get(i).reader.perDocValues();
- }
- for (FieldInfo fieldInfo : fieldInfos) {
- mergeState.fieldInfo = fieldInfo;
- TypePromoter currentPromoter = TypePromoter.getIdentityPromoter();
+ public void merge(MergeState mergeState) throws IOException {
+ final DocValues[] docValues = new DocValues[mergeState.readers.size()];
+
+ for (FieldInfo fieldInfo : mergeState.fieldInfos) {
+ mergeState.fieldInfo = fieldInfo; // set the field we are merging
if (fieldInfo.hasDocValues()) {
- for (int i = 0; i < perDocValues.length; i++) {
- if (perDocValues[i] != null) { // get all IDV to merge
- docValues[i] = perDocValues[i].docValues(fieldInfo.name);
- if (docValues[i] != null) {
- currentPromoter = promoteValueType(fieldInfo, docValues[i], currentPromoter);
- if (currentPromoter == null) {
- break;
- }
- }
- }
- }
-
- if (currentPromoter == null) {
- fieldInfo.resetDocValues(null);
- continue;
- }
- assert currentPromoter != TypePromoter.getIdentityPromoter();
- if (fieldInfo.getDocValues() != currentPromoter.type()) {
- // reset the type if we got promoted
- fieldInfo.resetDocValues(currentPromoter.type());
+ for (int i = 0; i < docValues.length; i++) {
+ docValues[i] = mergeState.readers.get(i).reader.docValues(fieldInfo.name);
}
-
- final DocValuesConsumer docValuesConsumer = addValuesField(mergeState.fieldInfo);
+ final DocValuesConsumer docValuesConsumer = addValuesField(fieldInfo.getDocValuesType(), fieldInfo);
assert docValuesConsumer != null;
docValuesConsumer.merge(mergeState, docValues);
}
}
- /* NOTE: don't close the perDocProducers here since they are private segment producers
- * and will be closed once the SegmentReader goes out of scope */
- }
-
- protected TypePromoter promoteValueType(final FieldInfo fieldInfo, final IndexDocValues docValues,
- TypePromoter currentPromoter) {
- assert currentPromoter != null;
- final TypePromoter incomingPromoter = TypePromoter.create(docValues.type(), docValues.getValueSize());
- assert incomingPromoter != null;
- final TypePromoter newPromoter = currentPromoter.promote(incomingPromoter);
- return newPromoter == null ? handleIncompatibleValueType(fieldInfo, incomingPromoter, currentPromoter) : newPromoter;
- }
-
- /**
- * Resolves a conflicts of incompatible {@link TypePromoter}s. The default
- * implementation promotes incompatible types to
- * {@link ValueType#BYTES_VAR_STRAIGHT} and preserves all values. If this
- * method returns <code>null</code> all docvalues for the given
- * {@link FieldInfo} are dropped and all values are lost.
- *
- * @param incomingPromoter
- * the incompatible incoming promoter
- * @param currentPromoter
- * the current promoter
- * @return a promoted {@link TypePromoter} or <code>null</code> iff this index
- * docvalues should be dropped for this field.
- */
- protected TypePromoter handleIncompatibleValueType(FieldInfo fieldInfo, TypePromoter incomingPromoter, TypePromoter currentPromoter) {
- return TypePromoter.create(ValueType.BYTES_VAR_STRAIGHT, TypePromoter.VAR_TYPE_VALUE_SIZE);
- }
-
+ }
}
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene3x/Lucene3xCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene3x/Lucene3xCodec.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene3x/Lucene3xCodec.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene3x/Lucene3xCodec.java Tue Dec 13 18:39:06 2011
@@ -27,9 +27,9 @@ import org.apache.lucene.index.codecs.Co
import org.apache.lucene.index.codecs.DocValuesFormat;
import org.apache.lucene.index.codecs.FieldInfosFormat;
import org.apache.lucene.index.codecs.NormsFormat;
+import org.apache.lucene.index.codecs.PerDocProducer;
import org.apache.lucene.index.codecs.StoredFieldsFormat;
import org.apache.lucene.index.codecs.PerDocConsumer;
-import org.apache.lucene.index.codecs.PerDocValues;
import org.apache.lucene.index.codecs.PostingsFormat;
import org.apache.lucene.index.codecs.SegmentInfosFormat;
import org.apache.lucene.index.codecs.TermVectorsFormat;
@@ -75,7 +75,7 @@ public class Lucene3xCodec extends Codec
}
@Override
- public PerDocValues docsProducer(SegmentReadState state) throws IOException {
+ public PerDocProducer docsProducer(SegmentReadState state) throws IOException {
return null;
}
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40DocValuesFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40DocValuesFormat.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40DocValuesFormat.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40DocValuesFormat.java Tue Dec 13 18:39:06 2011
@@ -25,7 +25,7 @@ import org.apache.lucene.index.SegmentIn
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.index.codecs.DocValuesFormat;
import org.apache.lucene.index.codecs.PerDocConsumer;
-import org.apache.lucene.index.codecs.PerDocValues;
+import org.apache.lucene.index.codecs.PerDocProducer;
import org.apache.lucene.store.Directory;
public class Lucene40DocValuesFormat extends DocValuesFormat {
@@ -36,7 +36,7 @@ public class Lucene40DocValuesFormat ext
}
@Override
- public PerDocValues docsProducer(SegmentReadState state) throws IOException {
+ public PerDocProducer docsProducer(SegmentReadState state) throws IOException {
return new Lucene40DocValuesProducer(state);
}
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40DocValuesProducer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40DocValuesProducer.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40DocValuesProducer.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40DocValuesProducer.java Tue Dec 13 18:39:06 2011
@@ -24,25 +24,25 @@ import java.util.Collection;
import java.util.Map;
import java.util.TreeMap;
+import org.apache.lucene.index.DocValues;
import org.apache.lucene.index.IndexFileNames;
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.index.codecs.DocValuesReaderBase;
-import org.apache.lucene.index.values.IndexDocValues;
import org.apache.lucene.store.CompoundFileDirectory;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.IOUtils;
/**
- * Default PerDocValues implementation that uses compound file.
+ * Default PerDocProducer implementation that uses compound file.
* @lucene.experimental
*/
public class Lucene40DocValuesProducer extends DocValuesReaderBase {
- protected final TreeMap<String,IndexDocValues> docValues;
+ protected final TreeMap<String,DocValues> docValues;
private final Directory cfs;
/**
* Creates a new {@link Lucene40DocValuesProducer} instance and loads all
- * {@link IndexDocValues} instances for this segment and codec.
+ * {@link DocValues} instances for this segment and codec.
*/
public Lucene40DocValuesProducer(SegmentReadState state) throws IOException {
if (state.fieldInfos.anyDocValuesFields()) {
@@ -53,12 +53,12 @@ public class Lucene40DocValuesProducer e
docValues = load(state.fieldInfos, state.segmentInfo.name, state.segmentInfo.docCount, cfs, state.context);
} else {
cfs = null;
- docValues = new TreeMap<String,IndexDocValues>();
+ docValues = new TreeMap<String,DocValues>();
}
}
@Override
- protected Map<String,IndexDocValues> docValues() {
+ protected Map<String,DocValues> docValues() {
return docValues;
}
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40FieldInfosReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40FieldInfosReader.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40FieldInfosReader.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40FieldInfosReader.java Tue Dec 13 18:39:06 2011
@@ -12,7 +12,7 @@ import org.apache.lucene.index.IndexForm
import org.apache.lucene.index.SegmentInfo;
import org.apache.lucene.index.FieldInfo.IndexOptions;
import org.apache.lucene.index.codecs.FieldInfosReader;
-import org.apache.lucene.index.values.ValueType;
+import org.apache.lucene.index.DocValues;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.IndexInput;
@@ -95,7 +95,7 @@ public class Lucene40FieldInfosReader ex
hasVectors |= storeTermVector;
hasProx |= isIndexed && indexOptions == IndexOptions.DOCS_AND_FREQS_AND_POSITIONS;
hasFreq |= isIndexed && indexOptions != IndexOptions.DOCS_ONLY;
- ValueType docValuesType = null;
+ DocValues.Type docValuesType = null;
if (format <= Lucene40FieldInfosWriter.FORMAT_FLEX) {
final byte b = input.readByte();
switch(b) {
@@ -103,43 +103,43 @@ public class Lucene40FieldInfosReader ex
docValuesType = null;
break;
case 1:
- docValuesType = ValueType.VAR_INTS;
+ docValuesType = DocValues.Type.VAR_INTS;
break;
case 2:
- docValuesType = ValueType.FLOAT_32;
+ docValuesType = DocValues.Type.FLOAT_32;
break;
case 3:
- docValuesType = ValueType.FLOAT_64;
+ docValuesType = DocValues.Type.FLOAT_64;
break;
case 4:
- docValuesType = ValueType.BYTES_FIXED_STRAIGHT;
+ docValuesType = DocValues.Type.BYTES_FIXED_STRAIGHT;
break;
case 5:
- docValuesType = ValueType.BYTES_FIXED_DEREF;
+ docValuesType = DocValues.Type.BYTES_FIXED_DEREF;
break;
case 6:
- docValuesType = ValueType.BYTES_VAR_STRAIGHT;
+ docValuesType = DocValues.Type.BYTES_VAR_STRAIGHT;
break;
case 7:
- docValuesType = ValueType.BYTES_VAR_DEREF;
+ docValuesType = DocValues.Type.BYTES_VAR_DEREF;
break;
case 8:
- docValuesType = ValueType.FIXED_INTS_16;
+ docValuesType = DocValues.Type.FIXED_INTS_16;
break;
case 9:
- docValuesType = ValueType.FIXED_INTS_32;
+ docValuesType = DocValues.Type.FIXED_INTS_32;
break;
case 10:
- docValuesType = ValueType.FIXED_INTS_64;
+ docValuesType = DocValues.Type.FIXED_INTS_64;
break;
case 11:
- docValuesType = ValueType.FIXED_INTS_8;
+ docValuesType = DocValues.Type.FIXED_INTS_8;
break;
case 12:
- docValuesType = ValueType.BYTES_FIXED_SORTED;
+ docValuesType = DocValues.Type.BYTES_FIXED_SORTED;
break;
case 13:
- docValuesType = ValueType.BYTES_VAR_SORTED;
+ docValuesType = DocValues.Type.BYTES_VAR_SORTED;
break;
default:
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40FieldInfosWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40FieldInfosWriter.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40FieldInfosWriter.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/lucene40/Lucene40FieldInfosWriter.java Tue Dec 13 18:39:06 2011
@@ -83,7 +83,7 @@ public class Lucene40FieldInfosWriter ex
if (!fi.hasDocValues()) {
b = 0;
} else {
- switch(fi.getDocValues()) {
+ switch(fi.getDocValuesType()) {
case VAR_INTS:
b = 1;
break;
@@ -124,7 +124,7 @@ public class Lucene40FieldInfosWriter ex
b = 13;
break;
default:
- throw new IllegalStateException("unhandled indexValues type " + fi.getDocValues());
+ throw new IllegalStateException("unhandled indexValues type " + fi.getDocValuesType());
}
}
output.writeByte(b);
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/sep/SepDocValuesConsumer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/sep/SepDocValuesConsumer.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/sep/SepDocValuesConsumer.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/sep/SepDocValuesConsumer.java Tue Dec 13 18:39:06 2011
@@ -26,7 +26,7 @@ import org.apache.lucene.index.IndexFile
import org.apache.lucene.index.PerDocWriteState;
import org.apache.lucene.index.SegmentInfo;
import org.apache.lucene.index.codecs.DocValuesWriterBase;
-import org.apache.lucene.index.values.Writer;
+import org.apache.lucene.index.codecs.lucene40.values.Writer;
import org.apache.lucene.store.Directory;
/**
@@ -53,7 +53,7 @@ public class SepDocValuesConsumer extend
for (FieldInfo fieldInfo : fieldInfos) {
if (fieldInfo.hasDocValues()) {
String filename = docValuesId(segmentInfo.name, fieldInfo.number);
- switch (fieldInfo.getDocValues()) {
+ switch (fieldInfo.getDocValuesType()) {
case BYTES_FIXED_DEREF:
case BYTES_VAR_DEREF:
case BYTES_VAR_STRAIGHT:
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/sep/SepDocValuesProducer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/sep/SepDocValuesProducer.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/sep/SepDocValuesProducer.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/sep/SepDocValuesProducer.java Tue Dec 13 18:39:06 2011
@@ -22,28 +22,28 @@ import java.util.Collection;
import java.util.Map;
import java.util.TreeMap;
+import org.apache.lucene.index.DocValues;
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.index.codecs.DocValuesReaderBase;
-import org.apache.lucene.index.values.IndexDocValues;
import org.apache.lucene.util.IOUtils;
/**
- * Implementation of PerDocValues that uses separate files.
+ * Implementation of PerDocProducer that uses separate files.
* @lucene.experimental
*/
public class SepDocValuesProducer extends DocValuesReaderBase {
- private final TreeMap<String, IndexDocValues> docValues;
+ private final TreeMap<String, DocValues> docValues;
/**
* Creates a new {@link SepDocValuesProducer} instance and loads all
- * {@link IndexDocValues} instances for this segment and codec.
+ * {@link DocValues} instances for this segment and codec.
*/
public SepDocValuesProducer(SegmentReadState state) throws IOException {
docValues = load(state.fieldInfos, state.segmentInfo.name, state.segmentInfo.docCount, state.dir, state.context);
}
@Override
- protected Map<String,IndexDocValues> docValues() {
+ protected Map<String,DocValues> docValues() {
return docValues;
}
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldInfosReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldInfosReader.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldInfosReader.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldInfosReader.java Tue Dec 13 18:39:06 2011
@@ -26,8 +26,8 @@ import org.apache.lucene.index.FieldInfo
import org.apache.lucene.index.IndexFileNames;
import org.apache.lucene.index.SegmentInfo;
import org.apache.lucene.index.FieldInfo.IndexOptions;
+import org.apache.lucene.index.DocValues;
import org.apache.lucene.index.codecs.FieldInfosReader;
-import org.apache.lucene.index.values.ValueType;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.IndexInput;
@@ -98,12 +98,12 @@ public class SimpleTextFieldInfosReader
SimpleTextUtil.readLine(input, scratch);
assert StringHelper.startsWith(scratch, DOCVALUES);
String dvType = readString(DOCVALUES.length, scratch);
- final ValueType docValuesType;
+ final DocValues.Type docValuesType;
if ("false".equals(dvType)) {
docValuesType = null;
} else {
- docValuesType = ValueType.valueOf(dvType);
+ docValuesType = DocValues.Type.valueOf(dvType);
}
SimpleTextUtil.readLine(input, scratch);
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldInfosWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldInfosWriter.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldInfosWriter.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldInfosWriter.java Tue Dec 13 18:39:06 2011
@@ -100,7 +100,7 @@ public class SimpleTextFieldInfosWriter
if (!fi.hasDocValues()) {
SimpleTextUtil.write(out, "false", scratch);
} else {
- SimpleTextUtil.write(out, fi.getDocValues().toString(), scratch);
+ SimpleTextUtil.write(out, fi.getDocValuesType().toString(), scratch);
}
SimpleTextUtil.writeNewline(out);
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FieldComparator.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FieldComparator.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FieldComparator.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/FieldComparator.java Tue Dec 13 18:39:06 2011
@@ -21,11 +21,8 @@ import java.io.IOException;
import java.util.Comparator;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
+import org.apache.lucene.index.DocValues;
import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.values.IndexDocValues.SortedSource;
-import org.apache.lucene.index.values.IndexDocValues.Source;
-import org.apache.lucene.index.values.IndexDocValues;
-import org.apache.lucene.index.values.ValueType;
import org.apache.lucene.search.FieldCache.ByteParser;
import org.apache.lucene.search.FieldCache.DocTerms;
import org.apache.lucene.search.FieldCache.DocTermsIndex;
@@ -360,7 +357,7 @@ public abstract class FieldComparator<T>
public static final class FloatDocValuesComparator extends FieldComparator<Double> {
private final double[] values;
private final String field;
- private Source currentReaderValues;
+ private DocValues.Source currentReaderValues;
private double bottom;
FloatDocValuesComparator(int numHits, String field) {
@@ -400,11 +397,11 @@ public abstract class FieldComparator<T>
@Override
public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
- final IndexDocValues docValues = context.reader.docValues(field);
+ final DocValues docValues = context.reader.docValues(field);
if (docValues != null) {
currentReaderValues = docValues.getSource();
} else {
- currentReaderValues = IndexDocValues.getDefaultSource(ValueType.FLOAT_64);
+ currentReaderValues = DocValues.getDefaultSource(DocValues.Type.FLOAT_64);
}
return this;
}
@@ -648,7 +645,7 @@ public abstract class FieldComparator<T>
/** Loads int index values and sorts by ascending value. */
public static final class IntDocValuesComparator extends FieldComparator<Long> {
private final long[] values;
- private Source currentReaderValues;
+ private DocValues.Source currentReaderValues;
private final String field;
private long bottom;
@@ -693,11 +690,11 @@ public abstract class FieldComparator<T>
@Override
public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
- IndexDocValues docValues = context.reader.docValues(field);
+ DocValues docValues = context.reader.docValues(field);
if (docValues != null) {
currentReaderValues = docValues.getSource();
} else {
- currentReaderValues = IndexDocValues.getDefaultSource(ValueType.FIXED_INTS_64);
+ currentReaderValues = DocValues.getDefaultSource(DocValues.Type.FIXED_INTS_64);
}
return this;
}
@@ -1382,7 +1379,7 @@ public abstract class FieldComparator<T>
/* Current reader's doc ord/values.
@lucene.internal */
- SortedSource termsIndex;
+ DocValues.SortedSource termsIndex;
/* Comparator for comparing by value.
@lucene.internal */
@@ -1490,10 +1487,10 @@ public abstract class FieldComparator<T>
// Used per-segment when bit width of doc->ord is 8:
private final class ByteOrdComparator extends PerSegmentComparator {
private final byte[] readerOrds;
- private final SortedSource termsIndex;
+ private final DocValues.SortedSource termsIndex;
private final int docBase;
- public ByteOrdComparator(byte[] readerOrds, SortedSource termsIndex, int docBase) {
+ public ByteOrdComparator(byte[] readerOrds, DocValues.SortedSource termsIndex, int docBase) {
this.readerOrds = readerOrds;
this.termsIndex = termsIndex;
this.docBase = docBase;
@@ -1535,10 +1532,10 @@ public abstract class FieldComparator<T>
// Used per-segment when bit width of doc->ord is 16:
private final class ShortOrdComparator extends PerSegmentComparator {
private final short[] readerOrds;
- private final SortedSource termsIndex;
+ private final DocValues.SortedSource termsIndex;
private final int docBase;
- public ShortOrdComparator(short[] readerOrds, SortedSource termsIndex, int docBase) {
+ public ShortOrdComparator(short[] readerOrds, DocValues.SortedSource termsIndex, int docBase) {
this.readerOrds = readerOrds;
this.termsIndex = termsIndex;
this.docBase = docBase;
@@ -1580,10 +1577,10 @@ public abstract class FieldComparator<T>
// Used per-segment when bit width of doc->ord is 32:
private final class IntOrdComparator extends PerSegmentComparator {
private final int[] readerOrds;
- private final SortedSource termsIndex;
+ private final DocValues.SortedSource termsIndex;
private final int docBase;
- public IntOrdComparator(int[] readerOrds, SortedSource termsIndex, int docBase) {
+ public IntOrdComparator(int[] readerOrds, DocValues.SortedSource termsIndex, int docBase) {
this.readerOrds = readerOrds;
this.termsIndex = termsIndex;
this.docBase = docBase;
@@ -1623,11 +1620,11 @@ public abstract class FieldComparator<T>
// Used per-segment when bit width is not a native array
// size (8, 16, 32):
- private final class AnyOrdComparator extends PerSegmentComparator {
+ private final class AnyPackedDocToOrdComparator extends PerSegmentComparator {
private final PackedInts.Reader readerOrds;
private final int docBase;
- public AnyOrdComparator(PackedInts.Reader readerOrds, int docBase) {
+ public AnyPackedDocToOrdComparator(PackedInts.Reader readerOrds, int docBase) {
this.readerOrds = readerOrds;
this.docBase = docBase;
}
@@ -1664,16 +1661,57 @@ public abstract class FieldComparator<T>
}
}
+ // Used per-segment when DV doesn't use packed ints for
+ // docToOrds:
+ private final class AnyOrdComparator extends PerSegmentComparator {
+ private final int docBase;
+
+ public AnyOrdComparator(int docBase) {
+ this.docBase = docBase;
+ }
+
+ @Override
+ public int compareBottom(int doc) {
+ assert bottomSlot != -1;
+ if (bottomSameReader) {
+ // ord is precisely comparable, even in the equal case
+ return bottomOrd - termsIndex.ord(doc);
+ } else {
+ // ord is only approx comparable: if they are not
+ // equal, we can use that; if they are equal, we
+ // must fallback to compare by value
+ final int order = termsIndex.ord(doc);
+ final int cmp = bottomOrd - order;
+ if (cmp != 0) {
+ return cmp;
+ }
+ termsIndex.getByOrd(order, tempBR);
+ return comp.compare(bottomValue, tempBR);
+ }
+ }
+
+ @Override
+ public void copy(int slot, int doc) {
+ final int ord = termsIndex.ord(doc);
+ ords[slot] = ord;
+ if (values[slot] == null) {
+ values[slot] = new BytesRef();
+ }
+ termsIndex.getByOrd(ord, values[slot]);
+ readerGen[slot] = currentReaderGen;
+ }
+ }
+
@Override
public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
final int docBase = context.docBase;
- final IndexDocValues dv = context.reader.docValues(field);
+ final DocValues dv = context.reader.docValues(field);
if (dv == null) {
// This may mean entire segment had no docs with
// this DV field; use default field value (empty
// byte[]) in this case:
- termsIndex = IndexDocValues.getDefaultSortedSource(ValueType.BYTES_VAR_SORTED, context.reader.maxDoc());
+ termsIndex = DocValues.getDefaultSortedSource(DocValues.Type.BYTES_VAR_SORTED, context.reader.maxDoc());
} else {
termsIndex = dv.getSource().asSortedSource();
if (termsIndex == null) {
@@ -1687,24 +1725,30 @@ public abstract class FieldComparator<T>
comp = termsIndex.getComparator();
FieldComparator perSegComp = null;
- final PackedInts.Reader docToOrd = termsIndex.getDocToOrd();
- if (docToOrd.hasArray()) {
- final Object arr = docToOrd.getArray();
- assert arr != null;
- if (arr instanceof byte[]) {
- // 8 bit packed
- perSegComp = new ByteOrdComparator((byte[]) arr, termsIndex, docBase);
- } else if (arr instanceof short[]) {
- // 16 bit packed
- perSegComp = new ShortOrdComparator((short[]) arr, termsIndex, docBase);
- } else if (arr instanceof int[]) {
- // 32 bit packed
- perSegComp = new IntOrdComparator((int[]) arr, termsIndex, docBase);
+ if (termsIndex.hasPackedDocToOrd()) {
+ final PackedInts.Reader docToOrd = termsIndex.getDocToOrd();
+ if (docToOrd.hasArray()) {
+ final Object arr = docToOrd.getArray();
+ assert arr != null;
+ if (arr instanceof byte[]) {
+ // 8 bit packed
+ perSegComp = new ByteOrdComparator((byte[]) arr, termsIndex, docBase);
+ } else if (arr instanceof short[]) {
+ // 16 bit packed
+ perSegComp = new ShortOrdComparator((short[]) arr, termsIndex, docBase);
+ } else if (arr instanceof int[]) {
+ // 32 bit packed
+ perSegComp = new IntOrdComparator((int[]) arr, termsIndex, docBase);
+ }
}
- }
- if (perSegComp == null) {
- perSegComp = new AnyOrdComparator(docToOrd, docBase);
+ if (perSegComp == null) {
+ perSegComp = new AnyPackedDocToOrdComparator(docToOrd, docBase);
+ }
+ } else {
+ if (perSegComp == null) {
+ perSegComp = new AnyOrdComparator(docBase);
+ }
}
currentReaderGen++;
@@ -1845,7 +1889,7 @@ public abstract class FieldComparator<T>
public static final class TermValDocValuesComparator extends FieldComparator<BytesRef> {
private BytesRef[] values;
- private Source docTerms;
+ private DocValues.Source docTerms;
private final String field;
private BytesRef bottom;
private final BytesRef tempBR = new BytesRef();
@@ -1878,11 +1922,11 @@ public abstract class FieldComparator<T>
@Override
public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
- final IndexDocValues dv = context.reader.docValues(field);
+ final DocValues dv = context.reader.docValues(field);
if (dv != null) {
docTerms = dv.getSource();
} else {
- docTerms = IndexDocValues.getDefaultSource(ValueType.BYTES_VAR_DEREF);
+ docTerms = DocValues.getDefaultSource(DocValues.Type.BYTES_VAR_DEREF);
}
return this;
}
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/similarities/Similarity.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/similarities/Similarity.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/similarities/Similarity.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/similarities/Similarity.java Tue Dec 13 18:39:06 2011
@@ -20,7 +20,7 @@ package org.apache.lucene.search.similar
import java.io.IOException;
-import org.apache.lucene.document.IndexDocValuesField; // javadoc
+import org.apache.lucene.document.DocValuesField; // javadoc
import org.apache.lucene.index.FieldInvertState;
import org.apache.lucene.index.IndexReader; // javadoc
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
@@ -71,11 +71,11 @@ import org.apache.lucene.util.TermContex
* <p>
* Because index-time boost is handled entirely at the application level anyway,
* an application can alternatively store the index-time boost separately using an
- * {@link IndexDocValuesField}, and access this at query-time with
+ * {@link DocValuesField}, and access this at query-time with
* {@link IndexReader#docValues(String)}.
* <p>
* Finally, using index-time boosts (either via folding into the normalization byte or
- * via IndexDocValues), is an inefficient way to boost the scores of different fields if the
+ * via DocValues), is an inefficient way to boost the scores of different fields if the
* boost will be the same for every document, instead the Similarity can simply take a constant
* boost parameter <i>C</i>, and the SimilarityProvider can return different instances with
* different boosts depending upon field name.
Modified: lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/index/RandomIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/index/RandomIndexWriter.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/index/RandomIndexWriter.java (original)
+++ lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/index/RandomIndexWriter.java Tue Dec 13 18:39:06 2011
@@ -24,11 +24,11 @@ import java.util.Random;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.MockAnalyzer;
-import org.apache.lucene.document.IndexDocValuesField;
+import org.apache.lucene.document.DocValuesField;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter; // javadoc
import org.apache.lucene.index.codecs.Codec;
-import org.apache.lucene.index.values.ValueType;
+import org.apache.lucene.index.DocValues;
import org.apache.lucene.search.Query;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
@@ -167,12 +167,12 @@ public class RandomIndexWriter implement
private void randomPerDocFieldValues(Random random, Document doc) {
- ValueType[] values = ValueType.values();
- ValueType type = values[random.nextInt(values.length)];
+ DocValues.Type[] values = DocValues.Type.values();
+ DocValues.Type type = values[random.nextInt(values.length)];
String name = "random_" + type.name() + "" + docValuesFieldPrefix;
if ("Lucene3x".equals(codec.getName()) || doc.getField(name) != null)
return;
- IndexDocValuesField docValuesField = new IndexDocValuesField(name);
+ DocValuesField docValuesField = new DocValuesField(name);
switch (type) {
case BYTES_FIXED_DEREF:
case BYTES_FIXED_STRAIGHT:
Modified: lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/index/codecs/mocksep/MockSepDocValuesFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/index/codecs/mocksep/MockSepDocValuesFormat.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/index/codecs/mocksep/MockSepDocValuesFormat.java (original)
+++ lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/index/codecs/mocksep/MockSepDocValuesFormat.java Tue Dec 13 18:39:06 2011
@@ -25,7 +25,7 @@ import org.apache.lucene.index.SegmentIn
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.index.codecs.DocValuesFormat;
import org.apache.lucene.index.codecs.PerDocConsumer;
-import org.apache.lucene.index.codecs.PerDocValues;
+import org.apache.lucene.index.codecs.PerDocProducer;
import org.apache.lucene.index.codecs.sep.SepDocValuesConsumer;
import org.apache.lucene.index.codecs.sep.SepDocValuesProducer;
import org.apache.lucene.store.Directory;
@@ -43,7 +43,7 @@ public class MockSepDocValuesFormat exte
}
@Override
- public PerDocValues docsProducer(SegmentReadState state) throws IOException {
+ public PerDocProducer docsProducer(SegmentReadState state) throws IOException {
return new SepDocValuesProducer(state);
}
Modified: lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/util/_TestUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/util/_TestUtil.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/util/_TestUtil.java (original)
+++ lucene/dev/trunk/lucene/src/test-framework/java/org/apache/lucene/util/_TestUtil.java Tue Dec 13 18:39:06 2011
@@ -440,7 +440,7 @@ public class _TestUtil {
/** Adds field info for a Document. */
public static void add(Document doc, FieldInfos fieldInfos) {
for (IndexableField field : doc) {
- fieldInfos.addOrUpdate(field.name(), field.fieldType(), false, field.docValuesType());
+ fieldInfos.addOrUpdate(field.name(), field.fieldType());
}
}
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestAddIndexes.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestAddIndexes.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestAddIndexes.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestAddIndexes.java Tue Dec 13 18:39:06 2011
@@ -27,7 +27,7 @@ import org.apache.lucene.analysis.MockAn
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.FieldType;
-import org.apache.lucene.document.IndexDocValuesField;
+import org.apache.lucene.document.DocValuesField;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
@@ -47,7 +47,6 @@ import org.apache.lucene.index.codecs.lu
import org.apache.lucene.index.codecs.lucene40.Lucene40StoredFieldsFormat;
import org.apache.lucene.index.codecs.lucene40.Lucene40TermVectorsFormat;
import org.apache.lucene.index.codecs.pulsing.Pulsing40PostingsFormat;
-import org.apache.lucene.index.values.IndexDocValues;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.PhraseQuery;
import org.apache.lucene.store.AlreadyClosedException;
@@ -1254,7 +1253,7 @@ public class TestAddIndexes extends Luce
RandomIndexWriter w = new RandomIndexWriter(random, d1);
Document doc = new Document();
doc.add(newField("id", "1", StringField.TYPE_STORED));
- IndexDocValuesField dv = new IndexDocValuesField("dv");
+ DocValuesField dv = new DocValuesField("dv");
dv.setInt(1);
doc.add(dv);
w.addDocument(doc);
@@ -1265,7 +1264,7 @@ public class TestAddIndexes extends Luce
w = new RandomIndexWriter(random, d2);
doc = new Document();
doc.add(newField("id", "2", StringField.TYPE_STORED));
- dv = new IndexDocValuesField("dv");
+ dv = new DocValuesField("dv");
dv.setInt(2);
doc.add(dv);
w.addDocument(doc);
@@ -1285,7 +1284,7 @@ public class TestAddIndexes extends Luce
w.close();
IndexReader sr = getOnlySegmentReader(r3);
assertEquals(2, sr.numDocs());
- IndexDocValues docValues = sr.perDocValues().docValues("dv");
+ DocValues docValues = sr.docValues("dv");
assertNotNull(docValues);
r3.close();
d3.close();
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestDuelingCodecs.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestDuelingCodecs.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestDuelingCodecs.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestDuelingCodecs.java Tue Dec 13 18:39:06 2011
@@ -18,17 +18,16 @@ package org.apache.lucene.index;
*/
import java.io.IOException;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
+import java.util.Set;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
+import org.apache.lucene.index.IndexReader.FieldOption;
import org.apache.lucene.index.codecs.Codec;
-import org.apache.lucene.index.codecs.PerDocValues;
-import org.apache.lucene.index.values.IndexDocValues;
-import org.apache.lucene.index.values.IndexDocValues.Source;
-import org.apache.lucene.index.values.ValueType;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.Bits;
@@ -520,29 +519,15 @@ public class TestDuelingCodecs extends L
* checks that docvalues across all fields are equivalent
*/
public void assertDocValues(IndexReader leftReader, IndexReader rightReader) throws Exception {
- PerDocValues leftPerDoc = MultiPerDocValues.getPerDocs(leftReader);
- PerDocValues rightPerDoc = MultiPerDocValues.getPerDocs(rightReader);
-
- Fields leftFields = MultiFields.getFields(leftReader);
- Fields rightFields = MultiFields.getFields(rightReader);
- // Fields could be null if there are no postings,
- // but then it must be null for both
- if (leftFields == null || rightFields == null) {
- assertNull(info, leftFields);
- assertNull(info, rightFields);
- return;
- }
-
- FieldsEnum fieldsEnum = leftFields.iterator();
- String field;
- while ((field = fieldsEnum.next()) != null) {
- IndexDocValues leftDocValues = leftPerDoc.docValues(field);
- IndexDocValues rightDocValues = rightPerDoc.docValues(field);
- if (leftDocValues == null || rightDocValues == null) {
- assertNull(info, leftDocValues);
- assertNull(info, rightDocValues);
- continue;
- }
+ Set<String> leftValues = new HashSet<String>(leftReader.getFieldNames(FieldOption.DOC_VALUES));
+ Set<String> rightValues = new HashSet<String>(rightReader.getFieldNames(FieldOption.DOC_VALUES));
+ assertEquals(info, leftValues, rightValues);
+
+ for (String field : leftValues) {
+ DocValues leftDocValues = MultiDocValues.getDocValues(leftReader, field);
+ DocValues rightDocValues = MultiDocValues.getDocValues(rightReader, field);
+ assertNotNull(info, leftDocValues);
+ assertNotNull(info, rightDocValues);
assertDocValuesSource(leftDocValues.getDirectSource(), rightDocValues.getDirectSource());
assertDocValuesSource(leftDocValues.getSource(), rightDocValues.getSource());
}
@@ -551,8 +536,8 @@ public class TestDuelingCodecs extends L
/**
* checks source API
*/
- public void assertDocValuesSource(Source left, Source right) throws Exception {
- ValueType leftType = left.type();
+ public void assertDocValuesSource(DocValues.Source left, DocValues.Source right) throws Exception {
+ DocValues.Type leftType = left.type();
assertEquals(info, leftType, right.type());
switch(leftType) {
case VAR_INTS:
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestFieldInfos.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestFieldInfos.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestFieldInfos.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestFieldInfos.java Tue Dec 13 18:39:06 2011
@@ -27,7 +27,6 @@ import org.apache.lucene.index.codecs.Fi
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.IndexOutput;
-import org.junit.Ignore;
import java.io.IOException;
import java.util.Arrays;
@@ -82,7 +81,6 @@ public class TestFieldInfos extends Luce
info = readIn.fieldInfo("textField2");
assertTrue(info != null);
- assertTrue(info.storeTermVector == true);
assertTrue(info.omitNorms == false);
info = readIn.fieldInfo("textField3");
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexableField.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexableField.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexableField.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestIndexableField.java Tue Dec 13 18:39:06 2011
@@ -28,8 +28,7 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.NumericField.DataType;
import org.apache.lucene.document.NumericField;
import org.apache.lucene.document.StringField;
-import org.apache.lucene.index.values.PerDocFieldValues;
-import org.apache.lucene.index.values.ValueType;
+import org.apache.lucene.index.DocValues;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.IndexSearcher;
@@ -157,12 +156,12 @@ public class TestIndexableField extends
// TODO: randomly enable doc values
@Override
- public PerDocFieldValues docValues() {
+ public DocValue docValue() {
return null;
}
@Override
- public ValueType docValuesType() {
+ public DocValues.Type docValueType() {
return null;
}
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/values/TestDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/values/TestDocValues.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/values/TestDocValues.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/values/TestDocValues.java Tue Dec 13 18:39:06 2011
@@ -20,8 +20,14 @@ package org.apache.lucene.index.values;
import java.io.IOException;
import java.util.Comparator;
-import org.apache.lucene.index.values.IndexDocValues.SortedSource;
-import org.apache.lucene.index.values.IndexDocValues.Source;
+import org.apache.lucene.index.DocValues;
+import org.apache.lucene.index.DocValues.SortedSource;
+import org.apache.lucene.index.DocValues.Source;
+import org.apache.lucene.index.DocValues.Type;
+import org.apache.lucene.index.codecs.lucene40.values.Bytes;
+import org.apache.lucene.index.codecs.lucene40.values.Floats;
+import org.apache.lucene.index.codecs.lucene40.values.Ints;
+import org.apache.lucene.index.codecs.lucene40.values.Writer;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.Counter;
@@ -29,6 +35,7 @@ import org.apache.lucene.util.LuceneTest
import org.apache.lucene.util.UnicodeUtil;
import org.apache.lucene.util._TestUtil;
+// TODO: some of this should be under lucene40 codec tests? is talking to codec directly?f
public class TestDocValues extends LuceneTestCase {
private static final Comparator<BytesRef> COMP = BytesRef.getUTF8SortedAsUnicodeComparator();
// TODO -- for sorted test, do our own Sort of the
@@ -76,12 +83,12 @@ public class TestDocValues extends Lucen
w.finish(maxDoc);
assertEquals(0, trackBytes.get());
- IndexDocValues r = Bytes.getValues(dir, "test", mode, fixedSize, maxDoc, COMP, newIOContext(random));
+ DocValues r = Bytes.getValues(dir, "test", mode, fixedSize, maxDoc, COMP, newIOContext(random));
// Verify we can load source twice:
for (int iter = 0; iter < 2; iter++) {
Source s;
- IndexDocValues.SortedSource ss;
+ DocValues.SortedSource ss;
if (mode == Bytes.Mode.SORTED) {
// default is unicode so we can simply pass null here
s = ss = getSortedSource(r);
@@ -155,19 +162,19 @@ public class TestDocValues extends Lucen
{ Long.MIN_VALUE + 1, 1 }, { -1, Long.MAX_VALUE },
{ Long.MIN_VALUE, -1 }, { 1, Long.MAX_VALUE },
{ -1, Long.MAX_VALUE - 1 }, { Long.MIN_VALUE + 2, 1 }, };
- ValueType[] expectedTypes = new ValueType[] { ValueType.FIXED_INTS_64,
- ValueType.FIXED_INTS_64, ValueType.FIXED_INTS_64,
- ValueType.FIXED_INTS_64, ValueType.VAR_INTS, ValueType.VAR_INTS,
- ValueType.VAR_INTS, };
+ Type[] expectedTypes = new Type[] { Type.FIXED_INTS_64,
+ Type.FIXED_INTS_64, Type.FIXED_INTS_64,
+ Type.FIXED_INTS_64, Type.VAR_INTS, Type.VAR_INTS,
+ Type.VAR_INTS, };
for (int i = 0; i < minMax.length; i++) {
Directory dir = newDirectory();
final Counter trackBytes = Counter.newCounter();
- Writer w = Ints.getWriter(dir, "test", trackBytes, ValueType.VAR_INTS, newIOContext(random));
+ Writer w = Ints.getWriter(dir, "test", trackBytes, Type.VAR_INTS, newIOContext(random));
w.add(0, minMax[i][0]);
w.add(1, minMax[i][1]);
w.finish(2);
assertEquals(0, trackBytes.get());
- IndexDocValues r = Ints.getValues(dir, "test", 2, ValueType.VAR_INTS, newIOContext(random));
+ DocValues r = Ints.getValues(dir, "test", 2, Type.VAR_INTS, newIOContext(random));
Source source = getSource(r);
assertEquals(i + " with min: " + minMax[i][0] + " max: " + minMax[i][1],
expectedTypes[i], source.type());
@@ -180,14 +187,14 @@ public class TestDocValues extends Lucen
}
public void testVInts() throws IOException {
- testInts(ValueType.VAR_INTS, 63);
+ testInts(Type.VAR_INTS, 63);
}
public void testFixedInts() throws IOException {
- testInts(ValueType.FIXED_INTS_64, 63);
- testInts(ValueType.FIXED_INTS_32, 31);
- testInts(ValueType.FIXED_INTS_16, 15);
- testInts(ValueType.FIXED_INTS_8, 7);
+ testInts(Type.FIXED_INTS_64, 63);
+ testInts(Type.FIXED_INTS_32, 31);
+ testInts(Type.FIXED_INTS_16, 15);
+ testInts(Type.FIXED_INTS_8, 7);
}
@@ -195,12 +202,12 @@ public class TestDocValues extends Lucen
byte[] sourceArray = new byte[] {1,2,3};
Directory dir = newDirectory();
final Counter trackBytes = Counter.newCounter();
- Writer w = Ints.getWriter(dir, "test", trackBytes, ValueType.FIXED_INTS_8, newIOContext(random));
+ Writer w = Ints.getWriter(dir, "test", trackBytes, Type.FIXED_INTS_8, newIOContext(random));
for (int i = 0; i < sourceArray.length; i++) {
w.add(i, (long) sourceArray[i]);
}
w.finish(sourceArray.length);
- IndexDocValues r = Ints.getValues(dir, "test", sourceArray.length, ValueType.FIXED_INTS_8, newIOContext(random));
+ DocValues r = Ints.getValues(dir, "test", sourceArray.length, Type.FIXED_INTS_8, newIOContext(random));
Source source = r.getSource();
assertTrue(source.hasArray());
byte[] loaded = ((byte[])source.getArray());
@@ -216,12 +223,12 @@ public class TestDocValues extends Lucen
short[] sourceArray = new short[] {1,2,3};
Directory dir = newDirectory();
final Counter trackBytes = Counter.newCounter();
- Writer w = Ints.getWriter(dir, "test", trackBytes, ValueType.FIXED_INTS_16, newIOContext(random));
+ Writer w = Ints.getWriter(dir, "test", trackBytes, Type.FIXED_INTS_16, newIOContext(random));
for (int i = 0; i < sourceArray.length; i++) {
w.add(i, (long) sourceArray[i]);
}
w.finish(sourceArray.length);
- IndexDocValues r = Ints.getValues(dir, "test", sourceArray.length, ValueType.FIXED_INTS_16, newIOContext(random));
+ DocValues r = Ints.getValues(dir, "test", sourceArray.length, Type.FIXED_INTS_16, newIOContext(random));
Source source = r.getSource();
assertTrue(source.hasArray());
short[] loaded = ((short[])source.getArray());
@@ -237,12 +244,12 @@ public class TestDocValues extends Lucen
long[] sourceArray = new long[] {1,2,3};
Directory dir = newDirectory();
final Counter trackBytes = Counter.newCounter();
- Writer w = Ints.getWriter(dir, "test", trackBytes, ValueType.FIXED_INTS_64, newIOContext(random));
+ Writer w = Ints.getWriter(dir, "test", trackBytes, Type.FIXED_INTS_64, newIOContext(random));
for (int i = 0; i < sourceArray.length; i++) {
w.add(i, sourceArray[i]);
}
w.finish(sourceArray.length);
- IndexDocValues r = Ints.getValues(dir, "test", sourceArray.length, ValueType.FIXED_INTS_64, newIOContext(random));
+ DocValues r = Ints.getValues(dir, "test", sourceArray.length, Type.FIXED_INTS_64, newIOContext(random));
Source source = r.getSource();
assertTrue(source.hasArray());
long[] loaded = ((long[])source.getArray());
@@ -258,12 +265,12 @@ public class TestDocValues extends Lucen
int[] sourceArray = new int[] {1,2,3};
Directory dir = newDirectory();
final Counter trackBytes = Counter.newCounter();
- Writer w = Ints.getWriter(dir, "test", trackBytes, ValueType.FIXED_INTS_32, newIOContext(random));
+ Writer w = Ints.getWriter(dir, "test", trackBytes, Type.FIXED_INTS_32, newIOContext(random));
for (int i = 0; i < sourceArray.length; i++) {
w.add(i, (long) sourceArray[i]);
}
w.finish(sourceArray.length);
- IndexDocValues r = Ints.getValues(dir, "test", sourceArray.length, ValueType.FIXED_INTS_32, newIOContext(random));
+ DocValues r = Ints.getValues(dir, "test", sourceArray.length, Type.FIXED_INTS_32, newIOContext(random));
Source source = r.getSource();
assertTrue(source.hasArray());
int[] loaded = ((int[])source.getArray());
@@ -279,12 +286,12 @@ public class TestDocValues extends Lucen
float[] sourceArray = new float[] {1,2,3};
Directory dir = newDirectory();
final Counter trackBytes = Counter.newCounter();
- Writer w = Floats.getWriter(dir, "test", trackBytes, newIOContext(random), ValueType.FLOAT_32);
+ Writer w = Floats.getWriter(dir, "test", trackBytes, newIOContext(random), Type.FLOAT_32);
for (int i = 0; i < sourceArray.length; i++) {
w.add(i, sourceArray[i]);
}
w.finish(sourceArray.length);
- IndexDocValues r = Floats.getValues(dir, "test", 3, newIOContext(random), ValueType.FLOAT_32);
+ DocValues r = Floats.getValues(dir, "test", 3, newIOContext(random), Type.FLOAT_32);
Source source = r.getSource();
assertTrue(source.hasArray());
float[] loaded = ((float[])source.getArray());
@@ -300,12 +307,12 @@ public class TestDocValues extends Lucen
double[] sourceArray = new double[] {1,2,3};
Directory dir = newDirectory();
final Counter trackBytes = Counter.newCounter();
- Writer w = Floats.getWriter(dir, "test", trackBytes, newIOContext(random), ValueType.FLOAT_64);
+ Writer w = Floats.getWriter(dir, "test", trackBytes, newIOContext(random), Type.FLOAT_64);
for (int i = 0; i < sourceArray.length; i++) {
w.add(i, sourceArray[i]);
}
w.finish(sourceArray.length);
- IndexDocValues r = Floats.getValues(dir, "test", 3, newIOContext(random), ValueType.FLOAT_64);
+ DocValues r = Floats.getValues(dir, "test", 3, newIOContext(random), Type.FLOAT_64);
Source source = r.getSource();
assertTrue(source.hasArray());
double[] loaded = ((double[])source.getArray());
@@ -317,7 +324,7 @@ public class TestDocValues extends Lucen
dir.close();
}
- private void testInts(ValueType type, int maxBit) throws IOException {
+ private void testInts(Type type, int maxBit) throws IOException {
long maxV = 1;
final int NUM_VALUES = 333 + random.nextInt(333);
final long[] values = new long[NUM_VALUES];
@@ -334,7 +341,7 @@ public class TestDocValues extends Lucen
w.finish(NUM_VALUES + additionalDocs);
assertEquals(0, trackBytes.get());
- IndexDocValues r = Ints.getValues(dir, "test", NUM_VALUES + additionalDocs, type, newIOContext(random));
+ DocValues r = Ints.getValues(dir, "test", NUM_VALUES + additionalDocs, type, newIOContext(random));
for (int iter = 0; iter < 2; iter++) {
Source s = getSource(r);
assertEquals(type, s.type());
@@ -350,17 +357,17 @@ public class TestDocValues extends Lucen
}
public void testFloats4() throws IOException {
- runTestFloats(ValueType.FLOAT_32, 0.00001);
+ runTestFloats(Type.FLOAT_32, 0.00001);
}
- private void runTestFloats(ValueType type, double delta) throws IOException {
+ private void runTestFloats(Type type, double delta) throws IOException {
Directory dir = newDirectory();
final Counter trackBytes = Counter.newCounter();
Writer w = Floats.getWriter(dir, "test", trackBytes, newIOContext(random), type);
final int NUM_VALUES = 777 + random.nextInt(777);;
final double[] values = new double[NUM_VALUES];
for (int i = 0; i < NUM_VALUES; i++) {
- final double v = type == ValueType.FLOAT_32 ? random.nextFloat() : random
+ final double v = type == Type.FLOAT_32 ? random.nextFloat() : random
.nextDouble();
values[i] = v;
w.add(i, v);
@@ -369,7 +376,7 @@ public class TestDocValues extends Lucen
w.finish(NUM_VALUES + additionalValues);
assertEquals(0, trackBytes.get());
- IndexDocValues r = Floats.getValues(dir, "test", NUM_VALUES + additionalValues, newIOContext(random), type);
+ DocValues r = Floats.getValues(dir, "test", NUM_VALUES + additionalValues, newIOContext(random), type);
for (int iter = 0; iter < 2; iter++) {
Source s = getSource(r);
for (int i = 0; i < NUM_VALUES; i++) {
@@ -381,11 +388,11 @@ public class TestDocValues extends Lucen
}
public void testFloats8() throws IOException {
- runTestFloats(ValueType.FLOAT_64, 0.0);
+ runTestFloats(Type.FLOAT_64, 0.0);
}
- private Source getSource(IndexDocValues values) throws IOException {
+ private Source getSource(DocValues values) throws IOException {
// getSource uses cache internally
switch(random.nextInt(5)) {
case 3:
@@ -399,7 +406,7 @@ public class TestDocValues extends Lucen
}
}
- private SortedSource getSortedSource(IndexDocValues values) throws IOException {
+ private SortedSource getSortedSource(DocValues values) throws IOException {
return getSource(values).asSortedSource();
}
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/values/TestDocValuesIndexing.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/values/TestDocValuesIndexing.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/values/TestDocValuesIndexing.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/values/TestDocValuesIndexing.java Tue Dec 13 18:39:06 2011
@@ -27,21 +27,23 @@ import java.util.List;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
-import org.apache.lucene.document.IndexDocValuesField;
+import org.apache.lucene.document.DocValuesField;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.index.DocValues;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.LogDocMergePolicy;
import org.apache.lucene.index.LogMergePolicy;
-import org.apache.lucene.index.MultiPerDocValues;
+import org.apache.lucene.index.MultiDocValues;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
+import org.apache.lucene.index.DocValues.Source;
+import org.apache.lucene.index.DocValues.Type;
import org.apache.lucene.index.codecs.Codec;
-import org.apache.lucene.index.codecs.PerDocValues;
-import org.apache.lucene.index.values.IndexDocValues.Source;
+import org.apache.lucene.index.codecs.PerDocProducer;
import org.apache.lucene.search.*;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.LockObtainFailedException;
@@ -76,7 +78,7 @@ public class TestDocValuesIndexing exten
IndexWriter writer = new IndexWriter(dir, writerConfig(false));
for (int i = 0; i < 5; i++) {
Document doc = new Document();
- IndexDocValuesField valuesField = new IndexDocValuesField("docId");
+ DocValuesField valuesField = new DocValuesField("docId");
valuesField.setInt(i);
doc.add(valuesField);
doc.add(new TextField("docId", "" + i));
@@ -102,7 +104,7 @@ public class TestDocValuesIndexing exten
TopDocs search = searcher.search(query, 10);
assertEquals(5, search.totalHits);
ScoreDoc[] scoreDocs = search.scoreDocs;
- IndexDocValues docValues = MultiPerDocValues.getPerDocs(reader).docValues("docId");
+ DocValues docValues = MultiDocValues.getDocValues(reader, "docId");
Source source = docValues.getSource();
for (int i = 0; i < scoreDocs.length; i++) {
assertEquals(i, scoreDocs[i].doc);
@@ -130,10 +132,10 @@ public class TestDocValuesIndexing exten
public void testAddIndexes() throws IOException {
int valuesPerIndex = 10;
- List<ValueType> values = Arrays.asList(ValueType.values());
+ List<Type> values = Arrays.asList(Type.values());
Collections.shuffle(values, random);
- ValueType first = values.get(0);
- ValueType second = values.get(1);
+ Type first = values.get(0);
+ Type second = values.get(1);
// index first index
Directory d_1 = newDirectory();
IndexWriter w_1 = new IndexWriter(d_1, writerConfig(random.nextBoolean()));
@@ -256,11 +258,11 @@ public class TestDocValuesIndexing exten
Directory d = newDirectory();
IndexWriter w = new IndexWriter(d, cfg);
final int numValues = 50 + atLeast(10);
- final List<ValueType> numVariantList = new ArrayList<ValueType>(NUMERICS);
+ final List<Type> numVariantList = new ArrayList<Type>(NUMERICS);
// run in random order to test if fill works correctly during merges
Collections.shuffle(numVariantList, random);
- for (ValueType val : numVariantList) {
+ for (Type val : numVariantList) {
FixedBitSet deleted = indexValues(w, numValues, val, numVariantList,
withDeletions, 7);
List<Closeable> closeables = new ArrayList<Closeable>();
@@ -277,7 +279,7 @@ public class TestDocValuesIndexing exten
case FIXED_INTS_32:
case FIXED_INTS_64:
case VAR_INTS: {
- IndexDocValues intsReader = getDocValues(r, val.name());
+ DocValues intsReader = getDocValues(r, val.name());
assertNotNull(intsReader);
Source ints = getSource(intsReader);
@@ -298,7 +300,7 @@ public class TestDocValuesIndexing exten
break;
case FLOAT_32:
case FLOAT_64: {
- IndexDocValues floatReader = getDocValues(r, val.name());
+ DocValues floatReader = getDocValues(r, val.name());
assertNotNull(floatReader);
Source floats = getSource(floatReader);
for (int i = 0; i < base; i++) {
@@ -333,11 +335,11 @@ public class TestDocValuesIndexing exten
throws CorruptIndexException, LockObtainFailedException, IOException {
final Directory d = newDirectory();
IndexWriter w = new IndexWriter(d, cfg);
- final List<ValueType> byteVariantList = new ArrayList<ValueType>(BYTES);
+ final List<Type> byteVariantList = new ArrayList<Type>(BYTES);
// run in random order to test if fill works correctly during merges
Collections.shuffle(byteVariantList, random);
final int numValues = 50 + atLeast(10);
- for (ValueType byteIndexValue : byteVariantList) {
+ for (Type byteIndexValue : byteVariantList) {
List<Closeable> closeables = new ArrayList<Closeable>();
final int bytesSize = 1 + atLeast(50);
FixedBitSet deleted = indexValues(w, numValues, byteIndexValue,
@@ -346,7 +348,7 @@ public class TestDocValuesIndexing exten
assertEquals(0, r.numDeletedDocs());
final int numRemainingValues = numValues - deleted.cardinality();
final int base = r.numDocs() - numRemainingValues;
- IndexDocValues bytesReader = getDocValues(r, byteIndexValue.name());
+ DocValues bytesReader = getDocValues(r, byteIndexValue.name());
assertNotNull("field " + byteIndexValue.name()
+ " returned null reader - maybe merged failed", bytesReader);
Source bytes = getSource(bytesReader);
@@ -416,27 +418,11 @@ public class TestDocValuesIndexing exten
d.close();
}
- private IndexDocValues getDocValues(IndexReader reader, String field)
- throws IOException {
- boolean singleSeg = reader.getSequentialSubReaders().length == 1;
- PerDocValues perDoc = singleSeg ? reader.getSequentialSubReaders()[0].perDocValues()
- : MultiPerDocValues.getPerDocs(reader);
- switch (random.nextInt(singleSeg ? 3 : 2)) { // case 2 only if single seg
- case 0:
- return perDoc.docValues(field);
- case 1:
- IndexDocValues docValues = perDoc.docValues(field);
- if (docValues != null) {
- return docValues;
- }
- throw new RuntimeException("no such field " + field);
- case 2:// this only works if we are on a single seg index!
- return reader.getSequentialSubReaders()[0].docValues(field);
- }
- throw new RuntimeException();
+ private DocValues getDocValues(IndexReader reader, String field) throws IOException {
+ return MultiDocValues.getDocValues(reader, field);
}
- private Source getSource(IndexDocValues values) throws IOException {
+ private Source getSource(DocValues values) throws IOException {
// getSource uses cache internally
switch(random.nextInt(5)) {
case 3:
@@ -451,24 +437,24 @@ public class TestDocValuesIndexing exten
}
- private static EnumSet<ValueType> BYTES = EnumSet.of(ValueType.BYTES_FIXED_DEREF,
- ValueType.BYTES_FIXED_STRAIGHT, ValueType.BYTES_VAR_DEREF,
- ValueType.BYTES_VAR_STRAIGHT, ValueType.BYTES_FIXED_SORTED, ValueType.BYTES_VAR_SORTED);
-
- private static EnumSet<ValueType> NUMERICS = EnumSet.of(ValueType.VAR_INTS,
- ValueType.FIXED_INTS_16, ValueType.FIXED_INTS_32,
- ValueType.FIXED_INTS_64,
- ValueType.FIXED_INTS_8,
- ValueType.FLOAT_32,
- ValueType.FLOAT_64);
+ private static EnumSet<Type> BYTES = EnumSet.of(Type.BYTES_FIXED_DEREF,
+ Type.BYTES_FIXED_STRAIGHT, Type.BYTES_VAR_DEREF,
+ Type.BYTES_VAR_STRAIGHT, Type.BYTES_FIXED_SORTED, Type.BYTES_VAR_SORTED);
+
+ private static EnumSet<Type> NUMERICS = EnumSet.of(Type.VAR_INTS,
+ Type.FIXED_INTS_16, Type.FIXED_INTS_32,
+ Type.FIXED_INTS_64,
+ Type.FIXED_INTS_8,
+ Type.FLOAT_32,
+ Type.FLOAT_64);
- private FixedBitSet indexValues(IndexWriter w, int numValues, ValueType value,
- List<ValueType> valueVarList, boolean withDeletions, int bytesSize)
+ private FixedBitSet indexValues(IndexWriter w, int numValues, Type value,
+ List<Type> valueVarList, boolean withDeletions, int bytesSize)
throws CorruptIndexException, IOException {
final boolean isNumeric = NUMERICS.contains(value);
FixedBitSet deleted = new FixedBitSet(numValues);
Document doc = new Document();
- IndexDocValuesField valField = new IndexDocValuesField(value.name());
+ DocValuesField valField = new DocValuesField(value.name());
doc.add(valField);
final BytesRef bytesRef = new BytesRef();
@@ -522,7 +508,7 @@ public class TestDocValuesIndexing exten
if (i % 7 == 0) {
if (withDeletions && random.nextBoolean()) {
- ValueType val = valueVarList.get(random.nextInt(1 + valueVarList
+ Type val = valueVarList.get(random.nextInt(1 + valueVarList
.indexOf(value)));
final int randInt = val == value ? random.nextInt(1 + i) : random
.nextInt(numValues);
@@ -545,11 +531,11 @@ public class TestDocValuesIndexing exten
return deleted;
}
- public void testMultiValuedIndexDocValuesField() throws Exception {
+ public void testMultiValuedDocValuesField() throws Exception {
Directory d = newDirectory();
RandomIndexWriter w = new RandomIndexWriter(random, d);
Document doc = new Document();
- IndexDocValuesField f = new IndexDocValuesField("field");
+ DocValuesField f = new DocValuesField("field");
f.setInt(17);
// Index doc values are single-valued so we should not
// be able to add same field more than once:
@@ -568,7 +554,7 @@ public class TestDocValuesIndexing exten
w.forceMerge(1);
IndexReader r = w.getReader();
w.close();
- assertEquals(17, r.getSequentialSubReaders()[0].perDocValues().docValues("field").load().getInt(0));
+ assertEquals(17, r.getSequentialSubReaders()[0].docValues("field").load().getInt(0));
r.close();
d.close();
}
@@ -577,12 +563,12 @@ public class TestDocValuesIndexing exten
Directory d = newDirectory();
RandomIndexWriter w = new RandomIndexWriter(random, d);
Document doc = new Document();
- IndexDocValuesField f = new IndexDocValuesField("field");
+ DocValuesField f = new DocValuesField("field");
f.setInt(17);
// Index doc values are single-valued so we should not
// be able to add same field more than once:
doc.add(f);
- IndexDocValuesField f2 = new IndexDocValuesField("field");
+ DocValuesField f2 = new DocValuesField("field");
f2.setFloat(22.0);
doc.add(f2);
try {
@@ -598,7 +584,7 @@ public class TestDocValuesIndexing exten
w.forceMerge(1);
IndexReader r = w.getReader();
w.close();
- assertEquals(17, r.getSequentialSubReaders()[0].perDocValues().docValues("field").load().getInt(0));
+ assertEquals(17, r.getSequentialSubReaders()[0].docValues("field").load().getInt(0));
r.close();
d.close();
}
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/values/TestTypePromotion.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/values/TestTypePromotion.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/values/TestTypePromotion.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/values/TestTypePromotion.java Tue Dec 13 18:39:06 2011
@@ -7,17 +7,20 @@ import java.util.Random;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
-import org.apache.lucene.document.IndexDocValuesField;
+import org.apache.lucene.document.DocValuesField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexReader.ReaderContext;
+import org.apache.lucene.index.DocValues;
+import org.apache.lucene.index.DocValues.Source;
+import org.apache.lucene.index.DocValues.Type;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.NoMergePolicy;
import org.apache.lucene.index.SlowMultiReaderWrapper;
import org.apache.lucene.index.codecs.Codec;
-import org.apache.lucene.index.values.IndexDocValues.Source;
+import org.apache.lucene.index.codecs.lucene40.values.BytesRefUtils;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LuceneTestCase;
@@ -46,22 +49,22 @@ public class TestTypePromotion extends L
assumeFalse("cannot work with preflex codec", Codec.getDefault().getName().equals("Lucene3x"));
}
- private static EnumSet<ValueType> INTEGERS = EnumSet.of(ValueType.VAR_INTS,
- ValueType.FIXED_INTS_16, ValueType.FIXED_INTS_32,
- ValueType.FIXED_INTS_64, ValueType.FIXED_INTS_8);
-
- private static EnumSet<ValueType> FLOATS = EnumSet.of(ValueType.FLOAT_32,
- ValueType.FLOAT_64);
-
- private static EnumSet<ValueType> UNSORTED_BYTES = EnumSet.of(
- ValueType.BYTES_FIXED_DEREF, ValueType.BYTES_FIXED_STRAIGHT,
- ValueType.BYTES_VAR_STRAIGHT, ValueType.BYTES_VAR_DEREF);
+ private static EnumSet<Type> INTEGERS = EnumSet.of(Type.VAR_INTS,
+ Type.FIXED_INTS_16, Type.FIXED_INTS_32,
+ Type.FIXED_INTS_64, Type.FIXED_INTS_8);
+
+ private static EnumSet<Type> FLOATS = EnumSet.of(Type.FLOAT_32,
+ Type.FLOAT_64);
+
+ private static EnumSet<Type> UNSORTED_BYTES = EnumSet.of(
+ Type.BYTES_FIXED_DEREF, Type.BYTES_FIXED_STRAIGHT,
+ Type.BYTES_VAR_STRAIGHT, Type.BYTES_VAR_DEREF);
- private static EnumSet<ValueType> SORTED_BYTES = EnumSet.of(
- ValueType.BYTES_FIXED_SORTED, ValueType.BYTES_VAR_SORTED);
+ private static EnumSet<Type> SORTED_BYTES = EnumSet.of(
+ Type.BYTES_FIXED_SORTED, Type.BYTES_VAR_SORTED);
- public ValueType randomValueType(EnumSet<ValueType> typeEnum, Random random) {
- ValueType[] array = typeEnum.toArray(new ValueType[0]);
+ public Type randomValueType(EnumSet<Type> typeEnum, Random random) {
+ Type[] array = typeEnum.toArray(new Type[0]);
return array[random.nextInt(array.length)];
}
@@ -69,7 +72,7 @@ public class TestTypePromotion extends L
Int, Float, Byte
}
- private void runTest(EnumSet<ValueType> types, TestType type)
+ private void runTest(EnumSet<Type> types, TestType type)
throws CorruptIndexException, IOException {
Directory dir = newDirectory();
IndexWriter writer = new IndexWriter(dir,
@@ -78,11 +81,11 @@ public class TestTypePromotion extends L
int num_2 = atLeast(200);
int num_3 = atLeast(200);
long[] values = new long[num_1 + num_2 + num_3];
- index(writer, new IndexDocValuesField("promote"),
+ index(writer, new DocValuesField("promote"),
randomValueType(types, random), values, 0, num_1);
writer.commit();
- index(writer, new IndexDocValuesField("promote"),
+ index(writer, new DocValuesField("promote"),
randomValueType(types, random), values, num_1, num_2);
writer.commit();
@@ -93,7 +96,7 @@ public class TestTypePromotion extends L
Directory dir_2 = newDirectory() ;
IndexWriter writer_2 = new IndexWriter(dir_2,
newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)));
- index(writer_2, new IndexDocValuesField("promote"),
+ index(writer_2, new DocValuesField("promote"),
randomValueType(types, random), values, num_1 + num_2, num_3);
writer_2.commit();
writer_2.close();
@@ -109,7 +112,7 @@ public class TestTypePromotion extends L
}
dir_2.close();
} else {
- index(writer, new IndexDocValuesField("promote"),
+ index(writer, new DocValuesField("promote"),
randomValueType(types, random), values, num_1 + num_2, num_3);
}
@@ -126,7 +129,7 @@ public class TestTypePromotion extends L
assertEquals(1, reader.getSequentialSubReaders().length);
ReaderContext topReaderContext = reader.getTopReaderContext();
ReaderContext[] children = topReaderContext.children();
- IndexDocValues docValues = children[0].reader.docValues("promote");
+ DocValues docValues = children[0].reader.docValues("promote");
assertEquals(1, children.length);
Source directSource = docValues.getDirectSource();
for (int i = 0; i < values.length; i++) {
@@ -171,8 +174,8 @@ public class TestTypePromotion extends L
reader.close();
}
- public void index(IndexWriter writer, IndexDocValuesField valField,
- ValueType valueType, long[] values, int offset, int num)
+ public void index(IndexWriter writer, DocValuesField valField,
+ Type valueType, long[] values, int offset, int num)
throws CorruptIndexException, IOException {
BytesRef ref = new BytesRef(new byte[] { 1, 2, 3, 4 });
for (int i = offset; i < offset + num; i++) {
@@ -266,7 +269,7 @@ public class TestTypePromotion extends L
int num_1 = atLeast(200);
int num_2 = atLeast(200);
long[] values = new long[num_1 + num_2];
- index(writer, new IndexDocValuesField("promote"),
+ index(writer, new DocValuesField("promote"),
randomValueType(INTEGERS, random), values, 0, num_1);
writer.commit();
@@ -275,7 +278,7 @@ public class TestTypePromotion extends L
Directory dir_2 = newDirectory() ;
IndexWriter writer_2 = new IndexWriter(dir_2,
newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)));
- index(writer_2, new IndexDocValuesField("promote"),
+ index(writer_2, new DocValuesField("promote"),
randomValueType(random.nextBoolean() ? UNSORTED_BYTES : SORTED_BYTES, random), values, num_1, num_2);
writer_2.commit();
writer_2.close();
@@ -289,7 +292,7 @@ public class TestTypePromotion extends L
}
dir_2.close();
} else {
- index(writer, new IndexDocValuesField("promote"),
+ index(writer, new DocValuesField("promote"),
randomValueType(random.nextBoolean() ? UNSORTED_BYTES : SORTED_BYTES, random), values, num_1, num_2);
writer.commit();
}
@@ -306,10 +309,10 @@ public class TestTypePromotion extends L
assertEquals(1, reader.getSequentialSubReaders().length);
ReaderContext topReaderContext = reader.getTopReaderContext();
ReaderContext[] children = topReaderContext.children();
- IndexDocValues docValues = children[0].reader.docValues("promote");
+ DocValues docValues = children[0].reader.docValues("promote");
assertNotNull(docValues);
assertValues(TestType.Byte, dir, values);
- assertEquals(ValueType.BYTES_VAR_STRAIGHT, docValues.type());
+ assertEquals(Type.BYTES_VAR_STRAIGHT, docValues.type());
reader.close();
dir.close();
}
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestDocValuesScoring.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestDocValuesScoring.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestDocValuesScoring.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestDocValuesScoring.java Tue Dec 13 18:39:06 2011
@@ -21,15 +21,15 @@ import java.io.IOException;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
-import org.apache.lucene.document.IndexDocValuesField;
+import org.apache.lucene.document.DocValuesField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.FieldInvertState;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
+import org.apache.lucene.index.DocValues.Source;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.codecs.Codec;
-import org.apache.lucene.index.values.IndexDocValues.Source;
import org.apache.lucene.search.similarities.DefaultSimilarityProvider;
import org.apache.lucene.search.similarities.Similarity;
import org.apache.lucene.search.similarities.SimilarityProvider;
@@ -48,7 +48,7 @@ public class TestDocValuesScoring extend
private static final float SCORE_EPSILON = 0.001f; /* for comparing floats */
public void testSimple() throws Exception {
- assumeFalse("PreFlex codec cannot work with IndexDocValues!",
+ assumeFalse("PreFlex codec cannot work with DocValues!",
"Lucene3x".equals(Codec.getDefault().getName()));
Directory dir = newDirectory();
@@ -56,7 +56,7 @@ public class TestDocValuesScoring extend
Document doc = new Document();
Field field = newField("foo", "", TextField.TYPE_UNSTORED);
doc.add(field);
- IndexDocValuesField dvField = new IndexDocValuesField("foo_boost");
+ DocValuesField dvField = new DocValuesField("foo_boost");
doc.add(dvField);
Field field2 = newField("bar", "", TextField.TYPE_UNSTORED);
doc.add(field2);
Modified: lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestSort.java?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestSort.java (original)
+++ lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestSort.java Tue Dec 13 18:39:06 2011
@@ -28,7 +28,7 @@ import org.apache.lucene.analysis.MockAn
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.FieldType;
-import org.apache.lucene.document.IndexDocValuesField;
+import org.apache.lucene.document.DocValuesField;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.CorruptIndexException;
@@ -42,7 +42,7 @@ import org.apache.lucene.index.RandomInd
import org.apache.lucene.index.SlowMultiReaderWrapper;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.codecs.Codec;
-import org.apache.lucene.index.values.ValueType;
+import org.apache.lucene.index.DocValues;
import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.FieldValueHitQueue.Entry;
import org.apache.lucene.store.Directory;
@@ -121,18 +121,18 @@ public class TestSort extends LuceneTest
dirs.add(indexStore);
RandomIndexWriter writer = new RandomIndexWriter(random, indexStore, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)).setMergePolicy(newLogMergePolicy()));
- final ValueType stringDVType;
+ final DocValues.Type stringDVType;
if (dvStringSorted) {
// Index sorted
- stringDVType = random.nextBoolean() ? ValueType.BYTES_VAR_SORTED : ValueType.BYTES_FIXED_SORTED;
+ stringDVType = random.nextBoolean() ? DocValues.Type.BYTES_VAR_SORTED : DocValues.Type.BYTES_FIXED_SORTED;
} else {
// Index non-sorted
if (random.nextBoolean()) {
// Fixed
- stringDVType = random.nextBoolean() ? ValueType.BYTES_FIXED_STRAIGHT : ValueType.BYTES_FIXED_DEREF;
+ stringDVType = random.nextBoolean() ? DocValues.Type.BYTES_FIXED_STRAIGHT : DocValues.Type.BYTES_FIXED_DEREF;
} else {
// Var
- stringDVType = random.nextBoolean() ? ValueType.BYTES_VAR_STRAIGHT : ValueType.BYTES_VAR_DEREF;
+ stringDVType = random.nextBoolean() ? DocValues.Type.BYTES_VAR_STRAIGHT : DocValues.Type.BYTES_VAR_DEREF;
}
}
@@ -148,21 +148,21 @@ public class TestSort extends LuceneTest
if (data[i][2] != null) {
Field f = new StringField ("int", data[i][2]);
if (supportsDocValues) {
- f = IndexDocValuesField.build(f, ValueType.VAR_INTS);
+ f = DocValuesField.build(f, DocValues.Type.VAR_INTS);
}
doc.add(f);
}
if (data[i][3] != null) {
Field f = new StringField ("float", data[i][3]);
if (supportsDocValues) {
- f = IndexDocValuesField.build(f, ValueType.FLOAT_32);
+ f = DocValuesField.build(f, DocValues.Type.FLOAT_32);
}
doc.add(f);
}
if (data[i][4] != null) {
Field f = new StringField ("string", data[i][4]);
if (supportsDocValues) {
- f = IndexDocValuesField.build(f, stringDVType);
+ f = DocValuesField.build(f, stringDVType);
}
doc.add(f);
}
@@ -172,7 +172,7 @@ public class TestSort extends LuceneTest
if (data[i][8] != null) {
Field f = new StringField ("double", data[i][8]);
if (supportsDocValues) {
- f = IndexDocValuesField.build(f, ValueType.FLOAT_64);
+ f = DocValuesField.build(f, DocValues.Type.FLOAT_64);
}
doc.add(f);
}
@@ -219,13 +219,13 @@ public class TestSort extends LuceneTest
//doc.add (new Field ("contents", Integer.toString(i), Field.Store.NO, Field.Index.ANALYZED));
Field f = new StringField("string", num);
if (supportsDocValues) {
- f = IndexDocValuesField.build(f, ValueType.BYTES_VAR_SORTED);
+ f = DocValuesField.build(f, DocValues.Type.BYTES_VAR_SORTED);
}
doc.add (f);
String num2 = getRandomCharString(getRandomNumber(1, 4), 48, 50);
f = new StringField ("string2", num2);
if (supportsDocValues) {
- f = IndexDocValuesField.build(f, ValueType.BYTES_VAR_SORTED);
+ f = DocValuesField.build(f, DocValues.Type.BYTES_VAR_SORTED);
}
doc.add (f);
doc.add (new Field ("tracer2", num2, onlyStored));
@@ -238,13 +238,13 @@ public class TestSort extends LuceneTest
//doc.add (new Field ("contents", Integer.toString(i), Field.Store.NO, Field.Index.ANALYZED));
f = new StringField("string_fixed", numFixed);
if (supportsDocValues) {
- f = IndexDocValuesField.build(f, ValueType.BYTES_FIXED_SORTED);
+ f = DocValuesField.build(f, DocValues.Type.BYTES_FIXED_SORTED);
}
doc.add (f);
String num2Fixed = getRandomCharString(fixedLen2, 48, 52);
f = new StringField ("string2_fixed", num2Fixed);
if (supportsDocValues) {
- f = IndexDocValuesField.build(f, ValueType.BYTES_FIXED_SORTED);
+ f = DocValuesField.build(f, DocValues.Type.BYTES_FIXED_SORTED);
}
doc.add (f);
doc.add (new Field ("tracer2_fixed", num2Fixed, onlyStored));
Modified: lucene/dev/trunk/modules/grouping/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/modules/grouping/CHANGES.txt?rev=1213844&r1=1213843&r2=1213844&view=diff
==============================================================================
--- lucene/dev/trunk/modules/grouping/CHANGES.txt (original)
+++ lucene/dev/trunk/modules/grouping/CHANGES.txt Tue Dec 13 18:39:06 2011
@@ -17,4 +17,4 @@ LUCENE-3483: Move Function grouping coll
New features
-LUCENE-3496: Support grouping by IndexDocValues. (Martijn van Groningen)
\ No newline at end of file
+LUCENE-3496: Support grouping by DocValues. (Martijn van Groningen)
\ No newline at end of file