You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2015/01/15 11:19:30 UTC

svn commit: r1652034 [2/3] - in /lucene/dev/branches/lucene_solr_5_0: ./ lucene/ lucene/benchmark/ lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/ lucene/core/ lucene/core/src/java/org/apache/lucene/search/ lucene/core/src/test/org/...

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanCoord.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanCoord.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanCoord.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanCoord.java Thu Jan 15 10:19:28 2015
@@ -712,34 +712,27 @@ public class TestBooleanCoord extends Lu
     assertEquals(0, scorer.nextDoc());
     assertEquals(expected, scorer.score(), 0.0001f);
     
-    // test out-of-order (if supported)
-    if (weight.scoresDocsOutOfOrder()) {
-      final AtomicBoolean seen = new AtomicBoolean(false);
-      BulkScorer bulkScorer = weight.bulkScorer(reader.leaves().get(0), false, null);
-      assertNotNull(bulkScorer);
-      bulkScorer.score(new LeafCollector() {
-        Scorer scorer;
-        
-        @Override
-        public void setScorer(Scorer scorer) throws IOException {
-          this.scorer = scorer;
-        }
-        
-        @Override
-        public void collect(int doc) throws IOException {
-          assertFalse(seen.get());
-          assertEquals(0, doc);
-          assertEquals(expected, scorer.score(), 0.0001f);
-          seen.set(true);
-        }
-
-        @Override
-        public boolean acceptsDocsOutOfOrder() {
-          return true;
-        }
-      }, 1);
-      assertTrue(seen.get());
-    }
+    // test bulk scorer
+    final AtomicBoolean seen = new AtomicBoolean(false);
+    BulkScorer bulkScorer = weight.bulkScorer(reader.leaves().get(0), null);
+    assertNotNull(bulkScorer);
+    bulkScorer.score(new LeafCollector() {
+      Scorer scorer;
+      
+      @Override
+      public void setScorer(Scorer scorer) throws IOException {
+        this.scorer = scorer;
+      }
+      
+      @Override
+      public void collect(int doc) throws IOException {
+        assertFalse(seen.get());
+        assertEquals(0, doc);
+        assertEquals(expected, scorer.score(), 0.0001f);
+        seen.set(true);
+      }
+    }, 1);
+    assertTrue(seen.get());
     
     // test the explanation
     Explanation expl = weight.explain(reader.leaves().get(0), 0);

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java Thu Jan 15 10:19:28 2015
@@ -93,7 +93,7 @@ public class TestBooleanMinShouldMatch e
         assertEquals("result count", expected, h.length);
         //System.out.println("TEST: now check");
         // bs2
-        TopScoreDocCollector collector = TopScoreDocCollector.create(1000, true);
+        TopScoreDocCollector collector = TopScoreDocCollector.create(1000);
         s.search(q, collector);
         ScoreDoc[] h2 = collector.topDocs().scoreDocs;
         if (expected != h2.length) {

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanOr.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanOr.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanOr.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanOr.java Thu Jan 15 10:19:28 2015
@@ -182,7 +182,7 @@ public class TestBooleanOr extends Lucen
     Weight w = s.createNormalizedWeight(bq);
 
     assertEquals(1, s.getIndexReader().leaves().size());
-    BulkScorer scorer = w.bulkScorer(s.getIndexReader().leaves().get(0), false, null);
+    BulkScorer scorer = w.bulkScorer(s.getIndexReader().leaves().get(0), null);
 
     final FixedBitSet hits = new FixedBitSet(docCount);
     final AtomicInteger end = new AtomicInteger();
@@ -193,11 +193,6 @@ public class TestBooleanOr extends Lucen
           assertTrue("collected doc=" + doc + " beyond max=" + end, doc < end.intValue());
           hits.set(doc);
         }
-
-        @Override
-        public boolean acceptsDocsOutOfOrder() {
-          return true;
-        }
       };
 
     while (end.intValue() < docCount) {

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanQuery.java Thu Jan 15 10:19:28 2015
@@ -314,7 +314,7 @@ public class TestBooleanQuery extends Lu
     SpanQuery sq2 = new SpanTermQuery(new Term(FIELD, "clckwork"));
     query.add(sq1, BooleanClause.Occur.SHOULD);
     query.add(sq2, BooleanClause.Occur.SHOULD);
-    TopScoreDocCollector collector = TopScoreDocCollector.create(1000, true);
+    TopScoreDocCollector collector = TopScoreDocCollector.create(1000);
     searcher.search(query, collector);
     hits = collector.topDocs().scoreDocs.length;
     for (ScoreDoc scoreDoc : collector.topDocs().scoreDocs){
@@ -326,32 +326,6 @@ public class TestBooleanQuery extends Lu
     directory.close();
   }
 
-  // LUCENE-5487
-  public void testInOrderWithMinShouldMatch() throws Exception {
-    Directory dir = newDirectory();
-    RandomIndexWriter w = new RandomIndexWriter(random(), dir);
-    Document doc = new Document();
-    doc.add(newTextField("field", "some text here", Field.Store.NO));
-    w.addDocument(doc);
-    IndexReader r = w.getReader();
-    w.close();
-    IndexSearcher s = new IndexSearcher(r) {
-        @Override
-        protected void search(List<LeafReaderContext> leaves, Weight weight, Collector collector) throws IOException {
-          assertEquals(-1, collector.getClass().getSimpleName().indexOf("OutOfOrder"));
-          super.search(leaves, weight, collector);
-        }
-      };
-    BooleanQuery bq = new BooleanQuery();
-    bq.add(new TermQuery(new Term("field", "some")), BooleanClause.Occur.SHOULD);
-    bq.add(new TermQuery(new Term("field", "text")), BooleanClause.Occur.SHOULD);
-    bq.add(new TermQuery(new Term("field", "here")), BooleanClause.Occur.SHOULD);
-    bq.setMinimumNumberShouldMatch(2);
-    s.search(bq, 10);
-    r.close();
-    dir.close();
-  }
-
   public void testOneClauseRewriteOptimization() throws Exception {
     final float BOOST = 3.5F;
     final String FIELD = "content";

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java Thu Jan 15 10:19:28 2015
@@ -36,13 +36,17 @@ import org.apache.lucene.index.IndexWrit
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.BooleanClause.Occur;
+import org.apache.lucene.search.BooleanQuery.BooleanWeight;
 import org.apache.lucene.search.Scorer.ChildScorer;
+import org.apache.lucene.search.Weight.DefaultBulkScorer;
 import org.apache.lucene.store.Directory;
+import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.LuceneTestCase;
 
 // TODO: refactor to a base class, that collects freqs from the scorer tree
 // and test all queries with it
 public class TestBooleanQueryVisitSubscorers extends LuceneTestCase {
+
   Analyzer analyzer;
   IndexReader reader;
   IndexSearcher searcher;
@@ -64,7 +68,9 @@ public class TestBooleanQueryVisitSubsco
     writer.addDocument(doc("nutch", "nutch is an internet search engine with web crawler and is using lucene and hadoop"));
     reader = writer.getReader();
     writer.close();
-    searcher = newSearcher(reader);
+    // we do not use newSearcher because the assertingXXX layers break
+    // the toString representations we are relying on
+    searcher = new IndexSearcher(reader);
   }
   
   @Override
@@ -75,7 +81,7 @@ public class TestBooleanQueryVisitSubsco
   }
 
   public void testDisjunctions() throws IOException {
-    BooleanQuery bq = new BooleanQuery();
+    BooleanQuery2 bq = new BooleanQuery2();
     bq.add(new TermQuery(new Term(F1, "lucene")), BooleanClause.Occur.SHOULD);
     bq.add(new TermQuery(new Term(F2, "lucene")), BooleanClause.Occur.SHOULD);
     bq.add(new TermQuery(new Term(F2, "search")), BooleanClause.Occur.SHOULD);
@@ -87,9 +93,9 @@ public class TestBooleanQueryVisitSubsco
   }
   
   public void testNestedDisjunctions() throws IOException {
-    BooleanQuery bq = new BooleanQuery();
+    BooleanQuery2 bq = new BooleanQuery2();
     bq.add(new TermQuery(new Term(F1, "lucene")), BooleanClause.Occur.SHOULD);
-    BooleanQuery bq2 = new BooleanQuery();
+    BooleanQuery2 bq2 = new BooleanQuery2();
     bq2.add(new TermQuery(new Term(F2, "lucene")), BooleanClause.Occur.SHOULD);
     bq2.add(new TermQuery(new Term(F2, "search")), BooleanClause.Occur.SHOULD);
     bq.add(bq2, BooleanClause.Occur.SHOULD);
@@ -130,7 +136,7 @@ public class TestBooleanQueryVisitSubsco
     private final Set<Scorer> tqsSet = new HashSet<>();
     
     MyCollector() {
-      super(TopScoreDocCollector.create(10, true));
+      super(TopScoreDocCollector.create(10));
     }
 
     public LeafCollector getLeafCollector(LeafReaderContext context)
@@ -139,11 +145,6 @@ public class TestBooleanQueryVisitSubsco
       return new FilterLeafCollector(super.getLeafCollector(context)) {
         
         @Override
-        public boolean acceptsDocsOutOfOrder() {
-          return false;
-        }
-        
-        @Override
         public void setScorer(Scorer scorer) throws IOException {
           super.setScorer(scorer);
           tqsSet.clear();
@@ -205,7 +206,7 @@ public class TestBooleanQueryVisitSubsco
   }
 
   public void testGetChildrenBoosterScorer() throws IOException {
-    final BooleanQuery query = new BooleanQuery();
+    final BooleanQuery2 query = new BooleanQuery2();
     query.add(new TermQuery(new Term(F2, "nutch")), Occur.SHOULD);
     query.add(new TermQuery(new Term(F2, "miss")), Occur.SHOULD);
     ScorerSummarizingCollector collector = new ScorerSummarizingCollector();
@@ -246,11 +247,6 @@ public class TestBooleanQueryVisitSubsco
         public void collect(int doc) throws IOException {
           numHits[0]++;
         }
-
-        @Override
-        public boolean acceptsDocsOutOfOrder() {
-          return false;
-        }
       };
     }
 
@@ -276,4 +272,22 @@ public class TestBooleanQueryVisitSubsco
       return builder;
     }
   }
