mirror of
https://github.com/apache/lucene.git
synced 2025-02-08 02:58:58 +00:00
dump 4.0-internal specific tests (tested in BaseDocValuesFormatTestCase)
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene4547@1439725 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
726659bf9a
commit
348ed1d255
@ -1,469 +0,0 @@
|
|||||||
package org.apache.lucene.codecs.lucene40.values;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
||||||
* contributor license agreements. See the NOTICE file distributed with
|
|
||||||
* this work for additional information regarding copyright ownership.
|
|
||||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
|
||||||
* (the "License"); you may not use this file except in compliance with
|
|
||||||
* the License. You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.Reader;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
import org.apache.lucene.analysis.Analyzer;
|
|
||||||
import org.apache.lucene.analysis.TokenStream;
|
|
||||||
import org.apache.lucene.document.FieldType;
|
|
||||||
import org.apache.lucene.index.IndexableField;
|
|
||||||
import org.apache.lucene.index.IndexableFieldType;
|
|
||||||
import org.apache.lucene.index.StorableField;
|
|
||||||
import org.apache.lucene.store.Directory;
|
|
||||||
import org.apache.lucene.util.BytesRef;
|
|
||||||
import org.apache.lucene.util.Counter;
|
|
||||||
import org.apache.lucene.util.LuceneTestCase;
|
|
||||||
import org.apache.lucene.util.UnicodeUtil;
|
|
||||||
import org.apache.lucene.util._TestUtil;
|
|
||||||
import org.apache.lucene.util.packed.PackedInts;
|
|
||||||
|
|
||||||
// TODO: some of this should be under lucene40 codec tests? is talking to codec directly?f
|
|
||||||
public class TestDocValues extends LuceneTestCase {
|
|
||||||
/* nocommit
|
|
||||||
private static final Comparator<BytesRef> COMP = BytesRef.getUTF8SortedAsUnicodeComparator();
|
|
||||||
// TODO -- for sorted test, do our own Sort of the
|
|
||||||
// values and verify it's identical
|
|
||||||
|
|
||||||
public void testBytesStraight() throws IOException {
|
|
||||||
runTestBytes(Bytes.Mode.STRAIGHT, true);
|
|
||||||
runTestBytes(Bytes.Mode.STRAIGHT, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testBytesDeref() throws IOException {
|
|
||||||
runTestBytes(Bytes.Mode.DEREF, true);
|
|
||||||
runTestBytes(Bytes.Mode.DEREF, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testBytesSorted() throws IOException {
|
|
||||||
runTestBytes(Bytes.Mode.SORTED, true);
|
|
||||||
runTestBytes(Bytes.Mode.SORTED, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void runTestBytes(final Bytes.Mode mode, final boolean fixedSize)
|
|
||||||
throws IOException {
|
|
||||||
DocValueHolder valueHolder = new DocValueHolder();
|
|
||||||
valueHolder.comp = COMP;
|
|
||||||
final BytesRef bytesRef = new BytesRef();
|
|
||||||
|
|
||||||
Directory dir = newDirectory();
|
|
||||||
final Counter trackBytes = Counter.newCounter();
|
|
||||||
DocValuesConsumer w = Bytes.getWriter(dir, "test", mode, fixedSize, COMP, trackBytes, newIOContext(random()),
|
|
||||||
random().nextFloat() * PackedInts.FAST);
|
|
||||||
int maxDoc = 220;
|
|
||||||
final String[] values = new String[maxDoc];
|
|
||||||
final int fixedLength = 1 + atLeast(50);
|
|
||||||
for (int i = 0; i < 100; i++) {
|
|
||||||
final String s;
|
|
||||||
if (i > 0 && random().nextInt(5) <= 2) {
|
|
||||||
// use prior value
|
|
||||||
s = values[2 * random().nextInt(i)];
|
|
||||||
} else {
|
|
||||||
s = _TestUtil.randomFixedByteLengthUnicodeString(random(), fixedSize? fixedLength : 1 + random().nextInt(39));
|
|
||||||
}
|
|
||||||
values[2 * i] = s;
|
|
||||||
|
|
||||||
UnicodeUtil.UTF16toUTF8(s, 0, s.length(), bytesRef);
|
|
||||||
valueHolder.bytes = bytesRef;
|
|
||||||
w.add(2 * i, valueHolder);
|
|
||||||
}
|
|
||||||
w.finish(maxDoc);
|
|
||||||
assertEquals(0, trackBytes.get());
|
|
||||||
|
|
||||||
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;
|
|
||||||
DocValues.SortedSource ss;
|
|
||||||
if (mode == Bytes.Mode.SORTED) {
|
|
||||||
// default is unicode so we can simply pass null here
|
|
||||||
s = ss = getSortedSource(r);
|
|
||||||
} else {
|
|
||||||
s = getSource(r);
|
|
||||||
ss = null;
|
|
||||||
}
|
|
||||||
for (int i = 0; i < 100; i++) {
|
|
||||||
final int idx = 2 * i;
|
|
||||||
assertNotNull("doc " + idx + "; value=" + values[idx], s.getBytes(idx,
|
|
||||||
bytesRef));
|
|
||||||
assertEquals("doc " + idx, values[idx], s.getBytes(idx, bytesRef)
|
|
||||||
.utf8ToString());
|
|
||||||
if (ss != null) {
|
|
||||||
assertEquals("doc " + idx, values[idx], ss.getByOrd(ss.ord(idx),
|
|
||||||
bytesRef).utf8ToString());
|
|
||||||
int ord = ss
|
|
||||||
.getOrdByValue(new BytesRef(values[idx]), new BytesRef());
|
|
||||||
assertTrue(ord >= 0);
|
|
||||||
assertEquals(ss.ord(idx), ord);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Lookup random strings:
|
|
||||||
if (mode == Bytes.Mode.SORTED) {
|
|
||||||
final int valueCount = ss.getValueCount();
|
|
||||||
Random random = random();
|
|
||||||
for (int i = 0; i < 1000; i++) {
|
|
||||||
BytesRef bytesValue = new BytesRef(_TestUtil.randomFixedByteLengthUnicodeString(random, fixedSize? fixedLength : 1 + random.nextInt(39)));
|
|
||||||
int ord = ss.getOrdByValue(bytesValue, new BytesRef());
|
|
||||||
if (ord >= 0) {
|
|
||||||
assertTrue(bytesValue
|
|
||||||
.bytesEquals(ss.getByOrd(ord, bytesRef)));
|
|
||||||
int count = 0;
|
|
||||||
for (int k = 0; k < 100; k++) {
|
|
||||||
if (bytesValue.utf8ToString().equals(values[2 * k])) {
|
|
||||||
assertEquals(ss.ord(2 * k), ord);
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
assertTrue(count > 0);
|
|
||||||
} else {
|
|
||||||
assert ord < 0;
|
|
||||||
int insertIndex = (-ord)-1;
|
|
||||||
if (insertIndex == 0) {
|
|
||||||
final BytesRef firstRef = ss.getByOrd(1, bytesRef);
|
|
||||||
// random string was before our first
|
|
||||||
assertTrue(firstRef.compareTo(bytesValue) > 0);
|
|
||||||
} else if (insertIndex == valueCount) {
|
|
||||||
final BytesRef lastRef = ss.getByOrd(valueCount-1, bytesRef);
|
|
||||||
// random string was after our last
|
|
||||||
assertTrue(lastRef.compareTo(bytesValue) < 0);
|
|
||||||
} else {
|
|
||||||
// TODO: I don't think this actually needs a deep copy?
|
|
||||||
final BytesRef before = BytesRef.deepCopyOf(ss.getByOrd(insertIndex-1, bytesRef));
|
|
||||||
BytesRef after = ss.getByOrd(insertIndex, bytesRef);
|
|
||||||
assertTrue(COMP.compare(before, bytesValue) < 0);
|
|
||||||
assertTrue(COMP.compare(bytesValue, after) < 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
r.close();
|
|
||||||
dir.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testVariableIntsLimits() throws IOException {
|
|
||||||
long[][] minMax = new long[][] { { Long.MIN_VALUE, Long.MAX_VALUE },
|
|
||||||
{ 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 }, };
|
|
||||||
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, };
|
|
||||||
DocValueHolder valueHolder = new DocValueHolder();
|
|
||||||
for (int i = 0; i < minMax.length; i++) {
|
|
||||||
Directory dir = newDirectory();
|
|
||||||
final Counter trackBytes = Counter.newCounter();
|
|
||||||
DocValuesConsumer w = Ints.getWriter(dir, "test", trackBytes, Type.VAR_INTS, newIOContext(random()));
|
|
||||||
valueHolder.numberValue = minMax[i][0];
|
|
||||||
w.add(0, valueHolder);
|
|
||||||
valueHolder.numberValue = minMax[i][1];
|
|
||||||
w.add(1, valueHolder);
|
|
||||||
w.finish(2);
|
|
||||||
assertEquals(0, trackBytes.get());
|
|
||||||
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.getType());
|
|
||||||
assertEquals(minMax[i][0], source.getInt(0));
|
|
||||||
assertEquals(minMax[i][1], source.getInt(1));
|
|
||||||
|
|
||||||
r.close();
|
|
||||||
dir.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testVInts() throws IOException {
|
|
||||||
testInts(Type.VAR_INTS, 63);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testFixedInts() throws IOException {
|
|
||||||
testInts(Type.FIXED_INTS_64, 63);
|
|
||||||
testInts(Type.FIXED_INTS_32, 31);
|
|
||||||
testInts(Type.FIXED_INTS_16, 15);
|
|
||||||
testInts(Type.FIXED_INTS_8, 7);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetInt8Array() throws IOException {
|
|
||||||
DocValueHolder valueHolder = new DocValueHolder();
|
|
||||||
byte[] sourceArray = new byte[] {1,2,3};
|
|
||||||
Directory dir = newDirectory();
|
|
||||||
final Counter trackBytes = Counter.newCounter();
|
|
||||||
DocValuesConsumer w = Ints.getWriter(dir, "test", trackBytes, Type.FIXED_INTS_8, newIOContext(random()));
|
|
||||||
for (int i = 0; i < sourceArray.length; i++) {
|
|
||||||
valueHolder.numberValue = (long) sourceArray[i];
|
|
||||||
w.add(i, valueHolder);
|
|
||||||
}
|
|
||||||
w.finish(sourceArray.length);
|
|
||||||
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());
|
|
||||||
assertEquals(loaded.length, sourceArray.length);
|
|
||||||
for (int i = 0; i < loaded.length; i++) {
|
|
||||||
assertEquals("value didn't match at index " + i, sourceArray[i], loaded[i]);
|
|
||||||
}
|
|
||||||
r.close();
|
|
||||||
dir.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetInt16Array() throws IOException {
|
|
||||||
DocValueHolder valueHolder = new DocValueHolder();
|
|
||||||
short[] sourceArray = new short[] {1,2,3};
|
|
||||||
Directory dir = newDirectory();
|
|
||||||
final Counter trackBytes = Counter.newCounter();
|
|
||||||
DocValuesConsumer w = Ints.getWriter(dir, "test", trackBytes, Type.FIXED_INTS_16, newIOContext(random()));
|
|
||||||
for (int i = 0; i < sourceArray.length; i++) {
|
|
||||||
valueHolder.numberValue = (long) sourceArray[i];
|
|
||||||
w.add(i, valueHolder);
|
|
||||||
}
|
|
||||||
w.finish(sourceArray.length);
|
|
||||||
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());
|
|
||||||
assertEquals(loaded.length, sourceArray.length);
|
|
||||||
for (int i = 0; i < loaded.length; i++) {
|
|
||||||
assertEquals("value didn't match at index " + i, sourceArray[i], loaded[i]);
|
|
||||||
}
|
|
||||||
r.close();
|
|
||||||
dir.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetInt64Array() throws IOException {
|
|
||||||
DocValueHolder valueHolder = new DocValueHolder();
|
|
||||||
long[] sourceArray = new long[] {1,2,3};
|
|
||||||
Directory dir = newDirectory();
|
|
||||||
final Counter trackBytes = Counter.newCounter();
|
|
||||||
DocValuesConsumer w = Ints.getWriter(dir, "test", trackBytes, Type.FIXED_INTS_64, newIOContext(random()));
|
|
||||||
for (int i = 0; i < sourceArray.length; i++) {
|
|
||||||
valueHolder.numberValue = sourceArray[i];
|
|
||||||
w.add(i, valueHolder);
|
|
||||||
}
|
|
||||||
w.finish(sourceArray.length);
|
|
||||||
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());
|
|
||||||
assertEquals(loaded.length, sourceArray.length);
|
|
||||||
for (int i = 0; i < loaded.length; i++) {
|
|
||||||
assertEquals("value didn't match at index " + i, sourceArray[i], loaded[i]);
|
|
||||||
}
|
|
||||||
r.close();
|
|
||||||
dir.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetInt32Array() throws IOException {
|
|
||||||
DocValueHolder valueHolder = new DocValueHolder();
|
|
||||||
int[] sourceArray = new int[] {1,2,3};
|
|
||||||
Directory dir = newDirectory();
|
|
||||||
final Counter trackBytes = Counter.newCounter();
|
|
||||||
DocValuesConsumer w = Ints.getWriter(dir, "test", trackBytes, Type.FIXED_INTS_32, newIOContext(random()));
|
|
||||||
for (int i = 0; i < sourceArray.length; i++) {
|
|
||||||
valueHolder.numberValue = (long) sourceArray[i];
|
|
||||||
w.add(i, valueHolder);
|
|
||||||
}
|
|
||||||
w.finish(sourceArray.length);
|
|
||||||
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());
|
|
||||||
assertEquals(loaded.length, sourceArray.length);
|
|
||||||
for (int i = 0; i < loaded.length; i++) {
|
|
||||||
assertEquals("value didn't match at index " + i, sourceArray[i], loaded[i]);
|
|
||||||
}
|
|
||||||
r.close();
|
|
||||||
dir.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetFloat32Array() throws IOException {
|
|
||||||
DocValueHolder valueHolder = new DocValueHolder();
|
|
||||||
float[] sourceArray = new float[] {1,2,3};
|
|
||||||
Directory dir = newDirectory();
|
|
||||||
final Counter trackBytes = Counter.newCounter();
|
|
||||||
DocValuesConsumer w = Floats.getWriter(dir, "test", trackBytes, newIOContext(random()), Type.FLOAT_32);
|
|
||||||
for (int i = 0; i < sourceArray.length; i++) {
|
|
||||||
valueHolder.numberValue = sourceArray[i];
|
|
||||||
w.add(i, valueHolder);
|
|
||||||
}
|
|
||||||
w.finish(sourceArray.length);
|
|
||||||
DocValues r = Floats.getValues(dir, "test", 3, newIOContext(random()), Type.FLOAT_32);
|
|
||||||
Source source = r.getSource();
|
|
||||||
assertTrue(source.hasArray());
|
|
||||||
float[] loaded = ((float[])source.getArray());
|
|
||||||
assertEquals(loaded.length, sourceArray.length);
|
|
||||||
for (int i = 0; i < loaded.length; i++) {
|
|
||||||
assertEquals("value didn't match at index " + i, sourceArray[i], loaded[i], 0.0f);
|
|
||||||
}
|
|
||||||
r.close();
|
|
||||||
dir.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testGetFloat64Array() throws IOException {
|
|
||||||
DocValueHolder valueHolder = new DocValueHolder();
|
|
||||||
double[] sourceArray = new double[] {1,2,3};
|
|
||||||
Directory dir = newDirectory();
|
|
||||||
final Counter trackBytes = Counter.newCounter();
|
|
||||||
DocValuesConsumer w = Floats.getWriter(dir, "test", trackBytes, newIOContext(random()), Type.FLOAT_64);
|
|
||||||
for (int i = 0; i < sourceArray.length; i++) {
|
|
||||||
valueHolder.numberValue = sourceArray[i];
|
|
||||||
w.add(i, valueHolder);
|
|
||||||
}
|
|
||||||
w.finish(sourceArray.length);
|
|
||||||
DocValues r = Floats.getValues(dir, "test", 3, newIOContext(random()), Type.FLOAT_64);
|
|
||||||
Source source = r.getSource();
|
|
||||||
assertTrue(source.hasArray());
|
|
||||||
double[] loaded = ((double[])source.getArray());
|
|
||||||
assertEquals(loaded.length, sourceArray.length);
|
|
||||||
for (int i = 0; i < loaded.length; i++) {
|
|
||||||
assertEquals("value didn't match at index " + i, sourceArray[i], loaded[i], 0.0d);
|
|
||||||
}
|
|
||||||
r.close();
|
|
||||||
dir.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void testInts(Type type, int maxBit) throws IOException {
|
|
||||||
DocValueHolder valueHolder = new DocValueHolder();
|
|
||||||
long maxV = 1;
|
|
||||||
final int NUM_VALUES = 333 + random().nextInt(333);
|
|
||||||
final long[] values = new long[NUM_VALUES];
|
|
||||||
for (int rx = 1; rx < maxBit; rx++, maxV *= 2) {
|
|
||||||
Directory dir = newDirectory();
|
|
||||||
final Counter trackBytes = Counter.newCounter();
|
|
||||||
DocValuesConsumer w = Ints.getWriter(dir, "test", trackBytes, type, newIOContext(random()));
|
|
||||||
for (int i = 0; i < NUM_VALUES; i++) {
|
|
||||||
final long v = _TestUtil.nextLong(random(), -maxV, maxV);
|
|
||||||
valueHolder.numberValue = values[i] = v;
|
|
||||||
w.add(i, valueHolder);
|
|
||||||
}
|
|
||||||
final int additionalDocs = 1 + random().nextInt(9);
|
|
||||||
w.finish(NUM_VALUES + additionalDocs);
|
|
||||||
assertEquals(0, trackBytes.get());
|
|
||||||
|
|
||||||
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.getType());
|
|
||||||
for (int i = 0; i < NUM_VALUES; i++) {
|
|
||||||
final long v = s.getInt(i);
|
|
||||||
assertEquals("index " + i, values[i], v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
r.close();
|
|
||||||
dir.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testFloats4() throws IOException {
|
|
||||||
runTestFloats(Type.FLOAT_32);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void runTestFloats(Type type) throws IOException {
|
|
||||||
DocValueHolder valueHolder = new DocValueHolder();
|
|
||||||
Directory dir = newDirectory();
|
|
||||||
final Counter trackBytes = Counter.newCounter();
|
|
||||||
DocValuesConsumer 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 == Type.FLOAT_32 ? random().nextFloat() : random()
|
|
||||||
.nextDouble();
|
|
||||||
valueHolder.numberValue = values[i] = v;
|
|
||||||
w.add(i, valueHolder);
|
|
||||||
}
|
|
||||||
final int additionalValues = 1 + random().nextInt(10);
|
|
||||||
w.finish(NUM_VALUES + additionalValues);
|
|
||||||
assertEquals(0, trackBytes.get());
|
|
||||||
|
|
||||||
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++) {
|
|
||||||
assertEquals("" + i, values[i], s.getFloat(i), 0.0f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
r.close();
|
|
||||||
dir.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testFloats8() throws IOException {
|
|
||||||
runTestFloats(Type.FLOAT_64);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private Source getSource(DocValues values) throws IOException {
|
|
||||||
// getSource uses cache internally
|
|
||||||
switch(random().nextInt(5)) {
|
|
||||||
case 2:
|
|
||||||
return values.getDirectSource();
|
|
||||||
case 1:
|
|
||||||
return values.getSource();
|
|
||||||
default:
|
|
||||||
return values.getSource();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private SortedSource getSortedSource(DocValues values) throws IOException {
|
|
||||||
return getSource(values).asSortedSource();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class DocValueHolder implements StorableField {
|
|
||||||
BytesRef bytes;
|
|
||||||
Number numberValue;
|
|
||||||
Comparator<BytesRef> comp;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String name() {
|
|
||||||
return "test";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public BytesRef binaryValue() {
|
|
||||||
return bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Number numericValue() {
|
|
||||||
return numberValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String stringValue() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Reader readerValue() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public FieldType fieldType() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user