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 2015/02/05 13:34:30 UTC

svn commit: r1657554 [2/2] - in /lucene/dev/trunk: lucene/ lucene/core/src/java/org/apache/lucene/codecs/lucene50/ lucene/core/src/java/org/apache/lucene/search/ lucene/core/src/java/org/apache/lucene/search/payloads/ lucene/core/src/java/org/apache/lu...

Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestSloppyPhraseQuery.java Thu Feb  5 12:34:28 2015
@@ -191,6 +191,11 @@ public class TestSloppyPhraseQuery exten
       totalHits++;
       max = Math.max(max, scorer.freq());
     }
+    
+    @Override
+    public boolean needsScores() {
+      return true;
+    }
   }
   
   /** checks that no scores or freqs are infinite */
@@ -208,6 +213,11 @@ public class TestSloppyPhraseQuery exten
         assertFalse(Float.isInfinite(scorer.freq()));
         assertFalse(Float.isInfinite(scorer.score()));
       }
+      
+      @Override
+      public boolean needsScores() {
+        return true;
+      }
     });
     QueryUtils.check(random(), pq, searcher);
   }

Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java Thu Feb  5 12:34: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, context.reader().getLiveDocs());
+    BulkScorer ts = weight.bulkScorer(context, context.reader().getLiveDocs(), true);
     // we have 2 documents with the term all in them, one document for all the
     // other values
     final List<TestHit> docs = new ArrayList<>();
@@ -107,6 +107,11 @@ public class TestTermScorer extends Luce
       protected void doSetNextReader(LeafReaderContext context) throws IOException {
         base = context.docBase;
       }
+      
+      @Override
+      public boolean needsScores() {
+        return true;
+      }
     });
     assertTrue("docs Size: " + docs.size() + " is not: " + 2, docs.size() == 2);
     TestHit doc0 = docs.get(0);
@@ -135,7 +140,7 @@ public class TestTermScorer extends Luce
     Weight weight = indexSearcher.createNormalizedWeight(termQuery);
     assertTrue(indexSearcher.getTopReaderContext() instanceof LeafReaderContext);
     LeafReaderContext context = (LeafReaderContext) indexSearcher.getTopReaderContext();
-    Scorer ts = weight.scorer(context, context.reader().getLiveDocs());
+    Scorer ts = weight.scorer(context, context.reader().getLiveDocs(), true);
     assertTrue("next did not return a doc",
         ts.nextDoc() != DocIdSetIterator.NO_MORE_DOCS);
     assertTrue("score is not correct", ts.score() == 1.6931472f);
@@ -154,7 +159,7 @@ public class TestTermScorer extends Luce
     Weight weight = indexSearcher.createNormalizedWeight(termQuery);
     assertTrue(indexSearcher.getTopReaderContext() instanceof LeafReaderContext);
     LeafReaderContext context = (LeafReaderContext) indexSearcher.getTopReaderContext();
-    Scorer ts = weight.scorer(context, context.reader().getLiveDocs());
+    Scorer ts = weight.scorer(context, context.reader().getLiveDocs(), true);
     assertTrue("Didn't skip", ts.advance(3) != DocIdSetIterator.NO_MORE_DOCS);
     // The next doc should be doc 5
     assertTrue("doc should be number 5", ts.docID() == 5);

Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java Thu Feb  5 12:34:28 2015
@@ -356,6 +356,11 @@ public class TestTimeLimitingCollector e
     protected void doSetNextReader(LeafReaderContext context) throws IOException {
       docBase = context.docBase;
     }
+    
+    @Override
+    public boolean needsScores() {
+      return false;
+    }
 
   }
 

Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java Thu Feb  5 12:34:28 2015
@@ -70,6 +70,11 @@ public class TestTopDocsCollector extend
         }
       };
     }
+    
+    @Override
+    public boolean needsScores() {
+      return false;
+    }
 
   }
 

Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java Thu Feb  5 12:34:28 2015
@@ -183,7 +183,7 @@ public class TestNearSpansOrdered extend
     Weight w = searcher.createNormalizedWeight(q);
     IndexReaderContext topReaderContext = searcher.getTopReaderContext();
     LeafReaderContext leave = topReaderContext.leaves().get(0);
-    Scorer s = w.scorer(leave, leave.reader().getLiveDocs());
+    Scorer s = w.scorer(leave, leave.reader().getLiveDocs(), true);
     assertEquals(1, s.advance(1));
   }
 

Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/search/spans/TestSpans.java Thu Feb  5 12:34:28 2015
@@ -429,7 +429,7 @@ public class TestSpans extends LuceneTes
                                 slop,
                                 ordered);
   
-        spanScorer = searcher.createNormalizedWeight(snq).scorer(ctx, ctx.reader().getLiveDocs());
+        spanScorer = searcher.createNormalizedWeight(snq).scorer(ctx, ctx.reader().getLiveDocs(), true);
       } finally {
         searcher.setSimilarity(oldSim);
       }

Modified: lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java (original)
+++ lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java Thu Feb  5 12:34:28 2015
@@ -111,17 +111,17 @@ class DrillSidewaysQuery extends Query {
       }
 
       @Override
-      public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
+      public Scorer scorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
         // We can only run as a top scorer:
         throw new UnsupportedOperationException();
       }
 
       @Override
-      public BulkScorer bulkScorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
+      public BulkScorer bulkScorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
 
         // TODO: it could be better if we take acceptDocs
         // into account instead of baseScorer?
-        Scorer baseScorer = baseWeight.scorer(context, acceptDocs);
+        Scorer baseScorer = baseWeight.scorer(context, acceptDocs, needsScores);
 
         DrillSidewaysScorer.DocsAndCost[] dims = new DrillSidewaysScorer.DocsAndCost[drillDowns.length];
         int nullCount = 0;