+
+  static class BooleanQuery2 extends BooleanQuery {
+
+    @Override
+    public Weight createWeight(IndexSearcher searcher) throws IOException {
+      return new BooleanWeight(searcher, false) {
+        @Override
+        public BulkScorer bulkScorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
+          Scorer scorer = scorer(context, acceptDocs);
+          if (scorer == null) {
+            return null;
+          }
+          return new DefaultBulkScorer(scorer);
+        }
+      };
+    }
+
+  }
 }

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanScorer.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanScorer.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestBooleanScorer.java Thu Jan 15 10:19:28 2015
@@ -65,66 +65,6 @@ public class TestBooleanScorer extends L
     ir.close();
     directory.close();
   }
-  
-  public void testEmptyBucketWithMoreDocs() throws Exception {
-    // This test checks the logic of nextDoc() when all sub scorers have docs
-    // beyond the first bucket (for example). Currently, the code relies on the
-    // 'more' variable to work properly, and this test ensures that if the logic
-    // changes, we have a test to back it up.
-    
-    Directory directory = newDirectory();
-    RandomIndexWriter writer = new RandomIndexWriter(random(), directory);
-    writer.commit();
-    IndexReader ir = writer.getReader();
-    writer.close();
-    IndexSearcher searcher = newSearcher(ir);
-    BooleanWeight weight = (BooleanWeight) new BooleanQuery().createWeight(searcher);
-    BulkScorer[] scorers = new BulkScorer[] {new BulkScorer() {
-      private int doc = -1;
-
-      @Override
-      public boolean score(LeafCollector c, int maxDoc) throws IOException {
-        assert doc == -1;
-        doc = 3000;
-        FakeScorer fs = new FakeScorer();
-        fs.doc = doc;
-        fs.score = 1.0f;
-        c.setScorer(fs);
-        c.collect(3000);
-        return false;
-      }
-    }};
-    
-    BooleanScorer bs = new BooleanScorer(weight, false, 1, Arrays.asList(scorers), Collections.<BulkScorer>emptyList(), scorers.length);
-
-    final List<Integer> hits = new ArrayList<>();
-    bs.score(new SimpleCollector() {
-      int docBase;
-      @Override
-      public void setScorer(Scorer scorer) {
-      }
-      
-      @Override
-      public void collect(int doc) {
-        hits.add(docBase+doc);
-      }
-      
-      @Override
-      protected void doSetNextReader(LeafReaderContext context) throws IOException {
-        docBase = context.docBase;
-      }
-      
-      @Override
-      public boolean acceptsDocsOutOfOrder() {
-        return true;
-      }
-      });
-
-    assertEquals("should have only 1 hit", 1, hits.size());
-    assertEquals("hit should have been docID=3000", 3000, hits.get(0).intValue());
-    ir.close();
-    directory.close();
-  }
 
   /** Throws UOE if Weight.scorer is called */
   private static class CrazyMustUseBulkScorerQuery extends Query {
@@ -162,7 +102,7 @@ public class TestBooleanScorer extends L
         }
 
         @Override
-        public BulkScorer bulkScorer(LeafReaderContext context, boolean scoreDocsInOrder, Bits acceptDocs) {
+        public BulkScorer bulkScorer(LeafReaderContext context, Bits acceptDocs) {
           return new BulkScorer() {
 
             @Override

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestCachingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestCachingCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestCachingCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestCachingCollector.java Thu Jan 15 10:19:28 2015
@@ -54,25 +54,14 @@ public class TestCachingCollector extend
   
   private static class NoOpCollector extends SimpleCollector {
 
-    private final boolean acceptDocsOutOfOrder;
-    
-    public NoOpCollector(boolean acceptDocsOutOfOrder) {
-      this.acceptDocsOutOfOrder = acceptDocsOutOfOrder;
-    }
-
     @Override
     public void collect(int doc) throws IOException {}
 
-    @Override
-    public boolean acceptsDocsOutOfOrder() {
-      return acceptDocsOutOfOrder;
-    }
-    
   }
 
   public void testBasic() throws Exception {
     for (boolean cacheScores : new boolean[] { false, true }) {
-      CachingCollector cc = CachingCollector.create(new NoOpCollector(false), cacheScores, 1.0);
+      CachingCollector cc = CachingCollector.create(new NoOpCollector(), cacheScores, 1.0);
       LeafCollector acc = cc.getLeafCollector(null);
       acc.setScorer(new MockScorer());
 
@@ -90,17 +79,12 @@ public class TestCachingCollector extend
           assertEquals(prevDocID + 1, doc);
           prevDocID = doc;
         }
-
-        @Override
-        public boolean acceptsDocsOutOfOrder() {
-          return false;
-        }
       });
     }
   }
   
   public void testIllegalStateOnReplay() throws Exception {
-    CachingCollector cc = CachingCollector.create(new NoOpCollector(false), true, 50 * ONE_BYTE);
+    CachingCollector cc = CachingCollector.create(new NoOpCollector(), true, 50 * ONE_BYTE);
     LeafCollector acc = cc.getLeafCollector(null);
     acc.setScorer(new MockScorer());
     
@@ -112,40 +96,13 @@ public class TestCachingCollector extend
     assertFalse("CachingCollector should not be cached due to low memory limit", cc.isCached());
     
     try {
-      cc.replay(new NoOpCollector(false));
+      cc.replay(new NoOpCollector());
       fail("replay should fail if CachingCollector is not cached");
     } catch (IllegalStateException e) {
       // expected
     }
   }
   
