From cdb2cbfeaa4f12d940d86b764b8f643fafe665f8 Mon Sep 17 00:00:00 2001 From: Yonik Seeley Date: Fri, 3 Jul 2009 15:09:21 +0000 Subject: [PATCH] SOLR-1260: support all DocSet operations in DocSlice git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@790938 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/solr/search/DocSlice.java | 24 ++++++++++- .../org/apache/solr/search/HashDocSet.java | 3 +- .../org/apache/solr/search/TestDocSet.java | 43 +++++++++++++++---- 3 files changed, 58 insertions(+), 12 deletions(-) diff --git a/src/java/org/apache/solr/search/DocSlice.java b/src/java/org/apache/solr/search/DocSlice.java index a21db1596cd..0f8887c7943 100644 --- a/src/java/org/apache/solr/search/DocSlice.java +++ b/src/java/org/apache/solr/search/DocSlice.java @@ -85,8 +85,9 @@ public class DocSlice extends DocSetBase implements DocList { public boolean exists(int doc) { - for (int i: docs) { - if (i==doc) return true; + int end = offset+len; + for (int i=offset; i=0; i--) table[i]=EMPTY; - for (int i=offset; i=offset; i--) { + arr[i] = iter.nextDoc(); + } + + return new DocSlice(offset, len, arr, null, len*2, 100.0f); + } + + public DocSet getDocSet(OpenBitSet bs) { - switch(rand.nextInt(3)) { - case 0: return getIntDocSet(bs); - case 1: return getHashDocSet(bs); - case 2: return getBitDocSet(bs); + switch(rand.nextInt(10)) { + case 0: return getHashDocSet(bs); + + case 1: return getBitDocSet(bs); + case 2: return getBitDocSet(bs); + case 3: return getBitDocSet(bs); + + case 4: return getIntDocSet(bs); + case 5: return getIntDocSet(bs); + case 6: return getIntDocSet(bs); + case 7: return getIntDocSet(bs); + case 8: return getIntDocSet(bs); + + case 9: return getDocSlice(bs); } return null; } @@ -88,8 +115,8 @@ public class TestDocSet extends TestCase { } public void iter(DocSet d1, DocSet d2) { - // HashDocSet doesn't iterate in order. - if (d1 instanceof HashDocSet || d2 instanceof HashDocSet) return; + // HashDocSet and DocList doesn't iterate in order. + if (d1 instanceof HashDocSet || d2 instanceof HashDocSet || d1 instanceof DocList || d2 instanceof DocList) return; DocIterator i1 = d1.iterator(); DocIterator i2 = d2.iterator(); @@ -149,7 +176,7 @@ public class TestDocSet extends TestCase { // 64 bits for the bit doc set. Smaller sets can hit more boundary conditions though. doMany(130, 10000); - //doMany(130, 1000000); + // doMany(130, 1000000); } public DocSet getRandomDocSet(int n, int maxDoc) { @@ -419,6 +446,4 @@ public class TestDocSet extends TestCase { doFilterTest(sir); } } - - }