@@ -166,7 +166,7 @@ class DrillSidewaysQuery extends Query {
               dims[dim].disi = disi;
             }
           } else {
-            DocIdSetIterator disi = ((Weight) drillDowns[dim]).scorer(context, null);
+            DocIdSetIterator disi = ((Weight) drillDowns[dim]).scorer(context, null, needsScores);
             if (disi == null) {
               nullCount++;
               continue;

Modified: lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/FacetsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/FacetsCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/FacetsCollector.java (original)
+++ lucene/dev/trunk/lucene/facet/src/java/org/apache/lucene/facet/FacetsCollector.java Thu Feb  5 12:34:28 2015
@@ -169,6 +169,11 @@ public class FacetsCollector extends Sim
   }
 
   @Override
+  public boolean needsScores() {
+    return true;
+  }
+
+  @Override
   public final void setScorer(Scorer scorer) throws IOException {
     this.scorer = scorer;
   }

Modified: lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java (original)
+++ lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java Thu Feb  5 12:34:28 2015
@@ -54,4 +54,9 @@ class AssertingSubDocsAtOnceCollector ex
       }
     }
   }
+
+  @Override
+  public boolean needsScores() {
+    return false;
+  }
 }

Modified: lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java (original)
+++ lucene/dev/trunk/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java Thu Feb  5 12:34:28 2015
@@ -682,6 +682,11 @@ public class TestDrillSideways extends F
                              protected void doSetNextReader(LeafReaderContext context) throws IOException {
                                lastDocID = -1;
                              }
+
+                            @Override
+                            public boolean needsScores() {
+                              return false;
+                            }
                            });
 
       // Also separately verify that DS respects the

Modified: lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java (original)
+++ lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java Thu Feb  5 12:34:28 2015
@@ -528,4 +528,9 @@ public class BlockGroupingCollector exte
       leafComparators[i] = comparators[i].getLeafComparator(readerContext);
     }
   }
+
+  @Override
+  public boolean needsScores() {
+    return needsScores;
+  }
 }

Modified: lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionAllGroupHeadsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionAllGroupHeadsCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionAllGroupHeadsCollector.java (original)
+++ lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionAllGroupHeadsCollector.java Thu Feb  5 12:34:28 2015
@@ -152,4 +152,9 @@ public class FunctionAllGroupHeadsCollec
       this.doc = doc + readerContext.docBase;
     }
   }
+
+  @Override
+  public boolean needsScores() {
+    return true; // TODO, maybe we don't: e.g. return sortWithinGroup.needsScores()
+  }
 }

Modified: lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionAllGroupsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionAllGroupsCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionAllGroupsCollector.java (original)
+++ lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionAllGroupsCollector.java Thu Feb  5 12:34:28 2015
@@ -80,4 +80,9 @@ public class FunctionAllGroupsCollector
     filler = values.getValueFiller();
     mval = filler.getValue();
   }
+  
+  @Override
+  public boolean needsScores() {
+    return true; // TODO, maybe we don't?
+  }
 }

Modified: lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionDistinctValuesCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionDistinctValuesCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionDistinctValuesCollector.java (original)
+++ lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionDistinctValuesCollector.java Thu Feb  5 12:34:28 2015
@@ -89,4 +89,9 @@ public class FunctionDistinctValuesColle
     }
 
   }
+  
+  @Override
+  public boolean needsScores() {
+    return true; // TODO, maybe we don't?
+  }
 }

Modified: lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionFirstPassGroupingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionFirstPassGroupingCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionFirstPassGroupingCollector.java (original)
+++ lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionFirstPassGroupingCollector.java Thu Feb  5 12:34:28 2015
@@ -84,4 +84,8 @@ public class FunctionFirstPassGroupingCo
     mval = filler.getValue();
   }
 
+  @Override
+  public boolean needsScores() {
+    return true; // TODO, maybe we don't?
+  }
 }

Modified: lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionSecondPassGroupingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionSecondPassGroupingCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionSecondPassGroupingCollector.java (original)
+++ lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionSecondPassGroupingCollector.java Thu Feb  5 12:34:28 2015
@@ -78,4 +78,8 @@ public class FunctionSecondPassGroupingC
     mval = filler.getValue();
   }
 
+  @Override
+  public boolean needsScores() {
+    return true; // TODO, maybe we don't?
+  }
 }

Modified: lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupHeadsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupHeadsCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupHeadsCollector.java (original)
+++ lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupHeadsCollector.java Thu Feb  5 12:34:28 2015
@@ -623,4 +623,9 @@ public abstract class TermAllGroupHeadsC
     }
 
   }
+  
+  @Override
+  public boolean needsScores() {
+    return true; // TODO, maybe we don't?
+  }
 }

Modified: lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupsCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupsCollector.java (original)
+++ lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupsCollector.java Thu Feb  5 12:34:28 2015
@@ -118,4 +118,9 @@ public class TermAllGroupsCollector exte
       }
     }
   }
+  
+  @Override
+  public boolean needsScores() {
+    return true; // TODO, maybe we don't?
+  }
 }

Modified: lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermDistinctValuesCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermDistinctValuesCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermDistinctValuesCollector.java (original)
+++ lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermDistinctValuesCollector.java Thu Feb  5 12:34:28 2015
@@ -141,4 +141,8 @@ public class TermDistinctValuesCollector
     }
   }
 
+  @Override
+  public boolean needsScores() {
+    return true; // TODO, maybe we don't?
+  }
 }