-  public void testIllegalCollectorOnReplay() throws Exception {
-    // tests that the Collector passed to replay() has an out-of-order mode that
-    // is valid with the Collector passed to the ctor
-    
-    // 'src' Collector does not support out-of-order
-    CachingCollector cc = CachingCollector.create(new NoOpCollector(false), true, 100 * ONE_BYTE);
-    LeafCollector acc = cc.getLeafCollector(null);
-    acc.setScorer(new MockScorer());
-    for (int i = 0; i < 10; i++) acc.collect(i);
-    cc.replay(new NoOpCollector(true)); // this call should not fail
-    cc.replay(new NoOpCollector(false)); // this call should not fail
-
-    // 'src' Collector supports out-of-order
-    cc = CachingCollector.create(new NoOpCollector(true), true, 100 * ONE_BYTE);
-    acc = cc.getLeafCollector(null);
-    acc.setScorer(new MockScorer());
-    for (int i = 0; i < 10; i++) acc.collect(i);
-    cc.replay(new NoOpCollector(true)); // this call should not fail
-    try {
-      cc.replay(new NoOpCollector(false)); // this call should fail
-      fail("should have failed if an in-order Collector was given to replay(), " +
-           "while CachingCollector was initialized with out-of-order collection");
-    } catch (IllegalArgumentException e) {
-      // ok
-    }
-  }
-  
   public void testCachedArraysAllocation() throws Exception {
     // tests the cached arrays allocation -- if the 'nextLength' was too high,
     // caching would terminate even if a smaller length would suffice.
@@ -154,7 +111,7 @@ public class TestCachingCollector extend
     int numDocs = random().nextInt(10000) + 150;
     for (boolean cacheScores : new boolean[] { false, true }) {
       int bytesPerDoc = cacheScores ? 8 : 4;
-      CachingCollector cc = CachingCollector.create(new NoOpCollector(false),
+      CachingCollector cc = CachingCollector.create(new NoOpCollector(),
           cacheScores, bytesPerDoc * ONE_BYTE * numDocs);
       LeafCollector acc = cc.getLeafCollector(null);
       acc.setScorer(new MockScorer());
@@ -170,13 +127,13 @@ public class TestCachingCollector extend
   public void testNoWrappedCollector() throws Exception {
     for (boolean cacheScores : new boolean[] { false, true }) {
       // create w/ null wrapped collector, and test that the methods work
-      CachingCollector cc = CachingCollector.create(true, cacheScores, 50 * ONE_BYTE);
+      CachingCollector cc = CachingCollector.create(cacheScores, 50 * ONE_BYTE);
       LeafCollector acc = cc.getLeafCollector(null);
       acc.setScorer(new MockScorer());
       acc.collect(0);
       
       assertTrue(cc.isCached());
-      cc.replay(new NoOpCollector(true));
+      cc.replay(new NoOpCollector());
     }
   }
   

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestConstantScoreQuery.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestConstantScoreQuery.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestConstantScoreQuery.java Thu Jan 15 10:19:28 2015
@@ -67,11 +67,6 @@ public class TestConstantScoreQuery exte
         assertEquals("Score differs from expected", expectedScore, this.scorer.score(), 0);
         count[0]++;
       }
-      
-      @Override
-      public boolean acceptsDocsOutOfOrder() {
-        return true;
-      }
     });
     assertEquals("invalid number of results", 1, count[0]);
   }

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java Thu Jan 15 10:19:28 2015
@@ -497,7 +497,7 @@ public class TestDisjunctionMaxQuery ext
     SpanQuery sq2 = new SpanTermQuery(new Term(FIELD, "clckwork"));
     query.add(sq1);
     query.add(sq2);
-    TopScoreDocCollector collector = TopScoreDocCollector.create(1000, true);
+    TopScoreDocCollector collector = TopScoreDocCollector.create(1000);
     searcher.search(query, collector);
     hits = collector.topDocs().scoreDocs.length;
     for (ScoreDoc scoreDoc : collector.topDocs().scoreDocs){

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestDocBoost.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestDocBoost.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestDocBoost.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestDocBoost.java Thu Jan 15 10:19:28 2015
@@ -74,10 +74,6 @@ public class TestDocBoost extends Lucene
          protected void doSetNextReader(LeafReaderContext context) throws IOException {
            base = context.docBase;
          }
-         @Override
-         public boolean acceptsDocsOutOfOrder() {
-           return true;
-         }
        });
 
     float lastScore = 0.0f;

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestEarlyTermination.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestEarlyTermination.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestEarlyTermination.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestEarlyTermination.java Thu Jan 15 10:19:28 2015
@@ -60,7 +60,6 @@ public class TestEarlyTermination extend
       final IndexSearcher searcher = newSearcher(reader);
       final Collector collector = new SimpleCollector() {
 
-        final boolean outOfOrder = random().nextBoolean();
         boolean collectionTerminated = true;
 
         @Override
@@ -82,11 +81,6 @@ public class TestEarlyTermination extend
           }
         }
 
-        @Override
-        public boolean acceptsDocsOutOfOrder() {
-          return outOfOrder;
-        }
-
       };
 
       searcher.search(new MatchAllDocsQuery(), collector);

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestElevationComparator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestElevationComparator.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestElevationComparator.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestElevationComparator.java Thu Jan 15 10:19:28 2015
@@ -79,7 +79,7 @@ public class TestElevationComparator ext
         new SortField(null, SortField.Type.SCORE, reversed)
       );
 
-    TopDocsCollector<Entry> topCollector = TopFieldCollector.create(sort, 50, false, true, true, true);
+    TopDocsCollector<Entry> topCollector = TopFieldCollector.create(sort, 50, false, true, true);
     searcher.search(newq, null, topCollector);
 
     TopDocs topDocs = topCollector.topDocs(0, 10);

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestMultiTermConstantScore.java Thu Jan 15 10:19:28 2015
@@ -241,10 +241,6 @@ public class TestMultiTermConstantScore
       protected void doSetNextReader(LeafReaderContext context) throws IOException {
         base = context.docBase;
       }
