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 2014/06/05 17:54:52 UTC
svn commit: r1600688 [3/3] - in /lucene/dev/trunk: lucene/
lucene/codecs/src/java/org/apache/lucene/codecs/memory/
lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/
lucene/core/src/java/org/apache/lucene/codecs/
lucene/core/src/java/org/apach...
Modified: lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestDocTermOrds.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestDocTermOrds.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestDocTermOrds.java (original)
+++ lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestDocTermOrds.java Thu Jun 5 15:54:49 2014
@@ -456,11 +456,10 @@ public class TestDocTermOrds extends Luc
assertEquals(1, v.nextOrd());
assertEquals(SortedSetDocValues.NO_MORE_ORDS, v.nextOrd());
- BytesRef value = new BytesRef();
- v.lookupOrd(0, value);
+ BytesRef value = v.lookupOrd(0);
assertEquals(-3, NumericUtils.prefixCodedToInt(value));
- v.lookupOrd(1, value);
+ value = v.lookupOrd(1);
assertEquals(5, NumericUtils.prefixCodedToInt(value));
ir.close();
@@ -498,11 +497,10 @@ public class TestDocTermOrds extends Luc
assertEquals(1, v.nextOrd());
assertEquals(SortedSetDocValues.NO_MORE_ORDS, v.nextOrd());
- BytesRef value = new BytesRef();
- v.lookupOrd(0, value);
+ BytesRef value = v.lookupOrd(0);
assertEquals(-3, NumericUtils.prefixCodedToLong(value));
- v.lookupOrd(1, value);
+ value = v.lookupOrd(1);
assertEquals(5, NumericUtils.prefixCodedToLong(value));
ir.close();
@@ -640,11 +638,10 @@ public class TestDocTermOrds extends Luc
assertEquals(1, v.nextOrd());
assertEquals(SortedSetDocValues.NO_MORE_ORDS, v.nextOrd());
- BytesRef value = new BytesRef();
- v.lookupOrd(0, value);
+ BytesRef value = v.lookupOrd(0);
assertEquals("bar", value.utf8ToString());
- v.lookupOrd(1, value);
+ value = v.lookupOrd(1);
assertEquals("baz", value.utf8ToString());
ir.close();
Modified: lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCache.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCache.java (original)
+++ lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCache.java Thu Jun 5 15:54:49 2014
@@ -201,28 +201,23 @@ public class TestFieldCache extends Luce
// getTermsIndex
SortedDocValues termsIndex = cache.getTermsIndex(reader, "theRandomUnicodeString");
- assertSame("Second request to cache return same array", termsIndex, cache.getTermsIndex(reader, "theRandomUnicodeString"));
- final BytesRef br = new BytesRef();
for (int i = 0; i < NUM_DOCS; i++) {
- final BytesRef term;
+ final String s;
final int ord = termsIndex.getOrd(i);
if (ord == -1) {
- term = null;
+ s = null;
} else {
- termsIndex.lookupOrd(ord, br);
- term = br;
+ s = termsIndex.lookupOrd(ord).utf8ToString();
}
- final String s = term == null ? null : term.utf8ToString();
assertTrue("for doc " + i + ": " + s + " does not equal: " + unicodeStrings[i], unicodeStrings[i] == null || unicodeStrings[i].equals(s));
}
int nTerms = termsIndex.getValueCount();
TermsEnum tenum = termsIndex.termsEnum();
- BytesRef val = new BytesRef();
for (int i=0; i<nTerms; i++) {
- BytesRef val1 = tenum.next();
- termsIndex.lookupOrd(i, val);
+ BytesRef val1 = BytesRef.deepCopyOf(tenum.next());
+ final BytesRef val = termsIndex.lookupOrd(i);
// System.out.println("i="+i);
assertEquals(val, val1);
}
@@ -231,13 +226,13 @@ public class TestFieldCache extends Luce
int num = atLeast(100);
for (int i = 0; i < num; i++) {
int k = random().nextInt(nTerms);
- termsIndex.lookupOrd(k, val);
+ final BytesRef val = BytesRef.deepCopyOf(termsIndex.lookupOrd(k));
assertEquals(TermsEnum.SeekStatus.FOUND, tenum.seekCeil(val));
assertEquals(val, tenum.term());
}
for(int i=0;i<nTerms;i++) {
- termsIndex.lookupOrd(i, val);
+ final BytesRef val = BytesRef.deepCopyOf(termsIndex.lookupOrd(i));
assertEquals(TermsEnum.SeekStatus.FOUND, tenum.seekCeil(val));
assertEquals(val, tenum.term());
}
@@ -250,14 +245,12 @@ public class TestFieldCache extends Luce
assertSame("Second request to cache return same array", terms, cache.getTerms(reader, "theRandomUnicodeString", true));
Bits bits = cache.getDocsWithField(reader, "theRandomUnicodeString");
for (int i = 0; i < NUM_DOCS; i++) {
- terms.get(i, br);
- final BytesRef term;
+ final String s;
if (!bits.get(i)) {
- term = null;
+ s = null;
} else {
- term = br;
+ s = terms.get(i).utf8ToString();
}
- final String s = term == null ? null : term.utf8ToString();
assertTrue("for doc " + i + ": " + s + " does not equal: " + unicodeStrings[i], unicodeStrings[i] == null || unicodeStrings[i].equals(s));
}
@@ -282,8 +275,7 @@ public class TestFieldCache extends Luce
}
long ord = termOrds.nextOrd();
assert ord != SortedSetDocValues.NO_MORE_ORDS;
- BytesRef scratch = new BytesRef();
- termOrds.lookupOrd(ord, scratch);
+ BytesRef scratch = termOrds.lookupOrd(ord);
assertEquals(v, scratch);
}
assertEquals(SortedSetDocValues.NO_MORE_ORDS, termOrds.nextOrd());
@@ -448,8 +440,6 @@ public class TestFieldCache extends Luce
iw.shutdown();
AtomicReader ar = getOnlySegmentReader(ir);
- BytesRef scratch = new BytesRef();
-
// Binary type: can be retrieved via getTerms()
try {
FieldCache.DEFAULT.getNumerics(ar, "binary", FieldCache.NUMERIC_UTILS_INT_PARSER, false);
@@ -457,8 +447,8 @@ public class TestFieldCache extends Luce
} catch (IllegalStateException expected) {}
BinaryDocValues binary = FieldCache.DEFAULT.getTerms(ar, "binary", true);
- binary.get(0, scratch);
- assertEquals("binary value", scratch.utf8ToString());
+ final BytesRef term = binary.get(0);
+ assertEquals("binary value", term.utf8ToString());
try {
FieldCache.DEFAULT.getTermsIndex(ar, "binary");
@@ -490,13 +480,13 @@ public class TestFieldCache extends Luce
} catch (IllegalStateException expected) {}
binary = FieldCache.DEFAULT.getTerms(ar, "sorted", true);
- binary.get(0, scratch);
+ BytesRef scratch = binary.get(0);
assertEquals("sorted value", scratch.utf8ToString());
SortedDocValues sorted = FieldCache.DEFAULT.getTermsIndex(ar, "sorted");
assertEquals(0, sorted.getOrd(0));
assertEquals(1, sorted.getValueCount());
- sorted.get(0, scratch);
+ scratch = sorted.get(0);
assertEquals("sorted value", scratch.utf8ToString());
SortedSetDocValues sortedSet = FieldCache.DEFAULT.getDocTermOrds(ar, "sorted", null);
@@ -598,14 +588,13 @@ public class TestFieldCache extends Luce
NumericDocValues doubles = cache.getNumerics(ar, "bogusdoubles", FieldCache.NUMERIC_UTILS_DOUBLE_PARSER, true);
assertEquals(0, doubles.get(0));
- BytesRef scratch = new BytesRef();
BinaryDocValues binaries = cache.getTerms(ar, "bogusterms", true);
- binaries.get(0, scratch);
+ BytesRef scratch = binaries.get(0);
assertEquals(0, scratch.length);
SortedDocValues sorted = cache.getTermsIndex(ar, "bogustermsindex");
assertEquals(-1, sorted.getOrd(0));
- sorted.get(0, scratch);
+ scratch = sorted.get(0);
assertEquals(0, scratch.length);
SortedSetDocValues sortedSet = cache.getDocTermOrds(ar, "bogusmultivalued", null);
@@ -657,14 +646,13 @@ public class TestFieldCache extends Luce
NumericDocValues doubles = cache.getNumerics(ar, "bogusdoubles", FieldCache.NUMERIC_UTILS_DOUBLE_PARSER, true);
assertEquals(0, doubles.get(0));
- BytesRef scratch = new BytesRef();
BinaryDocValues binaries = cache.getTerms(ar, "bogusterms", true);
- binaries.get(0, scratch);
+ BytesRef scratch = binaries.get(0);
assertEquals(0, scratch.length);
SortedDocValues sorted = cache.getTermsIndex(ar, "bogustermsindex");
assertEquals(-1, sorted.getOrd(0));
- sorted.get(0, scratch);
+ scratch = sorted.get(0);
assertEquals(0, scratch.length);
SortedSetDocValues sortedSet = cache.getDocTermOrds(ar, "bogusmultivalued", null);
Modified: lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheSort.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheSort.java (original)
+++ lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheSort.java Thu Jun 5 15:54:49 2014
@@ -1054,7 +1054,10 @@ public class TestFieldCacheSort extends
// this should not throw AIOOBE or RuntimeEx
IndexReader reader = UninvertingReader.wrap(DirectoryReader.open(indexStore),
Collections.singletonMap("string", Type.SORTED));
- IndexSearcher searcher = newSearcher(reader);
+ // NOTE: we can't wrap this with newSearcher, because when the API is abused in this way,
+ // the number of ords can exceed the number of documents, and AssertingAtomicReader will get angry,
+ // rightfully so (its a broken dv)
+ IndexSearcher searcher = new IndexSearcher(reader);
searcher.search(new MatchAllDocsQuery(), null, 500, sort);
reader.close();
indexStore.close();
Added: lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheSortRandom.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheSortRandom.java?rev=1600688&view=auto
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheSortRandom.java (added)
+++ lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheSortRandom.java Thu Jun 5 15:54:49 2014
@@ -0,0 +1,288 @@
+package org.apache.lucene.uninverting;
+
+/*
+ * 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.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.document.IntField;
+import org.apache.lucene.document.StringField;
+import org.apache.lucene.index.AtomicReaderContext;
+import org.apache.lucene.index.DocValues;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.NumericDocValues;
+import org.apache.lucene.index.RandomIndexWriter;
+import org.apache.lucene.search.BooleanClause.Occur;
+import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.ConstantScoreQuery;
+import org.apache.lucene.search.DocIdSet;
+import org.apache.lucene.search.FieldDoc;
+import org.apache.lucene.search.Filter;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.MatchAllDocsQuery;
+import org.apache.lucene.search.Sort;
+import org.apache.lucene.search.SortField;
+import org.apache.lucene.search.TopFieldDocs;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.uninverting.UninvertingReader.Type;
+import org.apache.lucene.util.Bits;
+import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.FixedBitSet;
+import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.TestUtil;
+
+/** random sorting tests with uninversion */
+public class TestFieldCacheSortRandom extends LuceneTestCase {
+
+ public void testRandomStringSort() throws Exception {
+ Random random = new Random(random().nextLong());
+
+ final int NUM_DOCS = atLeast(100);
+ final Directory dir = newDirectory();
+ final RandomIndexWriter writer = new RandomIndexWriter(random, dir);
+ final boolean allowDups = random.nextBoolean();
+ final Set<String> seen = new HashSet<>();
+ final int maxLength = TestUtil.nextInt(random, 5, 100);
+ if (VERBOSE) {
+ System.out.println("TEST: NUM_DOCS=" + NUM_DOCS + " maxLength=" + maxLength + " allowDups=" + allowDups);
+ }
+
+ int numDocs = 0;
+ final List<BytesRef> docValues = new ArrayList<>();
+ // TODO: deletions
+ while (numDocs < NUM_DOCS) {
+ final Document doc = new Document();
+
+ // 10% of the time, the document is missing the value:
+ final BytesRef br;
+ if (random().nextInt(10) != 7) {
+ final String s;
+ if (random.nextBoolean()) {
+ s = TestUtil.randomSimpleString(random, maxLength);
+ } else {
+ s = TestUtil.randomUnicodeString(random, maxLength);
+ }
+
+ if (!allowDups) {
+ if (seen.contains(s)) {
+ continue;
+ }
+ seen.add(s);
+ }
+
+ if (VERBOSE) {
+ System.out.println(" " + numDocs + ": s=" + s);
+ }
+
+ doc.add(new StringField("stringdv", s, Field.Store.NO));
+ docValues.add(new BytesRef(s));
+
+ } else {
+ br = null;
+ if (VERBOSE) {
+ System.out.println(" " + numDocs + ": <missing>");
+ }
+ docValues.add(null);
+ }
+
+ doc.add(new IntField("id", numDocs, Field.Store.YES));
+ writer.addDocument(doc);
+ numDocs++;
+
+ if (random.nextInt(40) == 17) {
+ // force flush
+ writer.getReader().close();
+ }
+ }
+
+ Map<String,UninvertingReader.Type> mapping = new HashMap<>();
+ mapping.put("stringdv", Type.SORTED);
+ mapping.put("id", Type.INTEGER);
+ final IndexReader r = UninvertingReader.wrap(writer.getReader(), mapping);
+ writer.shutdown();
+ if (VERBOSE) {
+ System.out.println(" reader=" + r);
+ }
+
+ final IndexSearcher s = newSearcher(r, false);
+ final int ITERS = atLeast(100);
+ for(int iter=0;iter<ITERS;iter++) {
+ final boolean reverse = random.nextBoolean();
+
+ final TopFieldDocs hits;
+ final SortField sf;
+ final boolean sortMissingLast;
+ final boolean missingIsNull;
+ sf = new SortField("stringdv", SortField.Type.STRING, reverse);
+ sortMissingLast = random().nextBoolean();
+ missingIsNull = true;
+
+ if (sortMissingLast) {
+ sf.setMissingValue(SortField.STRING_LAST);
+ }
+
+ final Sort sort;
+ if (random.nextBoolean()) {
+ sort = new Sort(sf);
+ } else {
+ sort = new Sort(sf, SortField.FIELD_DOC);
+ }
+ final int hitCount = TestUtil.nextInt(random, 1, r.maxDoc() + 20);
+ final RandomFilter f = new RandomFilter(random, random.nextFloat(), docValues);
+ int queryType = random.nextInt(3);
+ if (queryType == 0) {
+ // force out of order
+ BooleanQuery bq = new BooleanQuery();
+ // Add a Query with SHOULD, since bw.scorer() returns BooleanScorer2
+ // which delegates to BS if there are no mandatory clauses.
+ bq.add(new MatchAllDocsQuery(), Occur.SHOULD);
+ // Set minNrShouldMatch to 1 so that BQ will not optimize rewrite to return
+ // the clause instead of BQ.
+ bq.setMinimumNumberShouldMatch(1);
+ hits = s.search(bq, f, hitCount, sort, random.nextBoolean(), random.nextBoolean());
+ } else if (queryType == 1) {
+ hits = s.search(new ConstantScoreQuery(f),
+ null, hitCount, sort, random.nextBoolean(), random.nextBoolean());
+ } else {
+ hits = s.search(new MatchAllDocsQuery(),
+ f, hitCount, sort, random.nextBoolean(), random.nextBoolean());
+ }
+
+ if (VERBOSE) {
+ System.out.println("\nTEST: iter=" + iter + " " + hits.totalHits + " hits; topN=" + hitCount + "; reverse=" + reverse + "; sortMissingLast=" + sortMissingLast + " sort=" + sort);
+ }
+
+ // Compute expected results:
+ Collections.sort(f.matchValues, new Comparator<BytesRef>() {
+ @Override
+ public int compare(BytesRef a, BytesRef b) {
+ if (a == null) {
+ if (b == null) {
+ return 0;
+ }
+ if (sortMissingLast) {
+ return 1;
+ } else {
+ return -1;
+ }
+ } else if (b == null) {
+ if (sortMissingLast) {
+ return -1;
+ } else {
+ return 1;
+ }
+ } else {
+ return a.compareTo(b);
+ }
+ }
+ });
+
+ if (reverse) {
+ Collections.reverse(f.matchValues);
+ }
+ final List<BytesRef> expected = f.matchValues;
+ if (VERBOSE) {
+ System.out.println(" expected:");
+ for(int idx=0;idx<expected.size();idx++) {
+ BytesRef br = expected.get(idx);
+ if (br == null && missingIsNull == false) {
+ br = new BytesRef();
+ }
+ System.out.println(" " + idx + ": " + (br == null ? "<missing>" : br.utf8ToString()));
+ if (idx == hitCount-1) {
+ break;
+ }
+ }
+ }
+
+ if (VERBOSE) {
+ System.out.println(" actual:");
+ for(int hitIDX=0;hitIDX<hits.scoreDocs.length;hitIDX++) {
+ final FieldDoc fd = (FieldDoc) hits.scoreDocs[hitIDX];
+ BytesRef br = (BytesRef) fd.fields[0];
+
+ System.out.println(" " + hitIDX + ": " + (br == null ? "<missing>" : br.utf8ToString()) + " id=" + s.doc(fd.doc).get("id"));
+ }
+ }
+ for(int hitIDX=0;hitIDX<hits.scoreDocs.length;hitIDX++) {
+ final FieldDoc fd = (FieldDoc) hits.scoreDocs[hitIDX];
+ BytesRef br = expected.get(hitIDX);
+ if (br == null && missingIsNull == false) {
+ br = new BytesRef();
+ }
+
+ // Normally, the old codecs (that don't support
+ // docsWithField via doc values) will always return
+ // an empty BytesRef for the missing case; however,
+ // if all docs in a given segment were missing, in
+ // that case it will return null! So we must map
+ // null here, too:
+ BytesRef br2 = (BytesRef) fd.fields[0];
+ if (br2 == null && missingIsNull == false) {
+ br2 = new BytesRef();
+ }
+
+ assertEquals(br, br2);
+ }
+ }
+
+ r.close();
+ dir.close();
+ }
+
+ private static class RandomFilter extends Filter {
+ private final Random random;
+ private float density;
+ private final List<BytesRef> docValues;
+ public final List<BytesRef> matchValues = Collections.synchronizedList(new ArrayList<BytesRef>());
+
+ // density should be 0.0 ... 1.0
+ public RandomFilter(Random random, float density, List<BytesRef> docValues) {
+ this.random = random;
+ this.density = density;
+ this.docValues = docValues;
+ }
+
+ @Override
+ public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) throws IOException {
+ final int maxDoc = context.reader().maxDoc();
+ final NumericDocValues idSource = DocValues.getNumeric(context.reader(), "id");
+ assertNotNull(idSource);
+ final FixedBitSet bits = new FixedBitSet(maxDoc);
+ for(int docID=0;docID<maxDoc;docID++) {
+ if (random.nextFloat() <= density && (acceptDocs == null || acceptDocs.get(docID))) {
+ bits.set(docID);
+ //System.out.println(" acc id=" + idSource.getInt(docID) + " docID=" + docID);
+ matchValues.add(docValues.get((int) idSource.get(docID)));
+ }
+ }
+
+ return bits;
+ }
+ }
+}
Modified: lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheVsDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheVsDocValues.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheVsDocValues.java (original)
+++ lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheVsDocValues.java Thu Jun 5 15:54:49 2014
@@ -200,8 +200,7 @@ public class TestFieldCacheVsDocValues e
BinaryDocValues s = FieldCache.DEFAULT.getTerms(ar, "field", false);
for(int docID=0;docID<docBytes.size();docID++) {
StoredDocument doc = ar.document(docID);
- BytesRef bytes = new BytesRef();
- s.get(docID, bytes);
+ BytesRef bytes = s.get(docID);
byte[] expected = docBytes.get(Integer.parseInt(doc.get("id")));
assertEquals(expected.length, bytes.length);
assertEquals(new BytesRef(expected), bytes);
@@ -272,8 +271,7 @@ public class TestFieldCacheVsDocValues e
BinaryDocValues s = FieldCache.DEFAULT.getTerms(ar, "field", false);
for(int docID=0;docID<docBytes.size();docID++) {
StoredDocument doc = ar.document(docID);
- BytesRef bytes = new BytesRef();
- s.get(docID, bytes);
+ BytesRef bytes = s.get(docID);
byte[] expected = docBytes.get(Integer.parseInt(doc.get("id")));
assertEquals(expected.length, bytes.length);
assertEquals(new BytesRef(expected), bytes);
@@ -495,7 +493,7 @@ public class TestFieldCacheVsDocValues e
// can be null for the segment if no docs actually had any SortedDocValues
// in this case FC.getDocTermsOrds returns EMPTY
if (actual == null) {
- assertEquals(DocValues.EMPTY_SORTED_SET, expected);
+ assertEquals(expected.getValueCount(), 0);
return;
}
assertEquals(expected.getValueCount(), actual.getValueCount());
@@ -511,11 +509,9 @@ public class TestFieldCacheVsDocValues e
}
// compare ord dictionary
- BytesRef expectedBytes = new BytesRef();
- BytesRef actualBytes = new BytesRef();
for (long i = 0; i < expected.getValueCount(); i++) {
- expected.lookupOrd(i, expectedBytes);
- actual.lookupOrd(i, actualBytes);
+ final BytesRef expectedBytes = BytesRef.deepCopyOf(expected.lookupOrd(i));
+ final BytesRef actualBytes = actual.lookupOrd(i);
assertEquals(expectedBytes, actualBytes);
}
Modified: lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheWithThreads.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheWithThreads.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheWithThreads.java (original)
+++ lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestFieldCacheWithThreads.java Thu Jun 5 15:54:49 2014
@@ -90,8 +90,6 @@ public class TestFieldCacheWithThreads e
SortedDocValues sdv = FieldCache.DEFAULT.getTermsIndex(ar, "sorted");
startingGun.await();
int iters = atLeast(1000);
- BytesRef scratch = new BytesRef();
- BytesRef scratch2 = new BytesRef();
for(int iter=0;iter<iters;iter++) {
int docID = threadRandom.nextInt(numDocs);
switch(threadRandom.nextInt(4)) {
@@ -108,11 +106,10 @@ public class TestFieldCacheWithThreads e
assertEquals(numbers.get(docID).longValue(), FieldCache.DEFAULT.getNumerics(ar, "number", FieldCache.NUMERIC_UTILS_DOUBLE_PARSER, false).get(docID));
break;
}
- bdv.get(docID, scratch);
- assertEquals(binary.get(docID), scratch);
- // Cannot share a single scratch against two "sources":
- sdv.get(docID, scratch2);
- assertEquals(sorted.get(docID), scratch2);
+ BytesRef term = bdv.get(docID);
+ assertEquals(binary.get(docID), term);
+ term = sdv.get(docID);
+ assertEquals(sorted.get(docID), term);
}
} catch (Exception e) {
throw new RuntimeException(e);
@@ -207,12 +204,11 @@ public class TestFieldCacheWithThreads e
while(System.currentTimeMillis() < END_TIME) {
final SortedDocValues source;
source = stringDVDirect;
- final BytesRef scratch = new BytesRef();
for(int iter=0;iter<100;iter++) {
final int docID = random.nextInt(sr.maxDoc());
- source.get(docID, scratch);
- assertEquals(docValues.get((int) docIDToID.get(docID)), scratch);
+ BytesRef term = source.get(docID);
+ assertEquals(docValues.get((int) docIDToID.get(docID)), term);
}
}
}
Modified: lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestUninvertingReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestUninvertingReader.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestUninvertingReader.java (original)
+++ lucene/dev/trunk/lucene/misc/src/test/org/apache/lucene/uninverting/TestUninvertingReader.java Thu Jun 5 15:54:49 2014
@@ -72,11 +72,10 @@ public class TestUninvertingReader exten
assertEquals(1, v.nextOrd());
assertEquals(SortedSetDocValues.NO_MORE_ORDS, v.nextOrd());
- BytesRef value = new BytesRef();
- v.lookupOrd(0, value);
+ BytesRef value = v.lookupOrd(0);
assertEquals(-3, NumericUtils.prefixCodedToInt(value));
- v.lookupOrd(1, value);
+ value = v.lookupOrd(1);
assertEquals(5, NumericUtils.prefixCodedToInt(value));
ir.close();
@@ -117,11 +116,10 @@ public class TestUninvertingReader exten
assertEquals(1, v.nextOrd());
assertEquals(SortedSetDocValues.NO_MORE_ORDS, v.nextOrd());
- BytesRef value = new BytesRef();
- v.lookupOrd(0, value);
+ BytesRef value = v.lookupOrd(0);
assertEquals(Float.floatToRawIntBits(-3f), NumericUtils.prefixCodedToInt(value));
- v.lookupOrd(1, value);
+ value = v.lookupOrd(1);
assertEquals(Float.floatToRawIntBits(5f), NumericUtils.prefixCodedToInt(value));
ir.close();
@@ -161,11 +159,10 @@ public class TestUninvertingReader exten
assertEquals(1, v.nextOrd());
assertEquals(SortedSetDocValues.NO_MORE_ORDS, v.nextOrd());
- BytesRef value = new BytesRef();
- v.lookupOrd(0, value);
+ BytesRef value = v.lookupOrd(0);
assertEquals(-3, NumericUtils.prefixCodedToLong(value));
- v.lookupOrd(1, value);
+ value = v.lookupOrd(1);
assertEquals(5, NumericUtils.prefixCodedToLong(value));
ir.close();
@@ -205,11 +202,10 @@ public class TestUninvertingReader exten
assertEquals(1, v.nextOrd());
assertEquals(SortedSetDocValues.NO_MORE_ORDS, v.nextOrd());
- BytesRef value = new BytesRef();
- v.lookupOrd(0, value);
+ BytesRef value = v.lookupOrd(0);
assertEquals(Double.doubleToRawLongBits(-3d), NumericUtils.prefixCodedToLong(value));
- v.lookupOrd(1, value);
+ value = v.lookupOrd(1);
assertEquals(Double.doubleToRawLongBits(5d), NumericUtils.prefixCodedToLong(value));
ir.close();
Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/DocTermsIndexDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/DocTermsIndexDocValues.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/DocTermsIndexDocValues.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/DocTermsIndexDocValues.java Thu Jun 5 15:54:49 2014
@@ -40,7 +40,6 @@ public abstract class DocTermsIndexDocVa
protected final SortedDocValues termsIndex;
protected final ValueSource vs;
protected final MutableValueStr val = new MutableValueStr();
- protected final BytesRef spare = new BytesRef();
protected final CharsRef spareChars = new CharsRef();
public DocTermsIndexDocValues(ValueSource vs, AtomicReaderContext context, String field) throws IOException {
@@ -71,17 +70,18 @@ public abstract class DocTermsIndexDocVa
@Override
public boolean bytesVal(int doc, BytesRef target) {
- termsIndex.get(doc, target);
+ target.length = 0;
+ target.copyBytes(termsIndex.get(doc));
return target.length > 0;
}
@Override
public String strVal(int doc) {
- termsIndex.get(doc, spare);
- if (spare.length == 0) {
+ final BytesRef term = termsIndex.get(doc);
+ if (term.length == 0) {
return null;
}
- UnicodeUtil.UTF8toUTF16(spare, spareChars);
+ UnicodeUtil.UTF8toUTF16(term, spareChars);
return spareChars.toString();
}
@@ -149,14 +149,10 @@ public abstract class DocTermsIndexDocVa
@Override
public void fillValue(int doc) {
int ord = termsIndex.getOrd(doc);
- if (ord == -1) {
- mval.value.bytes = BytesRef.EMPTY_BYTES;
- mval.value.offset = 0;
- mval.value.length = 0;
- mval.exists = false;
- } else {
- termsIndex.lookupOrd(ord, mval.value);
- mval.exists = true;
+ mval.value.length = 0;
+ mval.exists = ord >= 0;
+ if (mval.exists) {
+ mval.value.copyBytes(termsIndex.lookupOrd(ord));
}
}
};
Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/BytesRefFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/BytesRefFieldSource.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/BytesRefFieldSource.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/BytesRefFieldSource.java Thu Jun 5 15:54:49 2014
@@ -59,7 +59,7 @@ public class BytesRefFieldSource extends
@Override
public boolean bytesVal(int doc, BytesRef target) {
- binaryValues.get(doc, target);
+ target.copyBytes(binaryValues.get(doc));
return target.length > 0;
}
@@ -93,13 +93,8 @@ public class BytesRefFieldSource extends
@Override
public void fillValue(int doc) {
mval.exists = docsWithField.get(doc);
- if (mval.exists) {
- binaryValues.get(doc, mval.value);
- } else {
- mval.value.bytes = BytesRef.EMPTY_BYTES;
- mval.value.offset = 0;
- mval.value.length = 0;
- }
+ mval.value.length = 0;
+ mval.value.copyBytes(binaryValues.get(doc));
}
};
}
Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/JoinDocFreqValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/JoinDocFreqValueSource.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/JoinDocFreqValueSource.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/JoinDocFreqValueSource.java Thu Jun 5 15:54:49 2014
@@ -62,14 +62,13 @@ public class JoinDocFreqValueSource exte
final TermsEnum termsEnum = t == null ? TermsEnum.EMPTY : t.iterator(null);
return new IntDocValues(this) {
- final BytesRef ref = new BytesRef();
@Override
public int intVal(int doc)
{
try {
- terms.get(doc, ref);
- if (termsEnum.seekExact(ref)) {
+ final BytesRef term = terms.get(doc);
+ if (termsEnum.seekExact(term)) {
return termsEnum.docFreq();
} else {
return 0;
Modified: lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedStringComparator.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedStringComparator.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedStringComparator.java (original)
+++ lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/sandbox/queries/SlowCollatedStringComparator.java Thu Jun 5 15:54:49 2014
@@ -45,7 +45,6 @@ public final class SlowCollatedStringCom
final Collator collator;
private String bottom;
private String topValue;
- private final BytesRef tempBR = new BytesRef();
public SlowCollatedStringComparator(int numHits, String field, Collator collator) {
values = new String[numHits];
@@ -70,8 +69,8 @@ public final class SlowCollatedStringCom
@Override
public int compareBottom(int doc) {
- currentDocTerms.get(doc, tempBR);
- final String val2 = tempBR.length == 0 && docsWithField.get(doc) == false ? null : tempBR.utf8ToString();
+ final BytesRef term = currentDocTerms.get(doc);
+ final String val2 = term.length == 0 && docsWithField.get(doc) == false ? null : term.utf8ToString();
if (bottom == null) {
if (val2 == null) {
return 0;
@@ -85,11 +84,11 @@ public final class SlowCollatedStringCom
@Override
public void copy(int slot, int doc) {
- currentDocTerms.get(doc, tempBR);
- if (tempBR.length == 0 && docsWithField.get(doc) == false) {
+ final BytesRef term = currentDocTerms.get(doc);
+ if (term.length == 0 && docsWithField.get(doc) == false) {
values[slot] = null;
} else {
- values[slot] = tempBR.utf8ToString();
+ values[slot] = term.utf8ToString();
}
}
@@ -131,12 +130,12 @@ public final class SlowCollatedStringCom
@Override
public int compareTop(int doc) {
- currentDocTerms.get(doc, tempBR);
+ final BytesRef term = currentDocTerms.get(doc);
final String docValue;
- if (tempBR.length == 0 && docsWithField.get(doc) == false) {
+ if (term.length == 0 && docsWithField.get(doc) == false) {
docValue = null;
} else {
- docValue = tempBR.utf8ToString();
+ docValue = term.utf8ToString();
}
return compareValues(topValue, docValue);
}
Modified: lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/serialized/SerializedDVStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/serialized/SerializedDVStrategy.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/serialized/SerializedDVStrategy.java (original)
+++ lucene/dev/trunk/lucene/spatial/src/java/org/apache/lucene/spatial/serialized/SerializedDVStrategy.java Thu Jun 5 15:54:49 2014
@@ -215,7 +215,7 @@ public class SerializedDVStrategy extend
boolean fillBytes(int doc) {
if (bytesRefDoc != doc) {
- docValues.get(doc, bytesRef);
+ bytesRef.copyBytes(docValues.get(doc));
bytesRefDoc = doc;
}
return bytesRef.length != 0;
Modified: lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java (original)
+++ lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java Thu Jun 5 15:54:49 2014
@@ -488,17 +488,15 @@ public class AnalyzingInfixSuggester ext
BinaryDocValues payloadsDV = MultiDocValues.getBinaryValues(searcher.getIndexReader(), "payloads");
List<AtomicReaderContext> leaves = searcher.getIndexReader().leaves();
List<LookupResult> results = new ArrayList<>();
- BytesRef scratch = new BytesRef();
for (int i=0;i<hits.scoreDocs.length;i++) {
FieldDoc fd = (FieldDoc) hits.scoreDocs[i];
- textDV.get(fd.doc, scratch);
- String text = scratch.utf8ToString();
+ BytesRef term = textDV.get(fd.doc);
+ String text = term.utf8ToString();
long score = (Long) fd.fields[0];
BytesRef payload;
if (payloadsDV != null) {
- payload = new BytesRef();
- payloadsDV.get(fd.doc, payload);
+ payload = BytesRef.deepCopyOf(payloadsDV.get(fd.doc));
} else {
payload = null;
}
@@ -512,8 +510,7 @@ public class AnalyzingInfixSuggester ext
contextsDV.setDocument(fd.doc - leaves.get(segment).docBase);
long ord;
while ((ord = contextsDV.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
- BytesRef context = new BytesRef();
- contextsDV.lookupOrd(ord, context);
+ BytesRef context = BytesRef.deepCopyOf(contextsDV.lookupOrd(ord));
contexts.add(context);
}
} else {
Modified: lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/BlendedInfixSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/BlendedInfixSuggester.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/BlendedInfixSuggester.java (original)
+++ lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/BlendedInfixSuggester.java Thu Jun 5 15:54:49 2014
@@ -155,18 +155,15 @@ public class BlendedInfixSuggester exten
// we reduce the num to the one initially requested
int actualNum = num / numFactor;
- BytesRef scratch = new BytesRef();
for (int i = 0; i < hits.scoreDocs.length; i++) {
FieldDoc fd = (FieldDoc) hits.scoreDocs[i];
- textDV.get(fd.doc, scratch);
- String text = scratch.utf8ToString();
+ final String text = textDV.get(fd.doc).utf8ToString();
long weight = (Long) fd.fields[0];
BytesRef payload;
if (payloadsDV != null) {
- payload = new BytesRef();
- payloadsDV.get(fd.doc, payload);
+ payload = BytesRef.deepCopyOf(payloadsDV.get(fd.doc));
} else {
payload = null;
}
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/AssertingAtomicReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/AssertingAtomicReader.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/AssertingAtomicReader.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/AssertingAtomicReader.java Thu Jun 5 15:54:49 2014
@@ -449,11 +449,11 @@ public class AssertingAtomicReader exten
}
@Override
- public void get(int docID, BytesRef result) {
+ public BytesRef get(int docID) {
assert docID >= 0 && docID < maxDoc;
+ final BytesRef result = in.get(docID);
assert result.isValid();
- in.get(docID, result);
- assert result.isValid();
+ return result;
}
}
@@ -479,11 +479,11 @@ public class AssertingAtomicReader exten
}
@Override
- public void lookupOrd(int ord, BytesRef result) {
+ public BytesRef lookupOrd(int ord) {
assert ord >= 0 && ord < valueCount;
+ final BytesRef result = in.lookupOrd(ord);
assert result.isValid();
- in.lookupOrd(ord, result);
- assert result.isValid();
+ return result;
}
@Override
@@ -494,11 +494,11 @@ public class AssertingAtomicReader exten
}
@Override
- public void get(int docID, BytesRef result) {
+ public BytesRef get(int docID) {
assert docID >= 0 && docID < maxDoc;
+ final BytesRef result = in.get(docID);
assert result.isValid();
- in.get(docID, result);
- assert result.isValid();
+ return result;
}
@Override
@@ -543,11 +543,11 @@ public class AssertingAtomicReader exten
}
@Override
- public void lookupOrd(long ord, BytesRef result) {
+ public BytesRef lookupOrd(long ord) {
assert ord >= 0 && ord < valueCount;
+ final BytesRef result = in.lookupOrd(ord);
assert result.isValid();
- in.lookupOrd(ord, result);
- assert result.isValid();
+ return result;
}
@Override
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BaseDocValuesFormatTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BaseDocValuesFormatTestCase.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BaseDocValuesFormatTestCase.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BaseDocValuesFormatTestCase.java Thu Jun 5 15:54:49 2014
@@ -206,11 +206,10 @@ public abstract class BaseDocValuesForma
assertEquals(text, hitDoc.get("fieldname"));
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv1");
- BytesRef scratch = new BytesRef();
- dv.get(hits.scoreDocs[i].doc, scratch);
+ BytesRef scratch = dv.get(hits.scoreDocs[i].doc);
assertEquals(new BytesRef(longTerm), scratch);
dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv2");
- dv.get(hits.scoreDocs[i].doc, scratch);
+ scratch = dv.get(hits.scoreDocs[i].doc);
assertEquals(new BytesRef(text), scratch);
}
@@ -238,7 +237,6 @@ public abstract class BaseDocValuesForma
Query query = new TermQuery(new Term("fieldname", "text"));
TopDocs hits = isearcher.search(query, null, 1);
assertEquals(1, hits.totalHits);
- BytesRef scratch = new BytesRef();
// Iterate through the results:
for (int i = 0; i < hits.scoreDocs.length; i++) {
StoredDocument hitDoc = isearcher.doc(hits.scoreDocs[i].doc);
@@ -247,7 +245,7 @@ public abstract class BaseDocValuesForma
NumericDocValues dv = ireader.leaves().get(0).reader().getNumericDocValues("dv1");
assertEquals(5, dv.get(hits.scoreDocs[i].doc));
BinaryDocValues dv2 = ireader.leaves().get(0).reader().getBinaryDocValues("dv2");
- dv2.get(hits.scoreDocs[i].doc, scratch);
+ BytesRef scratch = dv2.get(hits.scoreDocs[i].doc);
assertEquals(new BytesRef("hello world"), scratch);
}
@@ -276,7 +274,6 @@ public abstract class BaseDocValuesForma
Query query = new TermQuery(new Term("fieldname", "text"));
TopDocs hits = isearcher.search(query, null, 1);
assertEquals(1, hits.totalHits);
- BytesRef scratch = new BytesRef();
// Iterate through the results:
for (int i = 0; i < hits.scoreDocs.length; i++) {
StoredDocument hitDoc = isearcher.doc(hits.scoreDocs[i].doc);
@@ -284,12 +281,12 @@ public abstract class BaseDocValuesForma
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv1");
int ord = dv.getOrd(0);
- dv.lookupOrd(ord, scratch);
+ BytesRef scratch = dv.lookupOrd(ord);
assertEquals(new BytesRef("hello hello"), scratch);
NumericDocValues dv2 = ireader.leaves().get(0).reader().getNumericDocValues("dv2");
assertEquals(5, dv2.get(hits.scoreDocs[i].doc));
BinaryDocValues dv3 = ireader.leaves().get(0).reader().getBinaryDocValues("dv3");
- dv3.get(hits.scoreDocs[i].doc, scratch);
+ scratch = dv3.get(hits.scoreDocs[i].doc);
assertEquals(new BytesRef("hello world"), scratch);
}
@@ -326,12 +323,12 @@ public abstract class BaseDocValuesForma
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv2");
int ord = dv.getOrd(0);
- dv.lookupOrd(ord, scratch);
+ scratch = dv.lookupOrd(ord);
assertEquals(new BytesRef("hello hello"), scratch);
NumericDocValues dv2 = ireader.leaves().get(0).reader().getNumericDocValues("dv3");
assertEquals(5, dv2.get(hits.scoreDocs[i].doc));
BinaryDocValues dv3 = ireader.leaves().get(0).reader().getBinaryDocValues("dv1");
- dv3.get(hits.scoreDocs[i].doc, scratch);
+ scratch = dv3.get(hits.scoreDocs[i].doc);
assertEquals(new BytesRef("hello world"), scratch);
}
@@ -480,14 +477,13 @@ public abstract class BaseDocValuesForma
Query query = new TermQuery(new Term("fieldname", "text"));
TopDocs hits = isearcher.search(query, null, 1);
assertEquals(1, hits.totalHits);
- BytesRef scratch = new BytesRef();
// Iterate through the results:
for (int i = 0; i < hits.scoreDocs.length; i++) {
StoredDocument hitDoc = isearcher.doc(hits.scoreDocs[i].doc);
assertEquals(text, hitDoc.get("fieldname"));
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
- dv.get(hits.scoreDocs[i].doc, scratch);
+ BytesRef scratch = dv.get(hits.scoreDocs[i].doc);
assertEquals(new BytesRef("hello world"), scratch);
}
@@ -527,7 +523,7 @@ public abstract class BaseDocValuesForma
} else {
expected = "hello 2";
}
- dv.get(i, scratch);
+ scratch = dv.get(i);
assertEquals(expected, scratch.utf8ToString());
}
@@ -564,7 +560,7 @@ public abstract class BaseDocValuesForma
assertEquals(text, hitDoc.get("fieldname"));
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
- dv.lookupOrd(dv.getOrd(hits.scoreDocs[i].doc), scratch);
+ scratch = dv.lookupOrd(dv.getOrd(hits.scoreDocs[i].doc));
assertEquals(new BytesRef("hello world"), scratch);
}
@@ -593,9 +589,9 @@ public abstract class BaseDocValuesForma
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
BytesRef scratch = new BytesRef();
- dv.lookupOrd(dv.getOrd(0), scratch);
+ scratch = dv.lookupOrd(dv.getOrd(0));
assertEquals("hello world 1", scratch.utf8ToString());
- dv.lookupOrd(dv.getOrd(1), scratch);
+ scratch = dv.lookupOrd(dv.getOrd(1));
assertEquals("hello world 2", scratch.utf8ToString());
ireader.close();
@@ -626,12 +622,11 @@ public abstract class BaseDocValuesForma
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
assertEquals(2, dv.getValueCount());
- BytesRef scratch = new BytesRef();
assertEquals(0, dv.getOrd(0));
- dv.lookupOrd(0, scratch);
+ BytesRef scratch = dv.lookupOrd(0);
assertEquals("hello world 1", scratch.utf8ToString());
assertEquals(1, dv.getOrd(1));
- dv.lookupOrd(1, scratch);
+ scratch = dv.lookupOrd(1);
assertEquals("hello world 2", scratch.utf8ToString());
assertEquals(0, dv.getOrd(2));
@@ -663,10 +658,9 @@ public abstract class BaseDocValuesForma
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
assertEquals(2, dv.getValueCount()); // 2 ords
- BytesRef scratch = new BytesRef();
- dv.lookupOrd(0, scratch);
+ BytesRef scratch = dv.lookupOrd(0);
assertEquals(new BytesRef("hello world 1"), scratch);
- dv.lookupOrd(1, scratch);
+ scratch = dv.lookupOrd(1);
assertEquals(new BytesRef("hello world 2"), scratch);
for(int i=0;i<2;i++) {
StoredDocument doc2 = ireader.leaves().get(0).reader().document(i);
@@ -676,7 +670,7 @@ public abstract class BaseDocValuesForma
} else {
expected = "hello world 2";
}
- dv.lookupOrd(dv.getOrd(i), scratch);
+ scratch = dv.lookupOrd(dv.getOrd(i));
assertEquals(expected, scratch.utf8ToString());
}
@@ -712,8 +706,7 @@ public abstract class BaseDocValuesForma
} else {
assertEquals(0, dv.getOrd(0));
assertEquals(1, dv.getValueCount());
- BytesRef ref = new BytesRef();
- dv.lookupOrd(0, ref);
+ BytesRef ref = dv.lookupOrd(0);
assertEquals(new BytesRef(), ref);
}
@@ -737,8 +730,7 @@ public abstract class BaseDocValuesForma
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
- BytesRef scratch = new BytesRef();
- dv.get(0, scratch);
+ BytesRef scratch = dv.get(0);
assertEquals(new BytesRef("hello\nworld\r1"), scratch);
ireader.close();
@@ -763,13 +755,12 @@ public abstract class BaseDocValuesForma
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
- BytesRef scratch = new BytesRef();
- dv.lookupOrd(dv.getOrd(0), scratch);
+ BytesRef scratch = dv.lookupOrd(dv.getOrd(0));
assertEquals(new BytesRef("hello world 2"), scratch);
if (defaultCodecSupportsDocsWithField()) {
assertEquals(-1, dv.getOrd(1));
}
- dv.get(1, scratch);
+ scratch = dv.get(1);
assertEquals(new BytesRef(""), scratch);
ireader.close();
directory.close();
@@ -866,10 +857,9 @@ public abstract class BaseDocValuesForma
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
SortedDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
- BytesRef scratch = new BytesRef();
assertEquals(0, dv.getOrd(0));
assertEquals(0, dv.getOrd(1));
- dv.lookupOrd(dv.getOrd(0), scratch);
+ BytesRef scratch = dv.lookupOrd(dv.getOrd(0));
assertEquals("", scratch.utf8ToString());
ireader.close();
@@ -896,10 +886,9 @@ public abstract class BaseDocValuesForma
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
- BytesRef scratch = new BytesRef();
- dv.get(0, scratch);
+ BytesRef scratch = dv.get(0);
assertEquals("", scratch.utf8ToString());
- dv.get(1, scratch);
+ scratch = dv.get(1);
assertEquals("", scratch.utf8ToString());
ireader.close();
@@ -925,8 +914,7 @@ public abstract class BaseDocValuesForma
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
- BytesRef scratch = new BytesRef();
- dv.get(0, scratch);
+ BytesRef scratch = dv.get(0);
assertEquals(new BytesRef(bytes), scratch);
ireader.close();
@@ -952,8 +940,7 @@ public abstract class BaseDocValuesForma
IndexReader ireader = DirectoryReader.open(directory); // read-only=true
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
- BytesRef scratch = new BytesRef();
- dv.get(0, scratch);
+ BytesRef scratch = dv.get(0);
assertEquals(new BytesRef(bytes), scratch);
ireader.close();
directory.close();
@@ -976,8 +963,7 @@ public abstract class BaseDocValuesForma
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
byte mybytes[] = new byte[20];
- BytesRef scratch = new BytesRef(mybytes);
- dv.get(0, scratch);
+ BytesRef scratch = dv.get(0);
assertEquals("boo!", scratch.utf8ToString());
assertFalse(scratch.bytes == mybytes);
@@ -1002,8 +988,7 @@ public abstract class BaseDocValuesForma
assert ireader.leaves().size() == 1;
BinaryDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
byte mybytes[] = new byte[20];
- BytesRef scratch = new BytesRef(mybytes);
- dv.get(0, scratch);
+ BytesRef scratch = dv.get(0);
assertEquals("boo!", scratch.utf8ToString());
assertFalse(scratch.bytes == mybytes);
@@ -1011,72 +996,6 @@ public abstract class BaseDocValuesForma
directory.close();
}
- public void testCodecUsesOwnBytesEachTime() throws IOException {
- Analyzer analyzer = new MockAnalyzer(random());
-
- Directory directory = newDirectory();
- IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT, analyzer);
- conf.setMergePolicy(newLogMergePolicy());
- RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
- Document doc = new Document();
- doc.add(new BinaryDocValuesField("dv", new BytesRef("foo!")));
- iwriter.addDocument(doc);
- doc = new Document();
- doc.add(new BinaryDocValuesField("dv", new BytesRef("bar!")));
- iwriter.addDocument(doc);
- iwriter.shutdown();
-
- // Now search the index:
- IndexReader ireader = DirectoryReader.open(directory); // read-only=true
- assert ireader.leaves().size() == 1;
- BinaryDocValues dv = ireader.leaves().get(0).reader().getBinaryDocValues("dv");
- BytesRef scratch = new BytesRef();
- dv.get(0, scratch);
- assertEquals("foo!", scratch.utf8ToString());
-
- BytesRef scratch2 = new BytesRef();
- dv.get(1, scratch2);
- assertEquals("bar!", scratch2.utf8ToString());
- // check scratch is still valid
- assertEquals("foo!", scratch.utf8ToString());
-
- ireader.close();
- directory.close();
- }
-
- public void testCodecUsesOwnSortedBytesEachTime() throws IOException {
- Analyzer analyzer = new MockAnalyzer(random());
-
- Directory directory = newDirectory();
- IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT, analyzer);
- conf.setMergePolicy(newLogMergePolicy());
- RandomIndexWriter iwriter = new RandomIndexWriter(random(), directory, conf);
- Document doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("foo!")));
- iwriter.addDocument(doc);
- doc = new Document();
- doc.add(new SortedDocValuesField("dv", new BytesRef("bar!")));
- iwriter.addDocument(doc);
- iwriter.shutdown();
-
- // Now search the index:
- IndexReader ireader = DirectoryReader.open(directory); // read-only=true
- assert ireader.leaves().size() == 1;
- BinaryDocValues dv = ireader.leaves().get(0).reader().getSortedDocValues("dv");
- BytesRef scratch = new BytesRef();
- dv.get(0, scratch);
- assertEquals("foo!", scratch.utf8ToString());
-
- BytesRef scratch2 = new BytesRef();
- dv.get(1, scratch2);
- assertEquals("bar!", scratch2.utf8ToString());
- // check scratch is still valid
- assertEquals("foo!", scratch.utf8ToString());
-
- ireader.close();
- directory.close();
- }
-
/*
* Simple test case to show how to use the API
*/
@@ -1181,11 +1100,10 @@ public abstract class BaseDocValuesForma
SortedDocValues docValues = MultiDocValues.getSortedValues(reader, "field");
int[] sort = hash.sort(BytesRef.getUTF8SortedAsUnicodeComparator());
BytesRef expected = new BytesRef();
- BytesRef actual = new BytesRef();
assertEquals(hash.size(), docValues.getValueCount());
for (int i = 0; i < hash.size(); i++) {
hash.get(sort[i], expected);
- docValues.lookupOrd(i, actual);
+ final BytesRef actual = docValues.lookupOrd(i);
assertEquals(expected.utf8ToString(), actual.utf8ToString());
int ord = docValues.lookupTerm(expected);
assertEquals(i, ord);
@@ -1198,7 +1116,7 @@ public abstract class BaseDocValuesForma
DocsEnum termDocsEnum = slowR.termDocsEnum(new Term("id", entry.getKey()));
int docId = termDocsEnum.nextDoc();
expected = new BytesRef(entry.getValue());
- docValues.get(docId, actual);
+ final BytesRef actual = docValues.get(docId);
assertEquals(expected, actual);
}
@@ -1357,8 +1275,7 @@ public abstract class BaseDocValuesForma
BinaryDocValues docValues = r.getBinaryDocValues("dv");
for (int i = 0; i < r.maxDoc(); i++) {
BytesRef binaryValue = r.document(i).getBinaryValue("stored");
- BytesRef scratch = new BytesRef();
- docValues.get(i, scratch);
+ BytesRef scratch = docValues.get(i);
assertEquals(binaryValue, scratch);
}
}
@@ -1428,8 +1345,7 @@ public abstract class BaseDocValuesForma
BinaryDocValues docValues = r.getSortedDocValues("dv");
for (int i = 0; i < r.maxDoc(); i++) {
BytesRef binaryValue = r.document(i).getBinaryValue("stored");
- BytesRef scratch = new BytesRef();
- docValues.get(i, scratch);
+ BytesRef scratch = docValues.get(i);
assertEquals(binaryValue, scratch);
}
}
@@ -1470,8 +1386,7 @@ public abstract class BaseDocValuesForma
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
- BytesRef bytes = new BytesRef();
- dv.lookupOrd(0, bytes);
+ BytesRef bytes = dv.lookupOrd(0);
assertEquals(new BytesRef("hello"), bytes);
ireader.close();
@@ -1497,8 +1412,7 @@ public abstract class BaseDocValuesForma
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
- BytesRef bytes = new BytesRef();
- dv.lookupOrd(0, bytes);
+ BytesRef bytes = dv.lookupOrd(0);
assertEquals(new BytesRef("hello"), bytes);
dv = getOnlySegmentReader(ireader).getSortedSetDocValues("field2");
@@ -1507,7 +1421,7 @@ public abstract class BaseDocValuesForma
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
- dv.lookupOrd(0, bytes);
+ bytes = dv.lookupOrd(0);
assertEquals(new BytesRef("world"), bytes);
ireader.close();
@@ -1542,15 +1456,14 @@ public abstract class BaseDocValuesForma
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
- BytesRef bytes = new BytesRef();
- dv.lookupOrd(0, bytes);
+ BytesRef bytes = dv.lookupOrd(0);
assertEquals(new BytesRef("hello"), bytes);
dv.setDocument(1);
assertEquals(1, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
- dv.lookupOrd(1, bytes);
+ bytes = dv.lookupOrd(1);
assertEquals(new BytesRef("world"), bytes);
ireader.close();
@@ -1577,11 +1490,10 @@ public abstract class BaseDocValuesForma
assertEquals(1, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
- BytesRef bytes = new BytesRef();
- dv.lookupOrd(0, bytes);
+ BytesRef bytes = dv.lookupOrd(0);
assertEquals(new BytesRef("hello"), bytes);
- dv.lookupOrd(1, bytes);
+ bytes = dv.lookupOrd(1);
assertEquals(new BytesRef("world"), bytes);
ireader.close();
@@ -1608,11 +1520,10 @@ public abstract class BaseDocValuesForma
assertEquals(1, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
- BytesRef bytes = new BytesRef();
- dv.lookupOrd(0, bytes);
+ BytesRef bytes = dv.lookupOrd(0);
assertEquals(new BytesRef("hello"), bytes);
- dv.lookupOrd(1, bytes);
+ bytes = dv.lookupOrd(1);
assertEquals(new BytesRef("world"), bytes);
ireader.close();
@@ -1655,14 +1566,13 @@ public abstract class BaseDocValuesForma
assertEquals(1, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
- BytesRef bytes = new BytesRef();
- dv.lookupOrd(0, bytes);
+ BytesRef bytes = dv.lookupOrd(0);
assertEquals(new BytesRef("beer"), bytes);
- dv.lookupOrd(1, bytes);
+ bytes = dv.lookupOrd(1);
assertEquals(new BytesRef("hello"), bytes);
- dv.lookupOrd(2, bytes);
+ bytes = dv.lookupOrd(2);
assertEquals(new BytesRef("world"), bytes);
ireader.close();
@@ -1694,8 +1604,7 @@ public abstract class BaseDocValuesForma
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
- BytesRef bytes = new BytesRef();
- dv.lookupOrd(0, bytes);
+ BytesRef bytes = dv.lookupOrd(0);
assertEquals(new BytesRef("hello"), bytes);
ireader.close();
@@ -1729,8 +1638,7 @@ public abstract class BaseDocValuesForma
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
- BytesRef bytes = new BytesRef();
- dv.lookupOrd(0, bytes);
+ BytesRef bytes = dv.lookupOrd(0);
assertEquals(new BytesRef("hello"), bytes);
ireader.close();
@@ -1763,8 +1671,7 @@ public abstract class BaseDocValuesForma
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
- BytesRef bytes = new BytesRef();
- dv.lookupOrd(0, bytes);
+ BytesRef bytes = dv.lookupOrd(0);
assertEquals(new BytesRef("hello"), bytes);
ireader.close();
@@ -1798,8 +1705,7 @@ public abstract class BaseDocValuesForma
assertEquals(0, dv.nextOrd());
assertEquals(NO_MORE_ORDS, dv.nextOrd());
- BytesRef bytes = new BytesRef();
- dv.lookupOrd(0, bytes);
+ BytesRef bytes = dv.lookupOrd(0);
assertEquals(new BytesRef("hello"), bytes);
ireader.close();
@@ -1955,7 +1861,6 @@ public abstract class BaseDocValuesForma
for (AtomicReaderContext context : ir.leaves()) {
AtomicReader r = context.reader();
SortedSetDocValues docValues = r.getSortedSetDocValues("dv");
- BytesRef scratch = new BytesRef();
for (int i = 0; i < r.maxDoc(); i++) {
String stringValues[] = r.document(i).getValues("stored");
if (docValues != null) {
@@ -1965,7 +1870,7 @@ public abstract class BaseDocValuesForma
assert docValues != null;
long ord = docValues.nextOrd();
assert ord != NO_MORE_ORDS;
- docValues.lookupOrd(ord, scratch);
+ BytesRef scratch = docValues.lookupOrd(ord);
assertEquals(stringValues[j], scratch.utf8ToString());
}
assert docValues == null || docValues.nextOrd() == NO_MORE_ORDS;
@@ -2158,10 +2063,9 @@ public abstract class BaseDocValuesForma
assertEquals(1, ir.leaves().size());
AtomicReader ar = ir.leaves().get(0).reader();
BinaryDocValues dv = ar.getBinaryDocValues("dv1");
- BytesRef ref = new BytesRef();
- dv.get(0, ref);
+ BytesRef ref = dv.get(0);
assertEquals(new BytesRef(), ref);
- dv.get(1, ref);
+ ref = dv.get(1);
assertEquals(new BytesRef(), ref);
Bits docsWithField = ar.getDocsWithField("dv1");
assertTrue(docsWithField.get(0));
@@ -2191,10 +2095,9 @@ public abstract class BaseDocValuesForma
assertEquals(1, ir.leaves().size());
AtomicReader ar = ir.leaves().get(0).reader();
BinaryDocValues dv = ar.getBinaryDocValues("dv1");
- BytesRef ref = new BytesRef();
- dv.get(0, ref);
+ BytesRef ref = dv.get(0);
assertEquals(new BytesRef(), ref);
- dv.get(1, ref);
+ ref = dv.get(1);
assertEquals(new BytesRef(), ref);
Bits docsWithField = ar.getDocsWithField("dv1");
assertTrue(docsWithField.get(0));
@@ -2228,12 +2131,11 @@ public abstract class BaseDocValuesForma
assertEquals(1, ir.leaves().size());
AtomicReader ar = ir.leaves().get(0).reader();
BinaryDocValues dv = ar.getBinaryDocValues("dv1");
- BytesRef ref = new BytesRef();
- dv.get(0, ref);
+ BytesRef ref = dv.get(0);
assertEquals(new BytesRef(), ref);
- dv.get(1, ref);
+ ref = dv.get(1);
assertEquals(new BytesRef(), ref);
- dv.get(2, ref);
+ ref = dv.get(2);
assertEquals(new BytesRef("boo"), ref);
Bits docsWithField = ar.getDocsWithField("dv1");
assertTrue(docsWithField.get(0));
@@ -2308,10 +2210,9 @@ public abstract class BaseDocValuesForma
NumericDocValues numerics = r.getNumericDocValues("dvNum");
for (int j = 0; j < r.maxDoc(); j++) {
BytesRef binaryValue = r.document(j).getBinaryValue("storedBin");
- BytesRef scratch = new BytesRef();
- binaries.get(j, scratch);
+ BytesRef scratch = binaries.get(j);
assertEquals(binaryValue, scratch);
- sorted.get(j, scratch);
+ scratch = sorted.get(j);
assertEquals(binaryValue, scratch);
String expected = r.document(j).get("storedNum");
assertEquals(Long.parseLong(expected), numerics.get(j));
@@ -2420,10 +2321,9 @@ public abstract class BaseDocValuesForma
BytesRef binaryValue = r.document(j).getBinaryValue("storedBin");
if (binaryValue != null) {
if (binaries != null) {
- BytesRef scratch = new BytesRef();
- binaries.get(j, scratch);
+ BytesRef scratch = binaries.get(j);
assertEquals(binaryValue, scratch);
- sorted.get(j, scratch);
+ scratch = sorted.get(j);
assertEquals(binaryValue, scratch);
assertTrue(binaryBits.get(j));
assertTrue(sortedBits.get(j));
@@ -2451,8 +2351,7 @@ public abstract class BaseDocValuesForma
for (int k = 0; k < values.length; k++) {
long ord = sortedSet.nextOrd();
assertTrue(ord != SortedSetDocValues.NO_MORE_ORDS);
- BytesRef value = new BytesRef();
- sortedSet.lookupOrd(ord, value);
+ BytesRef value = sortedSet.lookupOrd(ord);
assertEquals(values[k], value.utf8ToString());
}
assertEquals(SortedSetDocValues.NO_MORE_ORDS, sortedSet.nextOrd());
@@ -2507,9 +2406,8 @@ public abstract class BaseDocValuesForma
AtomicReader ar = SlowCompositeReaderWrapper.wrap(r);
BinaryDocValues values = ar.getBinaryDocValues("field");
- BytesRef result = new BytesRef();
for(int j=0;j<5;j++) {
- values.get(0, result);
+ BytesRef result = values.get(0);
assertTrue(result.length == 0 || result.length == 1<<i);
}
ar.close();
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java Thu Jun 5 15:54:49 2014
@@ -2223,12 +2223,10 @@ public abstract class LuceneTestCase ext
BinaryDocValues leftValues = MultiDocValues.getBinaryValues(leftReader, field);
BinaryDocValues rightValues = MultiDocValues.getBinaryValues(rightReader, field);
if (leftValues != null && rightValues != null) {
- BytesRef scratchLeft = new BytesRef();
- BytesRef scratchRight = new BytesRef();
for(int docID=0;docID<leftReader.maxDoc();docID++) {
- leftValues.get(docID, scratchLeft);
- rightValues.get(docID, scratchRight);
- assertEquals(info, scratchLeft, scratchRight);
+ final BytesRef left = BytesRef.deepCopyOf(leftValues.get(docID));
+ final BytesRef right = rightValues.get(docID);
+ assertEquals(info, left, right);
}
} else {
assertNull(info, leftValues);
@@ -2246,15 +2244,15 @@ public abstract class LuceneTestCase ext
BytesRef scratchLeft = new BytesRef();
BytesRef scratchRight = new BytesRef();
for (int i = 0; i < leftValues.getValueCount(); i++) {
- leftValues.lookupOrd(i, scratchLeft);
- rightValues.lookupOrd(i, scratchRight);
- assertEquals(info, scratchLeft, scratchRight);
+ final BytesRef left = BytesRef.deepCopyOf(leftValues.lookupOrd(i));
+ final BytesRef right = rightValues.lookupOrd(i);
+ assertEquals(info, left, right);
}
// bytes
for(int docID=0;docID<leftReader.maxDoc();docID++) {
- leftValues.get(docID, scratchLeft);
- rightValues.get(docID, scratchRight);
- assertEquals(info, scratchLeft, scratchRight);
+ final BytesRef left = BytesRef.deepCopyOf(leftValues.get(docID));
+ final BytesRef right = rightValues.get(docID);
+ assertEquals(info, left, right);
}
} else {
assertNull(info, leftValues);
@@ -2269,12 +2267,10 @@ public abstract class LuceneTestCase ext
// numOrds
assertEquals(info, leftValues.getValueCount(), rightValues.getValueCount());
// ords
- BytesRef scratchLeft = new BytesRef();
- BytesRef scratchRight = new BytesRef();
for (int i = 0; i < leftValues.getValueCount(); i++) {
- leftValues.lookupOrd(i, scratchLeft);
- rightValues.lookupOrd(i, scratchRight);
- assertEquals(info, scratchLeft, scratchRight);
+ final BytesRef left = BytesRef.deepCopyOf(leftValues.lookupOrd(i));
+ final BytesRef right = rightValues.lookupOrd(i);
+ assertEquals(info, left, right);
}
// ord lists
for(int docID=0;docID<leftReader.maxDoc();docID++) {
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/analytics/accumulator/facet/FieldFacetAccumulator.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/analytics/accumulator/facet/FieldFacetAccumulator.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/analytics/accumulator/facet/FieldFacetAccumulator.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/analytics/accumulator/facet/FieldFacetAccumulator.java Thu Jun 5 15:54:49 2014
@@ -50,7 +50,6 @@ public class FieldFacetAccumulator exten
protected final boolean multiValued;
protected final boolean numField;
protected final boolean dateField;
- protected final BytesRef value;
protected SortedSetDocValues setValues;
protected SortedDocValues sortValues;
protected NumericDocValues numValues;
@@ -70,7 +69,6 @@ public class FieldFacetAccumulator exten
this.numField = schemaField.getType().getNumericType()!=null;
this.dateField = schemaField.getType().getClass().equals(TrieDateField.class);
this.parent = parent;
- this.value = new BytesRef();
this.parser = AnalyticsParsers.getParser(schemaField.getType().getClass());
}
@@ -108,7 +106,7 @@ public class FieldFacetAccumulator exten
int term;
while ((term = (int)setValues.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
exists = true;
- setValues.lookupOrd(term, value);
+ final BytesRef value = setValues.lookupOrd(term);
parent.collectField(doc, name, parser.parse(value) );
}
}
@@ -129,11 +127,11 @@ public class FieldFacetAccumulator exten
}
} else {
if(sortValues != null) {
- sortValues.get(doc,value);
- if( BytesRef.EMPTY_BYTES == value.bytes ){
+ final int ord = sortValues.getOrd(doc);
+ if (ord < 0) {
parent.collectField(doc, name, FacetingAccumulator.MISSING_VALUE );
} else {
- parent.collectField(doc, name, parser.parse(value) );
+ parent.collectField(doc, name, parser.parse(sortValues.lookupOrd(ord)) );
}
} else {
parent.collectField(doc, name, FacetingAccumulator.MISSING_VALUE );
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java Thu Jun 5 15:54:49 2014
@@ -218,7 +218,6 @@ public class ExpandComponent extends Sea
searcher.search(query, pfilter.filter, collector);
IntObjectMap groups = groupExpandCollector.getGroups();
Map<String, DocSlice> outMap = new HashMap<>();
- BytesRef bytesRef = new BytesRef();
CharsRef charsRef = new CharsRef();
FieldType fieldType = searcher.getSchema().getField(field).getType();
for (IntObjectCursor cursor : (Iterable<IntObjectCursor>) groups) {
@@ -235,7 +234,7 @@ public class ExpandComponent extends Sea
scores[i] = scoreDoc.score;
}
DocSlice slice = new DocSlice(0, docs.length, docs, scores, topDocs.totalHits, topDocs.getMaxScore());
- values.lookupOrd(ord, bytesRef);
+ final BytesRef bytesRef = values.lookupOrd(ord);
fieldType.indexedToReadable(bytesRef, charsRef);
String group = charsRef.toString();
outMap.put(group, slice);
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/FieldFacetStats.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/FieldFacetStats.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/FieldFacetStats.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/FieldFacetStats.java Thu Jun 5 15:54:49 2014
@@ -62,8 +62,6 @@ public class FieldFacetStats {
SortedDocValues topLevelSortedValues = null;
- private final BytesRef tempBR = new BytesRef();
-
public FieldFacetStats(SolrIndexSearcher searcher, String name, SchemaField field_sf, SchemaField facet_sf, boolean calcDistinct) {
this.name = name;
this.field_sf = field_sf;
@@ -106,14 +104,12 @@ public class FieldFacetStats {
int term = topLevelSortedValues.getOrd(docID);
int arrIdx = term;
if (arrIdx >= 0 && arrIdx < topLevelSortedValues.getValueCount()) {
- final BytesRef br;
+ final String key;
if (term == -1) {
- br = null;
+ key = null;
} else {
- br = tempBR;
- topLevelSortedValues.lookupOrd(term, tempBR);
+ key = topLevelSortedValues.lookupOrd(term).utf8ToString();
}
- String key = br == null ? null : br.utf8ToString();
while (facetStatsTerms.size() <= statsTermNum) {
facetStatsTerms.add(new HashMap<String, Integer>());
}
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/request/DocValuesFacets.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/request/DocValuesFacets.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/request/DocValuesFacets.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/request/DocValuesFacets.java Thu Jun 5 15:54:49 2014
@@ -85,8 +85,6 @@ public class DocValuesFacets {
throw new UnsupportedOperationException("Currently this faceting method is limited to " + Integer.MAX_VALUE + " unique terms");
}
- final BytesRef br = new BytesRef();
-
final BytesRef prefixRef;
if (prefix == null) {
prefixRef = null;
@@ -132,7 +130,7 @@ public class DocValuesFacets {
if (multiValued) {
SortedSetDocValues sub = leaf.reader().getSortedSetDocValues(fieldName);
if (sub == null) {
- sub = DocValues.EMPTY_SORTED_SET;
+ sub = DocValues.emptySortedSet();
}
final SortedDocValues singleton = DocValues.unwrapSingleton(sub);
if (singleton != null) {
@@ -144,7 +142,7 @@ public class DocValuesFacets {
} else {
SortedDocValues sub = leaf.reader().getSortedDocValues(fieldName);
if (sub == null) {
- sub = DocValues.EMPTY_SORTED;
+ sub = DocValues.emptySorted();
}
accumSingle(counts, startTermIndex, sub, disi, subIndex, ordinalMap);
}
@@ -194,8 +192,8 @@ public class DocValuesFacets {
long pair = sorted[i];
int c = (int)(pair >>> 32);
int tnum = Integer.MAX_VALUE - (int)pair;
- si.lookupOrd(startTermIndex+tnum, br);
- ft.indexedToReadable(br, charsRef);
+ final BytesRef term = si.lookupOrd(startTermIndex+tnum);
+ ft.indexedToReadable(term, charsRef);
res.add(charsRef.toString(), c);
}
@@ -213,8 +211,8 @@ public class DocValuesFacets {
int c = counts[i];
if (c<mincount || --off>=0) continue;
if (--lim<0) break;
- si.lookupOrd(startTermIndex+i, br);
- ft.indexedToReadable(br, charsRef);
+ final BytesRef term = si.lookupOrd(startTermIndex+i);
+ ft.indexedToReadable(term, charsRef);
res.add(charsRef.toString(), c);
}
}
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/request/DocValuesStats.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/request/DocValuesStats.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/request/DocValuesStats.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/request/DocValuesStats.java Thu Jun 5 15:54:49 2014
@@ -84,7 +84,7 @@ public class DocValuesStats {
}
}
if (si == null) {
- si = DocValues.EMPTY_SORTED_SET;
+ si = DocValues.emptySortedSet();
}
if (si.getValueCount() >= Integer.MAX_VALUE) {
throw new UnsupportedOperationException("Currently this stats method is limited to " + Integer.MAX_VALUE + " unique terms");
@@ -112,7 +112,7 @@ public class DocValuesStats {
if (multiValued) {
SortedSetDocValues sub = leaf.reader().getSortedSetDocValues(fieldName);
if (sub == null) {
- sub = DocValues.EMPTY_SORTED_SET;
+ sub = DocValues.emptySortedSet();
}
final SortedDocValues singleton = DocValues.unwrapSingleton(sub);
if (singleton != null) {
@@ -124,7 +124,7 @@ public class DocValuesStats {
} else {
SortedDocValues sub = leaf.reader().getSortedDocValues(fieldName);
if (sub == null) {
- sub = DocValues.EMPTY_SORTED;
+ sub = DocValues.emptySorted();
}
accumSingle(counts, docBase, facetStats, sub, disi, subIndex, ordinalMap);
}
@@ -132,11 +132,10 @@ public class DocValuesStats {
}
// add results in index order
- BytesRef value = new BytesRef();
for (int ord = 0; ord < counts.length; ord++) {
int count = counts[ord];
if (count > 0) {
- si.lookupOrd(ord, value);
+ final BytesRef value = si.lookupOrd(ord);
res.accumulate(value, count);
for (FieldFacetStats f : facetStats) {
f.accumulateTermNum(ord, value);
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/BoolField.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/BoolField.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/BoolField.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/BoolField.java Thu Jun 5 15:54:49 2014
@@ -193,11 +193,10 @@ class BoolFieldSource extends ValueSourc
// figure out what ord maps to true
int nord = sindex.getValueCount();
- BytesRef br = new BytesRef();
// if no values in the segment, default trueOrd to something other then -1 (missing)
int tord = -2;
for (int i=0; i<nord; i++) {
- sindex.lookupOrd(i, br);
+ final BytesRef br = sindex.lookupOrd(i);
if (br.length==1 && br.bytes[br.offset]=='T') {
tord = i;
break;
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/request/TestFaceting.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/request/TestFaceting.java?rev=1600688&r1=1600687&r2=1600688&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/request/TestFaceting.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/request/TestFaceting.java Thu Jun 5 15:54:49 2014
@@ -923,61 +923,9 @@ public class TestFaceting extends SolrTe
, "*[count(//lst[@name='facet_fields']/lst)=50]"
, "*[count(//lst[@name='facet_fields']/lst/int)=100]"
);
-
- // Now, are all the UnInvertedFields still the same? Meaning they weren't re-fetched even when a bunch were
- // requested at the same time?
- assertEquals("UnInvertedField coming back from the seacher should not have changed! ",
- ui0, DocValues.getSortedSet(currentSearcher.getAtomicReader(), "f0_ws"));
- assertEquals("UnInvertedField coming back from the seacher should not have changed! ",
- ui1, DocValues.getSortedSet(currentSearcher.getAtomicReader(), "f1_ws"));
- assertEquals("UnInvertedField coming back from the seacher should not have changed! ",
- ui2, DocValues.getSortedSet(currentSearcher.getAtomicReader(), "f2_ws"));
- assertEquals("UnInvertedField coming back from the seacher should not have changed! ",
- ui3, DocValues.getSortedSet(currentSearcher.getAtomicReader(), "f3_ws"));
- assertEquals("UnInvertedField coming back from the seacher should not have changed! ",
- ui4, DocValues.getSortedSet(currentSearcher.getAtomicReader(), "f4_ws"));
- assertEquals("UnInvertedField coming back from the seacher should not have changed! ",
- ui5, DocValues.getSortedSet(currentSearcher.getAtomicReader(), "f5_ws"));
- assertEquals("UnInvertedField coming back from the seacher should not have changed! ",
- ui6, DocValues.getSortedSet(currentSearcher.getAtomicReader(), "f6_ws"));
- assertEquals("UnInvertedField coming back from the seacher should not have changed! ",
- ui7, DocValues.getSortedSet(currentSearcher.getAtomicReader(), "f7_ws"));
- assertEquals("UnInvertedField coming back from the seacher should not have changed! ",
- ui8, DocValues.getSortedSet(currentSearcher.getAtomicReader(), "f8_ws"));
- assertEquals("UnInvertedField coming back from the seacher should not have changed! ",
- ui9, DocValues.getSortedSet(currentSearcher.getAtomicReader(), "f9_ws"));
} finally {
currentSearcherRef.decref();
}
}
-
- // assert same instance: either same object, or both wrapping same single-valued object
- private void assertEquals(String msg, SortedSetDocValues dv1, SortedSetDocValues dv2) {
- SortedDocValues singleton1 = DocValues.unwrapSingleton(dv1);
- SortedDocValues singleton2 = DocValues.unwrapSingleton(dv2);
- if (singleton1 == null || singleton2 == null) {
- // actually a multi-valued field
- if (dv1 instanceof MultiDocValues.MultiSortedSetDocValues) {
- // if we produced more than one segment, ensure the core ordinal map is the same object
- assertTrue(dv2 instanceof MultiDocValues.MultiSortedSetDocValues);
- assertSame(((MultiDocValues.MultiSortedSetDocValues) dv1).mapping,
- ((MultiDocValues.MultiSortedSetDocValues) dv2).mapping);
- } else {
- // otherwise, same atomic instance
- assertSame(dv1, dv2);
- }
- } else {
- // just wrapping a field that is actually single-valued
- if (singleton1 instanceof MultiDocValues.MultiSortedDocValues) {
- // if we produced more than one segment, ensure the core ordinal map is the same object
- assertTrue(singleton2 instanceof MultiDocValues.MultiSortedDocValues);
- assertSame(((MultiDocValues.MultiSortedDocValues) singleton1).mapping,
- ((MultiDocValues.MultiSortedDocValues) singleton2).mapping);
- } else {
- // otherwise, same atomic instance
- assertSame(singleton1, singleton2);
- }
- }
- }
}