Modified: lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermFirstPassGroupingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermFirstPassGroupingCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermFirstPassGroupingCollector.java (original)
+++ lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermFirstPassGroupingCollector.java Thu Feb  5 12:34:28 2015
@@ -91,4 +91,9 @@ public class TermFirstPassGroupingCollec
     super.doSetNextReader(readerContext);
     index = DocValues.getSorted(readerContext.reader(), groupField);
   }
+  
+  @Override
+  public boolean needsScores() {
+    return true; // TODO, maybe we don't?
+  }
 }

Modified: lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermGroupFacetCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermGroupFacetCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermGroupFacetCollector.java (original)
+++ lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermGroupFacetCollector.java Thu Feb  5 12:34:28 2015
@@ -75,6 +75,11 @@ public abstract class TermGroupFacetColl
     groupedFacetHits = new ArrayList<>(initialSize);
     segmentGroupedFacetHits = new SentinelIntSet(initialSize, Integer.MIN_VALUE);
   }
+  
+  @Override
+  public boolean needsScores() {
+    return true; // TODO, maybe we don't?
+  }
 
   // Implementation for single valued facet fields.
   static class SV extends TermGroupFacetCollector {

Modified: lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermSecondPassGroupingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermSecondPassGroupingCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermSecondPassGroupingCollector.java (original)
+++ lucene/dev/trunk/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermSecondPassGroupingCollector.java Thu Feb  5 12:34:28 2015
@@ -76,4 +76,9 @@ public class TermSecondPassGroupingColle
     }
     return null;
   }
+  
+  @Override
+  public boolean needsScores() {
+    return true; // TODO, maybe we don't?
+  }
 }

Modified: lucene/dev/trunk/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java (original)
+++ lucene/dev/trunk/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java Thu Feb  5 12:34:28 2015
@@ -133,6 +133,11 @@ public class HighlighterPhraseTest exten
         public void setScorer(org.apache.lucene.search.Scorer scorer) {
           // Do Nothing
         }
+
+        @Override
+        public boolean needsScores() {
+          return false;
+        }
       });
       assertEquals(1, bitset.cardinality());
       final int maxDoc = indexReader.maxDoc();

Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsCollector.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsCollector.java Thu Feb  5 12:34:28 2015
@@ -103,4 +103,8 @@ abstract class TermsCollector extends Si
     }
   }
 
+  @Override
+  public boolean needsScores() {
+    return false;
+  }
 }

Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsIncludingScoreQuery.java Thu Feb  5 12:34:28 2015
@@ -167,7 +167,7 @@ class TermsIncludingScoreQuery extends Q
       }
 
       @Override
-      public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
+      public Scorer scorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
         Terms terms = context.reader().terms(field);
         if (terms == null) {
           return null;

Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsWithScoreCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsWithScoreCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsWithScoreCollector.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/TermsWithScoreCollector.java Thu Feb  5 12:34:28 2015
@@ -247,4 +247,8 @@ abstract class TermsWithScoreCollector e
     }
   }
 
+  @Override
+  public boolean needsScores() {
+    return true;
+  }
 }

Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java Thu Feb  5 12:34:28 2015
@@ -128,9 +128,9 @@ public class ToChildBlockJoinQuery exten
     // NOTE: acceptDocs applies (and is checked) only in the
     // child document space
     @Override
-    public Scorer scorer(LeafReaderContext readerContext, Bits acceptDocs) throws IOException {
+    public Scorer scorer(LeafReaderContext readerContext, Bits acceptDocs, boolean needsScores) throws IOException {
 
-      final Scorer parentScorer = parentWeight.scorer(readerContext, null);
+      final Scorer parentScorer = parentWeight.scorer(readerContext, null, needsScores);
 
       if (parentScorer == null) {
         // No matches

Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinCollector.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinCollector.java Thu Feb  5 12:34:28 2015
@@ -482,4 +482,9 @@ public class ToParentBlockJoinCollector
   public float getMaxScore() {
     return maxScore;
   }
+
+  @Override
+  public boolean needsScores() {
+    return trackScores || trackMaxScore || sort.needsScores();
+  }
 }

Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinIndexSearcher.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinIndexSearcher.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinIndexSearcher.java Thu Feb  5 12:34:28 2015
@@ -55,7 +55,7 @@ public class ToParentBlockJoinIndexSearc
       // we force the use of Scorer (not BulkScorer) to make sure
       // that the scorer passed to LeafCollector.setScorer supports
       // Scorer.getChildren
-      Scorer scorer = weight.scorer(ctx, ctx.reader().getLiveDocs());
+      Scorer scorer = weight.scorer(ctx, ctx.reader().getLiveDocs(), true);
       if (scorer != null) {
         final LeafCollector leafCollector = collector.getLeafCollector(ctx);
         leafCollector.setScorer(scorer);

Modified: lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java (original)
+++ lucene/dev/trunk/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java Thu Feb  5 12:34:28 2015
@@ -160,9 +160,9 @@ public class ToParentBlockJoinQuery exte
     // NOTE: acceptDocs applies (and is checked) only in the
     // parent document space
     @Override
-    public Scorer scorer(LeafReaderContext readerContext, Bits acceptDocs) throws IOException {
+    public Scorer scorer(LeafReaderContext readerContext, Bits acceptDocs, boolean needsScores) throws IOException {
 
-      final Scorer childScorer = childWeight.scorer(readerContext, readerContext.reader().getLiveDocs());
+      final Scorer childScorer = childWeight.scorer(readerContext, readerContext.reader().getLiveDocs(), needsScores);
       if (childScorer == null) {
         // No matches
         return null;
@@ -188,7 +188,7 @@ public class ToParentBlockJoinQuery exte
 
     @Override
     public Explanation explain(LeafReaderContext context, int doc) throws IOException {
-      BlockJoinScorer scorer = (BlockJoinScorer) scorer(context, context.reader().getLiveDocs());
+      BlockJoinScorer scorer = (BlockJoinScorer) scorer(context, context.reader().getLiveDocs(), true);
       if (scorer != null && scorer.advance(doc) == doc) {
         return scorer.explain(context.docBase);
       }

Modified: lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java (original)
+++ lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestBlockJoin.java Thu Feb  5 12:34:28 2015
@@ -1148,7 +1148,7 @@ public class TestBlockJoin extends Lucen
 
     ToParentBlockJoinQuery q = new ToParentBlockJoinQuery(tq, parentFilter, ScoreMode.Avg);
     Weight weight = s.createNormalizedWeight(q);
-    DocIdSetIterator disi = weight.scorer(s.getIndexReader().leaves().get(0), null);
+    DocIdSetIterator disi = weight.scorer(s.getIndexReader().leaves().get(0), null, true);
     assertEquals(1, disi.advance(1));
     r.close();
     dir.close();
@@ -1182,7 +1182,7 @@ public class TestBlockJoin extends Lucen
 
     ToParentBlockJoinQuery q = new ToParentBlockJoinQuery(tq, parentFilter, ScoreMode.Avg);
     Weight weight = s.createNormalizedWeight(q);
-    DocIdSetIterator disi = weight.scorer(s.getIndexReader().leaves().get(0), null);
+    DocIdSetIterator disi = weight.scorer(s.getIndexReader().leaves().get(0), null, true);
     assertEquals(2, disi.advance(0));
     r.close();
     dir.close();

Modified: lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestJoinUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestJoinUtil.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestJoinUtil.java (original)
+++ lucene/dev/trunk/lucene/join/src/test/org/apache/lucene/search/join/TestJoinUtil.java Thu Feb  5 12:34:28 2015
@@ -310,6 +310,11 @@ public class TestJoinUtil extends Lucene
             assertFalse("optimized bulkScorer was not used for join query embedded in boolean query!", sawFive);
           }
         }
+        
+        @Override
+        public boolean needsScores() {
+          return false;
+        }
       });
 
     indexSearcher.getIndexReader().close();
@@ -495,6 +500,11 @@ public class TestJoinUtil extends Lucene
               }
             };
           }