-      @Override
-      public boolean acceptsDocsOutOfOrder() {
-        return true;
-      }
     });
 
     //

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestPositiveScoresOnlyCollector.java Thu Jan 15 10:19:28 2015
@@ -86,7 +86,7 @@ public class TestPositiveScoresOnlyColle
     IndexSearcher searcher = newSearcher(ir);
     Weight fake = new TermQuery(new Term("fake", "weight")).createWeight(searcher);
     Scorer s = new SimpleScorer(fake);
-    TopDocsCollector<ScoreDoc> tdc = TopScoreDocCollector.create(scores.length, true);
+    TopDocsCollector<ScoreDoc> tdc = TopScoreDocCollector.create(scores.length);
     Collector c = new PositiveScoresOnlyCollector(tdc);
     LeafCollector ac = c.getLeafCollector(ir.leaves().get(0));
     ac.setScorer(s);

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestScoreCachingWrappingScorer.java Thu Jan 15 10:19:28 2015
@@ -90,10 +90,6 @@ public class TestScoreCachingWrappingSco
     @Override public void setScorer(Scorer scorer) {
       this.scorer = new ScoreCachingWrappingScorer(scorer);
     }
-    
-    @Override public boolean acceptsDocsOutOfOrder() {
-      return true;
-    }
 
   }
 

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestScorerPerf.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestScorerPerf.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestScorerPerf.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestScorerPerf.java Thu Jan 15 10:19:28 2015
@@ -115,10 +115,6 @@ public class TestScorerPerf extends Luce
     protected void doSetNextReader(LeafReaderContext context) throws IOException {
       docBase = context.docBase;
     }
-    @Override
-    public boolean acceptsDocsOutOfOrder() {
-      return true;
-    }
   }
 
 

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestSimilarity.java Thu Jan 15 10:19:28 2015
@@ -111,10 +111,6 @@ public class TestSimilarity extends Luce
          protected void doSetNextReader(LeafReaderContext context) throws IOException {
            base = context.docBase;
          }
-         @Override
-        public boolean acceptsDocsOutOfOrder() {
-           return true;
-         }
        });
 
     PhraseQuery pq = new PhraseQuery();
@@ -133,10 +129,6 @@ public class TestSimilarity extends Luce
            //System.out.println("Doc=" + doc + " score=" + score);
            assertEquals(1.0f, scorer.score(), 0);
          }
-         @Override
-         public boolean acceptsDocsOutOfOrder() {
-           return true;
-         }
        });
 
     pq.setSlop(2);
@@ -152,10 +144,6 @@ public class TestSimilarity extends Luce
         //System.out.println("Doc=" + doc + " score=" + score);
         assertEquals(2.0f, scorer.score(), 0);
       }
-      @Override
-      public boolean acceptsDocsOutOfOrder() {
-        return true;
-      }
     });
 
     reader.close();

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java Thu Jan 15 10:19:28 2015
@@ -191,11 +191,6 @@ public class TestSloppyPhraseQuery exten
       totalHits++;
       max = Math.max(max, scorer.freq());
     }
-
-    @Override
-    public boolean acceptsDocsOutOfOrder() {
-      return false;
-    }
   }
   
   /** checks that no scores or freqs are infinite */
@@ -213,11 +208,6 @@ public class TestSloppyPhraseQuery exten
         assertFalse(Float.isInfinite(scorer.freq()));
         assertFalse(Float.isInfinite(scorer.score()));
       }
-      
-      @Override
-      public boolean acceptsDocsOutOfOrder() {
-        return false;
-      }
     });
     QueryUtils.check(random(), pq, searcher);
   }

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java Thu Jan 15 10:19:28 2015
@@ -123,8 +123,7 @@ public class TestSubScorerFreqs extends
   @Test
   public void testTermQuery() throws Exception {
     TermQuery q = new TermQuery(new Term("f", "d"));
-    CountingCollector c = new CountingCollector(TopScoreDocCollector.create(10,
-        true));
+    CountingCollector c = new CountingCollector(TopScoreDocCollector.create(10));
     s.search(q, null, c);
     final int maxDocs = s.getIndexReader().maxDoc();
     assertEquals(maxDocs, c.docCounts.size());
@@ -164,7 +163,7 @@ public class TestSubScorerFreqs extends
     
     for (final Set<String> occur : occurList) {
       CountingCollector c = new CountingCollector(TopScoreDocCollector.create(
-          10, true), occur);
+          10), occur);
       s.search(query, null, c);
       final int maxDocs = s.getIndexReader().maxDoc();
       assertEquals(maxDocs, c.docCounts.size());
@@ -196,8 +195,7 @@ public class TestSubScorerFreqs extends
     PhraseQuery q = new PhraseQuery();
     q.add(new Term("f", "b"));
     q.add(new Term("f", "c"));
-    CountingCollector c = new CountingCollector(TopScoreDocCollector.create(10,
-        true));
+    CountingCollector c = new CountingCollector(TopScoreDocCollector.create(10));
     s.search(q, null, c);
     final int maxDocs = s.getIndexReader().maxDoc();
     assertEquals(maxDocs, c.docCounts.size());

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java Thu Jan 15 10:19:28 2015
@@ -78,7 +78,7 @@ public class TestTermScorer extends Luce
     Weight weight = indexSearcher.createNormalizedWeight(termQuery);
     assertTrue(indexSearcher.getTopReaderContext() instanceof LeafReaderContext);
     LeafReaderContext context = (LeafReaderContext)indexSearcher.getTopReaderContext();
-    BulkScorer ts = weight.bulkScorer(context, true, context.reader().getLiveDocs());
+    BulkScorer ts = weight.bulkScorer(context, context.reader().getLiveDocs());
     // we have 2 documents with the term all in them, one document for all the
     // other values
     final List<TestHit> docs = new ArrayList<>();
@@ -107,11 +107,6 @@ public class TestTermScorer extends Luce
       protected void doSetNextReader(LeafReaderContext context) throws IOException {
         base = context.docBase;
       }
-      
-      @Override
-      public boolean acceptsDocsOutOfOrder() {
-        return true;
-      }
     });
     assertTrue("docs Size: " + docs.size() + " is not: " + 2, docs.size() == 2);
     TestHit doc0 = docs.get(0);

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java Thu Jan 15 10:19:28 2015
@@ -356,11 +356,6 @@ public class TestTimeLimitingCollector e
     protected void doSetNextReader(LeafReaderContext context) throws IOException {
       docBase = context.docBase;
     }
-    
-    @Override
-    public boolean acceptsDocsOutOfOrder() {
-      return false;
-    }
 
   }
 

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java Thu Jan 15 10:19:28 2015
@@ -68,11 +68,6 @@ public class TestTopDocsCollector extend
         public void setScorer(Scorer scorer) {
           // Don't do anything. Assign scores in random
         }
-        
-        @Override
-        public boolean acceptsDocsOutOfOrder() {
-          return true;
-        }
       };
     }
 

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java Thu Jan 15 10:19:28 2015
@@ -198,7 +198,7 @@ public class TestTopDocsMerge extends Lu
       final TopDocs topHits;
       if (sort == null) {
         if (useFrom) {
-          TopScoreDocCollector c = TopScoreDocCollector.create(numHits, random().nextBoolean());
+          TopScoreDocCollector c = TopScoreDocCollector.create(numHits);
           searcher.search(query, c);
           from = TestUtil.nextInt(random(), 0, numHits - 1);
           size = numHits - from;
@@ -217,7 +217,7 @@ public class TestTopDocsMerge extends Lu
           topHits = searcher.search(query, numHits);
         }
       } else {
-        final TopFieldCollector c = TopFieldCollector.create(sort, numHits, true, true, true, random().nextBoolean());
+        final TopFieldCollector c = TopFieldCollector.create(sort, numHits, true, true, true);
         searcher.search(query, c);
         if (useFrom) {
           from = TestUtil.nextInt(random(), 0, numHits - 1);
@@ -261,7 +261,7 @@ public class TestTopDocsMerge extends Lu
         if (sort == null) {
           subHits = subSearcher.search(w, numHits);
         } else {
-          final TopFieldCollector c = TopFieldCollector.create(sort, numHits, true, true, true, random().nextBoolean());
+          final TopFieldCollector c = TopFieldCollector.create(sort, numHits, true, true, true);
           subSearcher.search(w, c);
           subHits = c.topDocs(0, numHits);
         }

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTopFieldCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTopFieldCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTopFieldCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/core/src/test/org/apache/lucene/search/TestTopFieldCollector.java Thu Jan 15 10:19:28 2015
@@ -63,7 +63,7 @@ public class TestTopFieldCollector exten
     for(int i = 0; i < sort.length; i++) {
       Query q = new MatchAllDocsQuery();
       TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, false,
-          false, false, true);
+          false, false);
       
       is.search(q, tdc);
       
@@ -82,7 +82,7 @@ public class TestTopFieldCollector exten
     for(int i = 0; i < sort.length; i++) {
       Query q = new MatchAllDocsQuery();
       TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, true, false,
-          false, true);
+          false);
       
       is.search(q, tdc);
       
@@ -102,7 +102,7 @@ public class TestTopFieldCollector exten
     for(int i = 0; i < sort.length; i++) {
       Query q = new MatchAllDocsQuery();
       TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, true, true,
-          false, true);
+          false);
       
       is.search(q, tdc);
       
@@ -123,7 +123,7 @@ public class TestTopFieldCollector exten
     for(int i = 0; i < sort.length; i++) {
       Query q = new MatchAllDocsQuery();
       TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, true, true,
-          false, true);
+          false);
 
       is.search(q, tdc);
       
@@ -143,7 +143,7 @@ public class TestTopFieldCollector exten
     for(int i = 0; i < sort.length; i++) {
       Query q = new MatchAllDocsQuery();
       TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, true, true,
-          true, true);
+          true);
       
       is.search(q, tdc);
       
@@ -155,110 +155,13 @@ public class TestTopFieldCollector exten
       assertTrue(!Float.isNaN(td.getMaxScore()));
     }
   }
-  
-  public void testOutOfOrderDocsScoringSort() throws Exception {
-
-    // Two Sort criteria to instantiate the multi/single comparators.
-    Sort[] sort = new Sort[] {new Sort(SortField.FIELD_DOC), new Sort() };
-    boolean[][] tfcOptions = new boolean[][] {
-        new boolean[] { false, false, false },
-        new boolean[] { false, false, true },
-        new boolean[] { false, true, false },
-        new boolean[] { false, true, true },
-        new boolean[] { true, false, false },
-        new boolean[] { true, false, true },
-        new boolean[] { true, true, false },
-        new boolean[] { true, true, true },
-    };
-    String[] actualTFCClasses = new String[] {
-        "OutOfOrderNonScoringCollector", 
-        "OutOfOrderScoringMaxScoreCollector", 
-        "OutOfOrderScoringNoMaxScoreCollector", 
-        "OutOfOrderScoringMaxScoreCollector", 
-        "OutOfOrderNonScoringCollector", 
-        "OutOfOrderScoringMaxScoreCollector", 
-        "OutOfOrderScoringNoMaxScoreCollector", 
-        "OutOfOrderScoringMaxScoreCollector" 
-    };
-    
-    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);
-    for(int i = 0; i < sort.length; i++) {
-      for(int j = 0; j < tfcOptions.length; j++) {
-        TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10,
-            tfcOptions[j][0], tfcOptions[j][1], tfcOptions[j][2], false);
-
-        assertTrue(tdc.getClass().getName().endsWith("$"+actualTFCClasses[j]));
-        
-        is.search(bq, tdc);
-        
-        TopDocs td = tdc.topDocs();
-        ScoreDoc[] sd = td.scoreDocs;
-        assertEquals(10, sd.length);
-      }
-    }
-  }
-  
-  // OutOfOrderMulti*Collector
-  public void testOutOfOrderDocsScoringSortMulti() throws Exception {
-
-    // Two Sort criteria to instantiate the multi/single comparators.
-    Sort[] sort = new Sort[] {new Sort(SortField.FIELD_DOC, SortField.FIELD_SCORE) };
-    boolean[][] tfcOptions = new boolean[][] {
-        new boolean[] { false, false, false },
-        new boolean[] { false, false, true },
-        new boolean[] { false, true, false },
-        new boolean[] { false, true, true },
-        new boolean[] { true, false, false },
-        new boolean[] { true, false, true },
-        new boolean[] { true, true, false },
-        new boolean[] { true, true, true },
-    };
-    String[] actualTFCClasses = new String[] {
-        "OutOfOrderNonScoringCollector", 
-        "OutOfOrderScoringMaxScoreCollector", 
-        "OutOfOrderScoringNoMaxScoreCollector", 
-        "OutOfOrderScoringMaxScoreCollector", 
-        "OutOfOrderNonScoringCollector", 
-        "OutOfOrderScoringMaxScoreCollector", 
-        "OutOfOrderScoringNoMaxScoreCollector", 
-        "OutOfOrderScoringMaxScoreCollector" 
-    };
-    
-    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);
-    for(int i = 0; i < sort.length; i++) {
-      for(int j = 0; j < tfcOptions.length; j++) {
-        TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10,
-            tfcOptions[j][0], tfcOptions[j][1], tfcOptions[j][2], false);
 
-        assertTrue(tdc.getClass().getName().endsWith("$"+actualTFCClasses[j]));
-        
-        is.search(bq, tdc);
-        
-        TopDocs td = tdc.topDocs();
-        ScoreDoc[] sd = td.scoreDocs;
-        assertEquals(10, sd.length);
-      }
-    }
-  }
-  
   public void testSortWithScoreAndMaxScoreTrackingNoResults() throws Exception {
     
     // Two Sort criteria to instantiate the multi/single comparators.
     Sort[] sort = new Sort[] {new Sort(SortField.FIELD_DOC), new Sort() };
     for(int i = 0; i < sort.length; i++) {
-      TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, true, true, true, true);
+      TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, true, true, true);
       TopDocs td = tdc.topDocs();
       assertEquals(0, td.totalHits);
       assertTrue(Float.isNaN(td.getMaxScore()));

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/java/org/apache/lucene/facet/DrillSideways.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/java/org/apache/lucene/facet/DrillSideways.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/java/org/apache/lucene/facet/DrillSideways.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/java/org/apache/lucene/facet/DrillSideways.java Thu Jan 15 10:19:28 2015
@@ -199,8 +199,7 @@ public class DrillSideways {
                                                                       after,
                                                                       true,
                                                                       doDocScores,
-                                                                      doMaxScore,
-                                                                      true);
+                                                                      doMaxScore);
       DrillSidewaysResult r = search(query, hitCollector);
       return new DrillSidewaysResult(r.facets, hitCollector.topDocs());
     } else {
@@ -227,7 +226,7 @@ public class DrillSideways {
       limit = 1; // the collector does not alow numHits = 0
     }
     topN = Math.min(topN, limit);
-    TopScoreDocCollector hitCollector = TopScoreDocCollector.create(topN, after, true);
+    TopScoreDocCollector hitCollector = TopScoreDocCollector.create(topN, after);
     DrillSidewaysResult r = search(query, hitCollector);
     return new DrillSidewaysResult(r.facets, hitCollector.topDocs());
   }