+          
+          @Override
+          public boolean needsScores() {
+            return topScoreDocCollector.needsScores();
+          }
         });
         // Asserting bit set...
         if (VERBOSE) {
@@ -673,6 +683,11 @@ public class TestJoinUtil extends Lucene
           public void setScorer(Scorer scorer) {
             this.scorer = scorer;
           }
+
+          @Override
+          public boolean needsScores() {
+            return true;
+          }
         });
       } else {
         fromSearcher.search(new TermQuery(new Term("value", uniqueRandomValue)), new SimpleCollector() {
@@ -705,6 +720,11 @@ public class TestJoinUtil extends Lucene
           public void setScorer(Scorer scorer) {
             this.scorer = scorer;
           }
+          
+          @Override
+          public boolean needsScores() {
+            return true;
+          }
         });
       }
 
@@ -757,6 +777,11 @@ public class TestJoinUtil extends Lucene
 
           @Override
           public void setScorer(Scorer scorer) {}
+          
+          @Override
+          public boolean needsScores() {
+            return false;
+          }
         });
       }
       queryVals.put(uniqueRandomValue, docToJoinScore);

Modified: lucene/dev/trunk/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java (original)
+++ lucene/dev/trunk/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java Thu Feb  5 12:34:28 2015
@@ -568,7 +568,11 @@ public class MemoryIndex {
         public void setScorer(Scorer scorer) {
           this.scorer = scorer;
         }
-
+        
+        @Override
+        public boolean needsScores() {
+          return true;
+        }
       });
       float score = scores[0];
       return score;

Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/CustomScoreQuery.java Thu Feb  5 12:34:28 2015
@@ -234,14 +234,14 @@ public class CustomScoreQuery extends Qu
     }
 
     @Override
-    public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
-      Scorer subQueryScorer = subQueryWeight.scorer(context, acceptDocs);
+    public Scorer scorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
+      Scorer subQueryScorer = subQueryWeight.scorer(context, acceptDocs, needsScores);
       if (subQueryScorer == null) {
         return null;
       }
       Scorer[] valSrcScorers = new Scorer[valSrcWeights.length];
       for(int i = 0; i < valSrcScorers.length; i++) {
-         valSrcScorers[i] = valSrcWeights[i].scorer(context, acceptDocs);
+         valSrcScorers[i] = valSrcWeights[i].scorer(context, acceptDocs, needsScores);
       }
       return new CustomScorer(CustomScoreQuery.this.getCustomScoreProvider(context), this, queryWeight, subQueryScorer, valSrcScorers);
     }

Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/BoostedQuery.java Thu Feb  5 12:34:28 2015
@@ -97,8 +97,8 @@ public class BoostedQuery extends Query
     }
 
     @Override
-    public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
-      Scorer subQueryScorer = qWeight.scorer(context, acceptDocs);
+    public Scorer scorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
+      Scorer subQueryScorer = qWeight.scorer(context, acceptDocs, needsScores);
       if (subQueryScorer == null) {
         return null;
       }

Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionQuery.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionQuery.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/FunctionQuery.java Thu Feb  5 12:34:28 2015
@@ -89,13 +89,13 @@ public class FunctionQuery extends Query
     }
 
     @Override