@@ -236,12 +235,7 @@ public class DrillSideways {
    *  (e.g., {@code ToParentBlockJoinCollector}) expects all
    *  sub-scorers to be positioned on the document being
    *  collected.  This will cause some performance loss;
-   *  default is false.  Note that if you return true from
-   *  this method (in a subclass) be sure your collector
-   *  also returns false from {@link
-   *  LeafCollector#acceptsDocsOutOfOrder}: this will trick
-   *  {@code BooleanQuery} into also scoring all subDocs at
-   *  once. */
+   *  default is false. */
   protected boolean scoreSubDocsAtOnce() {
     return false;
   }

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java Thu Jan 15 10:19:28 2015
@@ -111,20 +111,13 @@ class DrillSidewaysQuery extends Query {
       }
 
       @Override
-      public boolean scoresDocsOutOfOrder() {
-        // TODO: would be nice if AssertingIndexSearcher
-        // confirmed this for us
-        return false;
-      }
-
-      @Override
       public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
         // We can only run as a top scorer:
         throw new UnsupportedOperationException();
       }
 
       @Override
-      public BulkScorer bulkScorer(LeafReaderContext context, boolean scoreDocsInOrder, Bits acceptDocs) throws IOException {
+      public BulkScorer bulkScorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
 
         // TODO: it could be better if we take acceptDocs
         // into account instead of baseScorer?

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/java/org/apache/lucene/facet/FacetsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/java/org/apache/lucene/facet/FacetsCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/java/org/apache/lucene/facet/FacetsCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/java/org/apache/lucene/facet/FacetsCollector.java Thu Jan 15 10:19:28 2015
@@ -155,14 +155,6 @@ public class FacetsCollector extends Sim
   }
 
   @Override
-  public final boolean acceptsDocsOutOfOrder() {
-    // If we are keeping scores then we require in-order
-    // because we append each score to the float[] and
-    // expect that they correlate in order to the hits:
-    return keepScores == false;
-  }
-
-  @Override
   public final void collect(int doc) throws IOException {
     docs.addDoc(doc);
     if (keepScores) {
@@ -284,14 +276,9 @@ public class FacetsCollector extends Sim
                                                (FieldDoc) after,
                                                fillFields,
                                                doDocScores,
-                                               doMaxScore,
-                                               false);
+                                               doMaxScore);
     } else {
-      // TODO: can we pass the right boolean for
-      // in-order instead of hardwired to false...?  we'd
-      // need access to the protected IS.search methods
-      // taking Weight... could use reflection...
-      hitsCollector = TopScoreDocCollector.create(n, after, false);
+      hitsCollector = TopScoreDocCollector.create(n, after);
     }
     searcher.search(q, MultiCollector.wrap(hitsCollector, fc));
     return hitsCollector.topDocs();

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java Thu Jan 15 10:19:28 2015
@@ -54,9 +54,4 @@ class AssertingSubDocsAtOnceCollector ex
       }
     }
   }
-
-  @Override
-  public boolean acceptsDocsOutOfOrder() {
-    return false;
-  }
 }

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java Thu Jan 15 10:19:28 2015
@@ -682,11 +682,6 @@ public class TestDrillSideways extends F
                              protected void doSetNextReader(LeafReaderContext context) throws IOException {
                                lastDocID = -1;
                              }
-
-                             @Override
-                             public boolean acceptsDocsOutOfOrder() {
-                               return false;
-                             }
                            });
 
       // Also separately verify that DS respects the

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupHeadsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupHeadsCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupHeadsCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupHeadsCollector.java Thu Jan 15 10:19:28 2015
@@ -126,11 +126,6 @@ public abstract class AbstractAllGroupHe
     groupHead.updateDocHead(doc);
   }
 
-  @Override
-  public boolean acceptsDocsOutOfOrder() {
-    return false;
-  }
-
   /**
    * Contains the result of group head retrieval.
    * To prevent new object creations of this class for every collect.

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupsCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupsCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupsCollector.java Thu Jan 15 10:19:28 2015
@@ -62,8 +62,4 @@ public abstract class AbstractAllGroupsC
   @Override
   public void setScorer(Scorer scorer) throws IOException {}
 
-  @Override
-  public boolean acceptsDocsOutOfOrder() {
-    return true;
-  }
 }
\ No newline at end of file

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractDistinctValuesCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractDistinctValuesCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractDistinctValuesCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractDistinctValuesCollector.java Thu Jan 15 10:19:28 2015
@@ -37,11 +37,6 @@ public abstract class AbstractDistinctVa
    */
   public abstract List<GC> getGroups();
 
-  @Override
-  public boolean acceptsDocsOutOfOrder() {
-    return true;
-  }
-
   /**
    * Returned by {@link AbstractDistinctValuesCollector#getGroups()},
    * representing the value and set of distinct values for the group.

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractFirstPassGroupingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractFirstPassGroupingCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractFirstPassGroupingCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractFirstPassGroupingCollector.java Thu Jan 15 10:19:28 2015
@@ -321,11 +321,6 @@ abstract public class AbstractFirstPassG
   }
 
   @Override
-  public boolean acceptsDocsOutOfOrder() {
-    return false;
-  }
-
-  @Override
   protected void doSetNextReader(LeafReaderContext readerContext) throws IOException {
     docBase = readerContext.docBase;
     for (int i=0; i<comparators.length; i++) {

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractGroupFacetCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractGroupFacetCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractGroupFacetCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractGroupFacetCollector.java Thu Jan 15 10:19:28 2015
@@ -109,11 +109,6 @@ public abstract class AbstractGroupFacet
   public void setScorer(Scorer scorer) throws IOException {
   }
 
-  @Override
-  public boolean acceptsDocsOutOfOrder() {
-    return true;
-  }
-
   /**
    * The grouped facet result. Containing grouped facet entries, total count and total missing count.
    */

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractSecondPassGroupingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractSecondPassGroupingCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractSecondPassGroupingCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractSecondPassGroupingCollector.java Thu Jan 15 10:19:28 2015
@@ -69,10 +69,10 @@ public abstract class AbstractSecondPass
       final TopDocsCollector<?> collector;
       if (withinGroupSort == null) {
         // Sort by score
-        collector = TopScoreDocCollector.create(maxDocsPerGroup, true);
+        collector = TopScoreDocCollector.create(maxDocsPerGroup);
       } else {
         // Sort by fields
-        collector = TopFieldCollector.create(withinGroupSort, maxDocsPerGroup, fillSortFields, getScores, getMaxScores, true);
+        collector = TopFieldCollector.create(withinGroupSort, maxDocsPerGroup, fillSortFields, getScores, getMaxScores);
       }
       groupMap.put(group.groupValue,
           new SearchGroupDocs<>(group.groupValue,
@@ -114,11 +114,6 @@ public abstract class AbstractSecondPass
     }
   }
 
-  @Override
-  public boolean acceptsDocsOutOfOrder() {
-    return false;
-  }
-
   public TopGroups<GROUP_VALUE_TYPE> getTopGroups(int withinGroupOffset) {
     @SuppressWarnings({"unchecked","rawtypes"})
     final GroupDocs<GROUP_VALUE_TYPE>[] groupDocsResult = (GroupDocs<GROUP_VALUE_TYPE>[]) new GroupDocs[groups.size()];

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java Thu Jan 15 10:19:28 2015
@@ -345,10 +345,10 @@ public class BlockGroupingCollector exte
         if (!needsScores) {
           throw new IllegalArgumentException("cannot sort by relevance within group: needsScores=false");
         }
-        collector = TopScoreDocCollector.create(maxDocsPerGroup, true);
+        collector = TopScoreDocCollector.create(maxDocsPerGroup);
       } else {
         // Sort by fields
-        collector = TopFieldCollector.create(withinGroupSort, maxDocsPerGroup, fillSortFields, needsScores, needsScores, true);
+        collector = TopFieldCollector.create(withinGroupSort, maxDocsPerGroup, fillSortFields, needsScores, needsScores);
       }
 
       LeafCollector leafCollector = collector.getLeafCollector(og.readerContext);
@@ -513,11 +513,6 @@ public class BlockGroupingCollector exte
   }
 
   @Override
-  public boolean acceptsDocsOutOfOrder() {
-    return false;
-  }
-
-  @Override
   protected void doSetNextReader(LeafReaderContext readerContext) throws IOException {
     if (subDocUpto != 0) {
       processGroup();

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java Thu Jan 15 10:19:28 2015
@@ -876,7 +876,7 @@ public class TestGrouping extends Lucene
             }
           } else {
             // Collect only into cache, then replay multiple times:
-            c = cCache = CachingCollector.create(false, true, maxCacheMB);
+            c = cCache = CachingCollector.create(true, maxCacheMB);
           }
         } else {
           cCache = null;

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java Thu Jan 15 10:19:28 2015
@@ -120,11 +120,6 @@ public class HighlighterPhraseTest exten
         private int baseDoc;
 
         @Override
-        public boolean acceptsDocsOutOfOrder() {
-          return true;
-        }
-
-        @Override
         public void collect(int i) {
           bitset.set(this.baseDoc + i);
         }

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/TermsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/TermsCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/TermsCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/TermsCollector.java Thu Jan 15 10:19:28 2015
@@ -45,11 +45,6 @@ abstract class TermsCollector extends Si
     return collectorTerms;
   }
 