-    public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
+    public Scorer scorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
       return new AllScorer(context, acceptDocs, this, queryWeight);
     }
 
     @Override
     public Explanation explain(LeafReaderContext context, int doc) throws IOException {
-      return ((AllScorer)scorer(context, context.reader().getLiveDocs())).explain(doc);
+      return ((AllScorer)scorer(context, context.reader().getLiveDocs(), true)).explain(doc);
     }
   }
 

Modified: lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/QueryValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/QueryValueSource.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/QueryValueSource.java (original)
+++ lucene/dev/trunk/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/QueryValueSource.java Thu Feb  5 12:34:28 2015
@@ -123,7 +123,7 @@ class QueryDocValues extends FloatDocVal
     try {
       if (doc < lastDocRequested) {
         if (noMatches) return defVal;
-        scorer = weight.scorer(readerContext, acceptDocs);
+        scorer = weight.scorer(readerContext, acceptDocs, true);
         if (scorer==null) {
           noMatches = true;
           return defVal;
@@ -154,7 +154,7 @@ class QueryDocValues extends FloatDocVal
     try {
       if (doc < lastDocRequested) {
         if (noMatches) return false;
-        scorer = weight.scorer(readerContext, acceptDocs);
+        scorer = weight.scorer(readerContext, acceptDocs, true);
         scorerDoc = -1;
         if (scorer==null) {
           noMatches = true;
@@ -212,7 +212,7 @@ class QueryDocValues extends FloatDocVal
             mval.exists = false;
             return;
           }
-          scorer = weight.scorer(readerContext, acceptDocs);
+          scorer = weight.scorer(readerContext, acceptDocs, true);
           scorerDoc = -1;
           if (scorer==null) {
             noMatches = true;

Modified: lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/surround/query/BooleanQueryTst.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/surround/query/BooleanQueryTst.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/surround/query/BooleanQueryTst.java (original)
+++ lucene/dev/trunk/lucene/queryparser/src/test/org/apache/lucene/queryparser/surround/query/BooleanQueryTst.java Thu Feb  5 12:34:28 2015
@@ -95,6 +95,11 @@ public class BooleanQueryTst {
       }
       totalMatched++;
     }
+    
+    @Override
+    public boolean needsScores() {
+      return true;
+    }
 
     void checkNrHits() {
       Assert.assertEquals(queryText + ": nr of hits", expectedDocNrs.length, totalMatched);

Modified: lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/TermAutomatonQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/TermAutomatonQuery.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/TermAutomatonQuery.java (original)
+++ lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/search/TermAutomatonQuery.java Thu Feb  5 12:34:28 2015
@@ -385,7 +385,7 @@ public class TermAutomatonQuery extends
     }
 
     @Override
-    public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
+    public Scorer scorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
 
       // Initialize the enums; null for a given slot means that term didn't appear in this reader
       EnumAndScorer[] enums = new EnumAndScorer[idToTerm.size()];

Modified: lucene/dev/trunk/lucene/sandbox/src/test/org/apache/lucene/search/TestTermAutomatonQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/sandbox/src/test/org/apache/lucene/search/TestTermAutomatonQuery.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/sandbox/src/test/org/apache/lucene/search/TestTermAutomatonQuery.java (original)
+++ lucene/dev/trunk/lucene/sandbox/src/test/org/apache/lucene/search/TestTermAutomatonQuery.java Thu Feb  5 12:34:28 2015
@@ -302,6 +302,11 @@ public class TestTermAutomatonQuery exte
         public void collect(int docID) throws IOException {
           assertEquals(3, scorer.freq());
         }
+        
+        @Override
+        public boolean needsScores() {
+          return true;
+        }
       });
 
     w.close();

Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/BasePostingsFormatTestCase.java Thu Feb  5 12:34:28 2015
@@ -1457,6 +1457,29 @@ public abstract class BasePostingsFormat
     dir.close();
   }
   
+  public void testDidntWantFreqsButAskedAnyway() throws Exception {
+    Directory dir = newDirectory();
+    IndexWriterConfig iwc = newIndexWriterConfig(new MockAnalyzer(random()));
+    iwc.setCodec(getCodec());
+    RandomIndexWriter iw = new RandomIndexWriter(random(), dir, iwc);
+    Document doc = new Document();
+    doc.add(newTextField("field", "value", Field.Store.NO));
+    iw.addDocument(doc);
+    iw.addDocument(doc);
+    DirectoryReader ir = iw.getReader();
+    LeafReader ar = getOnlySegmentReader(ir);
+    TermsEnum termsEnum = ar.terms("field").iterator(null);
+    assertTrue(termsEnum.seekExact(new BytesRef("value")));
+    DocsEnum docsEnum = termsEnum.docs(null, null, DocsEnum.FLAG_NONE);
+    assertEquals(0, docsEnum.nextDoc());
+    assertEquals(1, docsEnum.freq());
+    assertEquals(1, docsEnum.nextDoc());
+    assertEquals(1, docsEnum.freq());
+    ir.close();
+    iw.close();
+    dir.close();
+  }
+  
   // tests that ghost fields still work
   // TODO: can this be improved?
   public void testGhosts() throws Exception {

Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/AssertingWeight.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/AssertingWeight.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/AssertingWeight.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/AssertingWeight.java Thu Feb  5 12:34:28 2015
@@ -58,15 +58,15 @@ class AssertingWeight extends Weight {
   }
 
   @Override
-  public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
-    final Scorer inScorer = in.scorer(context, acceptDocs);
+  public Scorer scorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
+    final Scorer inScorer = in.scorer(context, acceptDocs, needsScores);
     assert inScorer == null || inScorer.docID() == -1;
     return AssertingScorer.wrap(new Random(random.nextLong()), inScorer);
   }
 
   @Override
-  public BulkScorer bulkScorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
-    BulkScorer inScorer = in.bulkScorer(context, acceptDocs);
+  public BulkScorer bulkScorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
+    BulkScorer inScorer = in.bulkScorer(context, acceptDocs, needsScores);
     if (inScorer == null) {
       return null;
     }

Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/CheckHits.java Thu Feb  5 12:34:28 2015
@@ -139,6 +139,11 @@ public class CheckHits {
     protected void doSetNextReader(LeafReaderContext context) throws IOException {
       base = context.docBase;
     }
+    
+    @Override
+    public boolean needsScores() {
+      return false;
+    }
   }
 
   /**
@@ -507,6 +512,11 @@ public class CheckHits {
     protected void doSetNextReader(LeafReaderContext context) throws IOException {
       base = context.docBase;
     }
+    
+    @Override
+    public boolean needsScores() {
+      return true;
+    }
   }
 
 }

Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java Thu Feb  5 12:34:28 2015
@@ -264,7 +264,7 @@ public class QueryUtils {
               if (scorer == null) {
                 Weight w = s.createNormalizedWeight(q);
                 LeafReaderContext context = readerContextArray.get(leafPtr);
-                scorer = w.scorer(context, context.reader().getLiveDocs());
+                scorer = w.scorer(context, context.reader().getLiveDocs(), true);
               }
               
               int op = order[(opidx[0]++) % order.length];
@@ -302,6 +302,11 @@ public class QueryUtils {
           }
 
           @Override
+          public boolean needsScores() {
+            return true;
+          }
+
+          @Override
           protected void doSetNextReader(LeafReaderContext context) throws IOException {
             // confirm that skipping beyond the last doc, on the
             // previous reader, hits NO_MORE_DOCS
@@ -311,7 +316,7 @@ public class QueryUtils {
               indexSearcher.setSimilarity(s.getSimilarity());
               Weight w = indexSearcher.createNormalizedWeight(q);
               LeafReaderContext ctx = (LeafReaderContext)indexSearcher.getTopReaderContext();
-              Scorer scorer = w.scorer(ctx, ctx.reader().getLiveDocs());
+              Scorer scorer = w.scorer(ctx, ctx.reader().getLiveDocs(), true);
               if (scorer != null) {
                 boolean more = scorer.advance(lastDoc[0] + 1) != DocIdSetIterator.NO_MORE_DOCS;
                 Assert.assertFalse("query's last doc was "+ lastDoc[0] +" but skipTo("+(lastDoc[0]+1)+") got to "+scorer.docID(),more);
@@ -333,7 +338,7 @@ public class QueryUtils {
           indexSearcher.setSimilarity(s.getSimilarity());
           Weight w = indexSearcher.createNormalizedWeight(q);
           LeafReaderContext ctx = previousReader.getContext();
-          Scorer scorer = w.scorer(ctx, ctx.reader().getLiveDocs());
+          Scorer scorer = w.scorer(ctx, ctx.reader().getLiveDocs(), true);
           if (scorer != null) {
             boolean more = scorer.advance(lastDoc[0] + 1) != DocIdSetIterator.NO_MORE_DOCS;
             Assert.assertFalse("query's last doc was "+ lastDoc[0] +" but skipTo("+(lastDoc[0]+1)+") got to "+scorer.docID(),more);
@@ -364,7 +369,7 @@ public class QueryUtils {
           long startMS = System.currentTimeMillis();
           for (int i=lastDoc[0]+1; i<=doc; i++) {
             Weight w = s.createNormalizedWeight(q);
-            Scorer scorer = w.scorer(context.get(leafPtr), liveDocs);
+            Scorer scorer = w.scorer(context.get(leafPtr), liveDocs, true);
             Assert.assertTrue("query collected "+doc+" but skipTo("+i+") says no more docs!",scorer.advance(i) != DocIdSetIterator.NO_MORE_DOCS);
             Assert.assertEquals("query collected "+doc+" but skipTo("+i+") got to "+scorer.docID(),doc,scorer.docID());
             float skipToScore = scorer.score();
@@ -382,6 +387,11 @@ public class QueryUtils {
           throw new RuntimeException(e);
         }
       }
+      
+      @Override
+      public boolean needsScores() {
+        return true;
+      }
 
       @Override
       protected void doSetNextReader(LeafReaderContext context) throws IOException {
@@ -392,7 +402,7 @@ public class QueryUtils {
           IndexSearcher indexSearcher = LuceneTestCase.newSearcher(previousReader);
           indexSearcher.setSimilarity(s.getSimilarity());
           Weight w = indexSearcher.createNormalizedWeight(q);
-          Scorer scorer = w.scorer((LeafReaderContext)indexSearcher.getTopReaderContext(), previousReader.getLiveDocs());
+          Scorer scorer = w.scorer((LeafReaderContext)indexSearcher.getTopReaderContext(), previousReader.getLiveDocs(), true);
           if (scorer != null) {
             boolean more = scorer.advance(lastDoc[0] + 1) != DocIdSetIterator.NO_MORE_DOCS;
             Assert.assertFalse("query's last doc was "+ lastDoc[0] +" but skipTo("+(lastDoc[0]+1)+") got to "+scorer.docID(),more);
@@ -413,7 +423,7 @@ public class QueryUtils {
       IndexSearcher indexSearcher = LuceneTestCase.newSearcher(previousReader);
       indexSearcher.setSimilarity(s.getSimilarity());
       Weight w = indexSearcher.createNormalizedWeight(q);
-      Scorer scorer = w.scorer((LeafReaderContext)indexSearcher.getTopReaderContext(), previousReader.getLiveDocs());
+      Scorer scorer = w.scorer((LeafReaderContext)indexSearcher.getTopReaderContext(), previousReader.getLiveDocs(), true);
       if (scorer != null) {
         boolean more = scorer.advance(lastDoc[0] + 1) != DocIdSetIterator.NO_MORE_DOCS;
         Assert.assertFalse("query's last doc was "+ lastDoc[0] +" but skipTo("+(lastDoc[0]+1)+") got to "+scorer.docID(),more);
@@ -425,8 +435,8 @@ public class QueryUtils {
   public static void checkBulkScorerSkipTo(Random r, Query query, IndexSearcher searcher) throws IOException {
     Weight weight = searcher.createNormalizedWeight(query);
     for (LeafReaderContext context : searcher.getIndexReader().leaves()) {
-      final Scorer scorer = weight.scorer(context, context.reader().getLiveDocs());
-      final BulkScorer bulkScorer = weight.bulkScorer(context, context.reader().getLiveDocs());
+      final Scorer scorer = weight.scorer(context, context.reader().getLiveDocs(), true);
+      final BulkScorer bulkScorer = weight.bulkScorer(context, context.reader().getLiveDocs(), true);
       if (scorer == null && bulkScorer == null) {
         continue;
       }

Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/search/SearchEquivalenceTestBase.java Thu Feb  5 12:34:28 2015
@@ -178,8 +178,8 @@ public abstract class SearchEquivalenceT
     }
     
     // not efficient, but simple!
-    TopDocs td1 = s1.search(q1, filter, reader.maxDoc());
-    TopDocs td2 = s2.search(q2, filter, reader.maxDoc());
+    TopDocs td1 = s1.search(q1, filter, reader.maxDoc(), random().nextBoolean() ? Sort.INDEXORDER : Sort.RELEVANCE);
+    TopDocs td2 = s2.search(q2, filter, reader.maxDoc(), random().nextBoolean() ? Sort.INDEXORDER : Sort.RELEVANCE);
     assertTrue(td1.totalHits <= td2.totalHits);
     
     // fill the superset into a bitset

Modified: lucene/dev/trunk/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/BasicAccumulator.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/BasicAccumulator.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/BasicAccumulator.java (original)
+++ lucene/dev/trunk/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/BasicAccumulator.java Thu Feb  5 12:34:28 2015
@@ -167,4 +167,9 @@ public class BasicAccumulator extends Va
   public long getNumQueries() {
     return 0l;
   }
+  
+  @Override
+  public boolean needsScores() {
+    return true; // TODO: is this true?
+  }
 }

Modified: lucene/dev/trunk/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/facet/FieldFacetAccumulator.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/facet/FieldFacetAccumulator.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/facet/FieldFacetAccumulator.java (original)
+++ lucene/dev/trunk/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/facet/FieldFacetAccumulator.java Thu Feb  5 12:34:28 2015
@@ -146,4 +146,8 @@ public class FieldFacetAccumulator exten
   @Override
   public NamedList<?> export() { return null; }
 
+  @Override
+  public boolean needsScores() {
+    return true; // TODO: is this true?
+  }
 }

Modified: lucene/dev/trunk/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/facet/QueryFacetAccumulator.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/facet/QueryFacetAccumulator.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/facet/QueryFacetAccumulator.java (original)
+++ lucene/dev/trunk/solr/contrib/analytics/src/java/org/apache/solr/analytics/accumulator/facet/QueryFacetAccumulator.java Thu Feb  5 12:34:28 2015
@@ -66,4 +66,8 @@ public class QueryFacetAccumulator exten
     return null;
   }
 
+  @Override
+  public boolean needsScores() {
+    return true; // TODO: is this true?
+  }
 }

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=1657554&r1=1657553&r2=1657554&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 Feb  5 12:34:28 2015
@@ -510,6 +510,11 @@ public class ExpandComponent extends Sea
       }
     }
 
+    @Override
+    public boolean needsScores() {
+      return true; // TODO: is this always true?
+    }
+
     public LeafCollector getLeafCollector(LeafReaderContext context) throws IOException {
       final int docBase = context.docBase;
 
@@ -581,6 +586,11 @@ public class ExpandComponent extends Sea
       this.field = field;
       this.collapsedSet = collapsedSet;
     }
+    
+    @Override
+    public boolean needsScores() {
+      return true; // TODO: is this always true?
+    }
 
     public LeafCollector getLeafCollector(LeafReaderContext context) throws IOException {
       final int docBase = context.docBase;

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/LatLonType.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/LatLonType.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/LatLonType.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/schema/LatLonType.java Thu Feb  5 12:34:28 2015
@@ -343,13 +343,13 @@ class SpatialDistanceQuery extends Exten
     }
 
     @Override
-    public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
+    public Scorer scorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
       return new SpatialScorer(context, acceptDocs, this, queryWeight);
     }
 
     @Override
     public Explanation explain(LeafReaderContext context, int doc) throws IOException {
-      return ((SpatialScorer)scorer(context, context.reader().getLiveDocs())).explain(doc);
+      return ((SpatialScorer)scorer(context, context.reader().getLiveDocs(), true)).explain(doc);
     }
   }
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/DelegatingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/DelegatingCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/DelegatingCollector.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/DelegatingCollector.java Thu Feb  5 12:34:28 2015
@@ -64,6 +64,11 @@ public class DelegatingCollector extends
   }
 
   @Override
+  public boolean needsScores() {
+    return delegate.needsScores();
+  }
+
+  @Override
   public void collect(int doc) throws IOException {
     leafDelegate.collect(doc);
   }

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/DocSetCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/DocSetCollector.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/DocSetCollector.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/DocSetCollector.java Thu Feb  5 12:34:28 2015
@@ -84,6 +84,11 @@ public class DocSetCollector extends Sim
   }
 
   @Override
+  public boolean needsScores() {
+    return false;
+  }
+
+  @Override
   protected void doSetNextReader(LeafReaderContext context) throws IOException {
     this.base = context.docBase;
   }

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExportQParserPlugin.java Thu Feb  5 12:34:28 2015
@@ -174,5 +174,9 @@ public class ExportQParserPlugin extends
       return new TopDocs(totalHits, scoreDocs, 0.0f);
     }
 
+    @Override
+    public boolean needsScores() {
+      return true; // TODO: is this the case?
+    }
   }
 }
\ No newline at end of file

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/JoinQParserPlugin.java Thu Feb  5 12:34:28 2015
@@ -304,7 +304,7 @@ class JoinQuery extends Query {
 
 
     @Override
-    public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
+    public Scorer scorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
       if (filter == null) {
         boolean debug = rb != null && rb.isDebug();
         long start = debug ? System.currentTimeMillis() : 0;
@@ -573,7 +573,7 @@ class JoinQuery extends Query {
 
     @Override
     public Explanation explain(LeafReaderContext context, int doc) throws IOException {
-      Scorer scorer = scorer(context, context.reader().getLiveDocs());
+      Scorer scorer = scorer(context, context.reader().getLiveDocs(), true);
       boolean exists = scorer.advance(doc) == doc;
 
       ComplexExplanation result = new ComplexExplanation();

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ReRankQParserPlugin.java Thu Feb  5 12:34:28 2015
@@ -196,8 +196,8 @@ public class ReRankQParserPlugin extends
       return mainWeight.getValueForNormalization();
     }
 
-    public Scorer scorer(LeafReaderContext context, Bits bits) throws IOException {
-      return mainWeight.scorer(context, bits);
+    public Scorer scorer(LeafReaderContext context, Bits bits, boolean needsScores) throws IOException {
+      return mainWeight.scorer(context, bits, needsScores);
     }
 
     public Query getQuery() {
@@ -266,6 +266,11 @@ public class ReRankQParserPlugin extends
       return mainCollector.getLeafCollector(context);
     }
 
+    @Override
+    public boolean needsScores() {
+      return true;
+    }
+
     public TopDocs topDocs(int start, int howMany) {
 
       try {

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrConstantScoreQuery.java Thu Feb  5 12:34:28 2015
@@ -119,7 +119,7 @@ public class SolrConstantScoreQuery exte
     }
 
     @Override
-    public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
+    public Scorer scorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
       return new ConstantScorer(context, this, queryWeight, acceptDocs);
     }
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java Thu Feb  5 12:34:28 2015
@@ -1641,6 +1641,11 @@ public class SolrIndexSearcher extends I
           public void collect(int doc) {
             numHits[0]++;
           }
+          
+          @Override
+          public boolean needsScores() {
+            return false;
+          }
         };
       } else {
         collector = new SimpleCollector() {
@@ -1655,6 +1660,11 @@ public class SolrIndexSearcher extends I
             float score = scorer.score();
             if (score > topscore[0]) topscore[0]=score;            
           }
+          
+          @Override
+          public boolean needsScores() {
+            return true;
+          }
         };
       }
       
@@ -1739,6 +1749,11 @@ public class SolrIndexSearcher extends I
             float score = scorer.score();
             if (score > topscore[0]) topscore[0] = score;
           }
+          
+          @Override
+          public boolean needsScores() {
+            return true;
+          }
         };
         
         collector = MultiCollector.wrap(setCollector, topScoreCollector);
@@ -2489,7 +2504,7 @@ class FilterImpl extends Filter {
         iterators.add(iter);
       }
       for (Weight w : weights) {
-        Scorer scorer = w.scorer(context, context.reader().getLiveDocs());
+        Scorer scorer = w.scorer(context, context.reader().getLiveDocs(), true);
         if (scorer == null) return null;
         iterators.add(scorer);
       }

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/join/IgnoreAcceptDocsQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/join/IgnoreAcceptDocsQuery.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/join/IgnoreAcceptDocsQuery.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/join/IgnoreAcceptDocsQuery.java Thu Feb  5 12:34:28 2015
@@ -86,8 +86,8 @@ public class IgnoreAcceptDocsQuery exten
     }
 
     @Override
-    public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
-      return w.scorer(context, null);
+    public Scorer scorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
+      return w.scorer(context, null, needsScores);
     }
   }
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/update/DeleteByQueryWrapper.java Thu Feb  5 12:34:28 2015
@@ -82,8 +82,8 @@ final class DeleteByQueryWrapper extends
       public void normalize(float norm, float topLevelBoost) { inner.normalize(norm, topLevelBoost); }
 
       @Override
-      public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
-        return inner.scorer(privateContext.getIndexReader().leaves().get(0), acceptDocs);
+      public Scorer scorer(LeafReaderContext context, Bits acceptDocs, boolean needsScores) throws IOException {
+        return inner.scorer(privateContext.getIndexReader().leaves().get(0), acceptDocs, needsScores);
       }
     };
   }

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java?rev=1657554&r1=1657553&r2=1657554&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestRankQueryPlugin.java Thu Feb  5 12:34:28 2015
@@ -760,6 +760,11 @@ public class TestRankQueryPlugin extends
     public int getTotalHits() {
       return list.size();
     }
+    
+    @Override
+    public boolean needsScores() {
+      return true;
+    }
   }
 
   class TestCollector1 extends TopDocsCollector {
@@ -817,6 +822,11 @@ public class TestRankQueryPlugin extends
     public int getTotalHits() {
       return list.size();
     }
+    
+    @Override
+    public boolean needsScores() {
+      return true;
+    }
   }
 
 }