-  @Override
-  public boolean acceptsDocsOutOfOrder() {
-    return true;
-  }
-
   /**
    * Chooses the right {@link TermsCollector} implementation.
    *

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java Thu Jan 15 10:19:28 2015
@@ -133,21 +133,25 @@ class TermsIncludingScoreQuery extends Q
 
       @Override
       public Explanation explain(LeafReaderContext context, int doc) throws IOException {
-        SVInnerScorer scorer = (SVInnerScorer) bulkScorer(context, false, null);
-        if (scorer != null) {
-          return scorer.explain(doc);
+        Terms terms = context.reader().terms(field);
+        if (terms != null) {
+          segmentTermsEnum = terms.iterator(segmentTermsEnum);
+          BytesRef spare = new BytesRef();
+          DocsEnum docsEnum = null;
+          for (int i = 0; i < TermsIncludingScoreQuery.this.terms.size(); i++) {
+            if (segmentTermsEnum.seekExact(TermsIncludingScoreQuery.this.terms.get(ords[i], spare))) {
+              docsEnum = segmentTermsEnum.docs(null, docsEnum, DocsEnum.FLAG_NONE);
+              if (docsEnum.advance(doc) == doc) {
+                final float score = TermsIncludingScoreQuery.this.scores[ords[i]];
+                return new ComplexExplanation(true, score, "Score based on join value " + segmentTermsEnum.term().utf8ToString());
+              }
+            }
+          }
         }
         return new ComplexExplanation(false, 0.0f, "Not a match");
       }
 
       @Override
-      public boolean scoresDocsOutOfOrder() {
-        // We have optimized impls below if we are allowed
-        // to score out-of-order:
-        return true;
-      }
-
-      @Override
       public Query getQuery() {
         return TermsIncludingScoreQuery.this;
       }
@@ -179,143 +183,9 @@ class TermsIncludingScoreQuery extends Q
           return new SVInOrderScorer(this, acceptDocs, segmentTermsEnum, context.reader().maxDoc(), cost);
         }
       }
-
-      @Override
-      public BulkScorer bulkScorer(LeafReaderContext context, boolean scoreDocsInOrder, Bits acceptDocs) throws IOException {
-
-        if (scoreDocsInOrder) {
-          return super.bulkScorer(context, scoreDocsInOrder, acceptDocs);
-        } else {
-          Terms terms = context.reader().terms(field);
-          if (terms == null) {
-            return null;
-          }
-          // what is the runtime...seems ok?
-          final long cost = context.reader().maxDoc() * terms.size();
-
-          segmentTermsEnum = terms.iterator(segmentTermsEnum);
-          // Optimized impls that take advantage of docs
-          // being allowed to be out of order:
-          if (multipleValuesPerDocument) {
-            return new MVInnerScorer(this, acceptDocs, segmentTermsEnum, context.reader().maxDoc(), cost);
-          } else {
-            return new SVInnerScorer(this, acceptDocs, segmentTermsEnum, cost);
-          }
-        }
-      }
     };
   }
 
-  // This impl assumes that the 'join' values are used uniquely per doc per field. Used for one to many relations.
-  class SVInnerScorer extends BulkScorer {
-
-    final BytesRef spare = new BytesRef();
-    final Bits acceptDocs;
-    final TermsEnum termsEnum;
-    final long cost;
-
-    int upto;
-    DocsEnum docsEnum;
-    DocsEnum reuse;
-    int scoreUpto;
-    int doc;
-
-    SVInnerScorer(Weight weight, Bits acceptDocs, TermsEnum termsEnum, long cost) {
-      this.acceptDocs = acceptDocs;
-      this.termsEnum = termsEnum;
-      this.cost = cost;
-      this.doc = -1;
-    }
-
-    @Override
-    public boolean score(LeafCollector collector, int max) throws IOException {
-      FakeScorer fakeScorer = new FakeScorer();
-      collector.setScorer(fakeScorer);
-      if (doc == -1) {
-        doc = nextDocOutOfOrder();
-      }
-      while(doc < max) {
-        fakeScorer.doc = doc;
-        fakeScorer.score = scores[ords[scoreUpto]];
-        collector.collect(doc);
-        doc = nextDocOutOfOrder();
-      }
-
-      return doc != DocsEnum.NO_MORE_DOCS;
-    }
-
-    int nextDocOutOfOrder() throws IOException {
-      while (true) {
-        if (docsEnum != null) {
-          int docId = docsEnumNextDoc();
-          if (docId == DocIdSetIterator.NO_MORE_DOCS) {
-            docsEnum = null;
-          } else {
-            return doc = docId;
-          }
-        }
-
-        if (upto == terms.size()) {
-          return doc = DocIdSetIterator.NO_MORE_DOCS;
-        }
-
-        scoreUpto = upto;
-        if (termsEnum.seekExact(terms.get(ords[upto++], spare))) {
-          docsEnum = reuse = termsEnum.docs(acceptDocs, reuse, DocsEnum.FLAG_NONE);
-        }
-      }
-    }
-
-    protected int docsEnumNextDoc() throws IOException {
-      return docsEnum.nextDoc();
-    }
-
-    private Explanation explain(int target) throws IOException {
-      int docId;
-      do {
-        docId = nextDocOutOfOrder();
-        if (docId < target) {
-          int tempDocId = docsEnum.advance(target);
-          if (tempDocId == target) {
-            docId = tempDocId;
-            break;
-          }
-        } else if (docId == target) {
-          break;
-        }
-        docsEnum = null; // goto the next ord.
-      } while (docId != DocIdSetIterator.NO_MORE_DOCS);
-
-      return new ComplexExplanation(true, scores[ords[scoreUpto]], "Score based on join value " + termsEnum.term().utf8ToString());
-    }
-  }
-
-  // This impl that tracks whether a docid has already been emitted. This check makes sure that docs aren't emitted
-  // twice for different join values. This means that the first encountered join value determines the score of a document
-  // even if other join values yield a higher score.
-  class MVInnerScorer extends SVInnerScorer {
-
-    final FixedBitSet alreadyEmittedDocs;
-
-    MVInnerScorer(Weight weight, Bits acceptDocs, TermsEnum termsEnum, int maxDoc, long cost) {
-      super(weight, acceptDocs, termsEnum, cost);
-      alreadyEmittedDocs = new FixedBitSet(maxDoc);
-    }
-
-    @Override
-    protected int docsEnumNextDoc() throws IOException {
-      while (true) {
-        int docId = docsEnum.nextDoc();
-        if (docId == DocIdSetIterator.NO_MORE_DOCS) {
-          return docId;
-        }
-        if (!alreadyEmittedDocs.getAndSet(docId)) {
-          return docId;//if it wasn't previously set, return it
-        }
-      }
-    }
-  }
-
   class SVInOrderScorer extends Scorer {
 
     final DocIdSetIterator matchingDocsIterator;

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/TermsWithScoreCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/TermsWithScoreCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/TermsWithScoreCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/TermsWithScoreCollector.java Thu Jan 15 10:19:28 2015
@@ -57,11 +57,6 @@ abstract class TermsWithScoreCollector e
     this.scorer = scorer;
   }
 
-  @Override
-  public boolean acceptsDocsOutOfOrder() {
-    return true;
-  }
-
   /**
    * Chooses the right {@link TermsWithScoreCollector} implementation.
    *

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java Thu Jan 15 10:19:28 2015
@@ -154,11 +154,6 @@ public class ToChildBlockJoinQuery exten
       throw new UnsupportedOperationException(getClass().getName() +
                                               " cannot explain match on parent document");
     }
-
-    @Override
-    public boolean scoresDocsOutOfOrder() {
-      return false;
-    }
   }
 
   static class ToChildBlockJoinScorer extends Scorer {

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinCollector.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinCollector.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinCollector.java Thu Jan 15 10:19:28 2015
@@ -38,6 +38,9 @@ import java.util.*;
  *  IndexWriter#updateDocuments}).  Ie, the join is computed
  *  at index time.
  *
+ *  <p>This collector MUST be used with {@link ToParentBlockJoinIndexSearcher},
+ *  in order to work correctly.
+ *
  *  <p>The parent Sort must only use
  *  fields from the parent documents; sorting by field in
  *  the child documents is not supported.</p>
@@ -296,11 +299,6 @@ public class ToParentBlockJoinCollector
           }
         }
       }
-      
-      @Override
-      public boolean acceptsDocsOutOfOrder() {
-        return false;
-      }
     };
   }
 
@@ -408,10 +406,10 @@ public class ToParentBlockJoinCollector
         if (!trackScores) {
           throw new IllegalArgumentException("cannot sort by relevance within group: trackScores=false");
         }
-        collector = TopScoreDocCollector.create(numDocsInGroup, true);
+        collector = TopScoreDocCollector.create(numDocsInGroup);
       } else {
         // Sort by fields
-        collector = TopFieldCollector.create(withinGroupSort, numDocsInGroup, fillSortFields, trackScores, trackMaxScore, true);
+        collector = TopFieldCollector.create(withinGroupSort, numDocsInGroup, fillSortFields, trackScores, trackMaxScore);
       }
 
       LeafCollector leafCollector = collector.getLeafCollector(og.readerContext);

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java Thu Jan 15 10:19:28 2015
@@ -194,11 +194,6 @@ public class ToParentBlockJoinQuery exte
       }
       return new ComplexExplanation(false, 0.0f, "Not a match");
     }
-
-    @Override
-    public boolean scoresDocsOutOfOrder() {
-      return false;
-    }
   }
 
   static class BlockJoinScorer extends Scorer {

Modified: lucene/dev/branches/lucene_solr_5_0/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java?rev=1652034&r1=1652033&r2=1652034&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java Thu Jan 15 10:19:28 2015
@@ -1314,6 +1314,7 @@ public class TestBlockJoin extends Lucen
     IndexReader r = w.getReader();
     w.close();
 
+    IndexSearcher searcher = new ToParentBlockJoinIndexSearcher(r);
     Query childQuery = new TermQuery(new Term("childText", "text"));
     BitDocIdSetFilter parentsFilter = new BitDocIdSetCachingWrapperFilter(new QueryWrapperFilter(new TermQuery(new Term("isParent", "yes"))));
     ToParentBlockJoinQuery childJoinQuery = new ToParentBlockJoinQuery(childQuery, parentsFilter, ScoreMode.Avg);
@@ -1323,7 +1324,7 @@ public class TestBlockJoin extends Lucen
 
     ToParentBlockJoinCollector c = new ToParentBlockJoinCollector(new Sort(new SortField("parentID", SortField.Type.STRING)),
                                                                   10, true, true);
-    newSearcher(r).search(parentQuery, c);
+    searcher.search(parentQuery, c);
     TopGroups<Integer> groups = c.getTopGroups(childJoinQuery, null, 0, 10, 0, false);
 
     // Two parents:
@@ -1381,6 +1382,8 @@ public class TestBlockJoin extends Lucen
     IndexReader r = w.getReader();
     w.close();
 
+    IndexSearcher searcher = new ToParentBlockJoinIndexSearcher(r);
+    
     // never matches:
     Query childQuery = new TermQuery(new Term("childText", "bogus"));
     BitDocIdSetFilter parentsFilter = new BitDocIdSetCachingWrapperFilter(new QueryWrapperFilter(new TermQuery(new Term("isParent", "yes"))));
@@ -1391,7 +1394,7 @@ public class TestBlockJoin extends Lucen
 
     ToParentBlockJoinCollector c = new ToParentBlockJoinCollector(new Sort(new SortField("parentID", SortField.Type.STRING)),
                                                                   10, true, true);
-    newSearcher(r).search(parentQuery, c);
+    searcher.search(parentQuery, c);
     TopGroups<Integer> groups = c.getTopGroups(childJoinQuery, null, 0, 10, 0, false);
 
     // Two parents: