You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2017/02/21 14:39:00 UTC
[1/2] lucene-solr:master: LUCENE-7628: Scorer.getChildren() returns
only matching child scorers
Repository: lucene-solr
Updated Branches:
refs/heads/branch_6x 017b8a6e2 -> cbe7e87d8
refs/heads/master fa5851095 -> ac38872a7
LUCENE-7628: Scorer.getChildren() returns only matching child scorers
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/ac38872a
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/ac38872a
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/ac38872a
Branch: refs/heads/master
Commit: ac38872a7916b8df0e218303b439aa4434c1dc52
Parents: fa58510
Author: Alan Woodward <ro...@apache.org>
Authored: Sun Feb 19 10:48:37 2017 +0000
Committer: Alan Woodward <ro...@apache.org>
Committed: Tue Feb 21 13:44:25 2017 +0000
----------------------------------------------------------------------
lucene/CHANGES.txt | 5 +++
.../apache/lucene/search/DisjunctionScorer.java | 4 +-
.../lucene/search/MinShouldMatchSumScorer.java | 16 +++----
.../java/org/apache/lucene/search/Scorer.java | 12 ++++--
.../search/TestBooleanQueryVisitSubscorers.java | 45 +++++++++++++++++---
.../lucene/search/TestSubScorerFreqs.java | 2 +-
.../facet/AssertingSubDocsAtOnceCollector.java | 3 +-
.../org/apache/solr/ltr/LTRScoringQuery.java | 2 +-
8 files changed, 66 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ac38872a/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 46a3e8d..a3028ac 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -90,6 +90,11 @@ API Changes
after the main query has been executed. (Adrien Grand, Martijn van Groningen,
Mike McCandless)
+* LUCENE-7628: Scorer.getChildren() now only returns Scorers that are
+ positioned on the current document, and can throw an IOException.
+ AssertingScorer checks that getChildren() is not called on an unpositioned
+ Scorer. (Alan Woodward, Adrien Grand)
+
New Features
* LUCENE-7449: Add CROSSES relation support to RangeFieldQuery. (Nick Knize)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ac38872a/lucene/core/src/java/org/apache/lucene/search/DisjunctionScorer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/DisjunctionScorer.java b/lucene/core/src/java/org/apache/lucene/search/DisjunctionScorer.java
index c53942a..8180dc4 100644
--- a/lucene/core/src/java/org/apache/lucene/search/DisjunctionScorer.java
+++ b/lucene/core/src/java/org/apache/lucene/search/DisjunctionScorer.java
@@ -194,9 +194,9 @@ abstract class DisjunctionScorer extends Scorer {
protected abstract float score(DisiWrapper topList) throws IOException;
@Override
- public final Collection<ChildScorer> getChildren() {
+ public final Collection<ChildScorer> getChildren() throws IOException {
ArrayList<ChildScorer> children = new ArrayList<>();
- for (DisiWrapper scorer : subScorers) {
+ for (DisiWrapper scorer = getSubMatches(); scorer != null; scorer = scorer.next) {
children.add(new ChildScorer(scorer.scorer, "SHOULD"));
}
return children;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ac38872a/lucene/core/src/java/org/apache/lucene/search/MinShouldMatchSumScorer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/MinShouldMatchSumScorer.java b/lucene/core/src/java/org/apache/lucene/search/MinShouldMatchSumScorer.java
index c2c419c..b6edac4 100644
--- a/lucene/core/src/java/org/apache/lucene/search/MinShouldMatchSumScorer.java
+++ b/lucene/core/src/java/org/apache/lucene/search/MinShouldMatchSumScorer.java
@@ -20,7 +20,6 @@ package org.apache.lucene.search;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
import java.util.stream.LongStream;
import java.util.stream.StreamSupport;
@@ -90,7 +89,6 @@ final class MinShouldMatchSumScorer extends Scorer {
final DisiWrapper[] tail;
int tailSize;
- final Collection<ChildScorer> childScorers;
final long cost;
MinShouldMatchSumScorer(Weight weight, Collection<Scorer> scorers, int minShouldMatch) {
@@ -115,17 +113,17 @@ final class MinShouldMatchSumScorer extends Scorer {
addLead(new DisiWrapper(scorer));
}
- List<ChildScorer> children = new ArrayList<>();
- for (Scorer scorer : scorers) {
- children.add(new ChildScorer(scorer, "SHOULD"));
- }
- this.childScorers = Collections.unmodifiableCollection(children);
this.cost = cost(scorers.stream().map(Scorer::iterator).mapToLong(DocIdSetIterator::cost), scorers.size(), minShouldMatch);
}
@Override
- public final Collection<ChildScorer> getChildren() {
- return childScorers;
+ public final Collection<ChildScorer> getChildren() throws IOException {
+ List<ChildScorer> matchingChildren = new ArrayList<>();
+ updateFreq();
+ for (DisiWrapper s = lead; s != null; s = s.next) {
+ matchingChildren.add(new ChildScorer(s.scorer, "SHOULD"));
+ }
+ return matchingChildren;
}
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ac38872a/lucene/core/src/java/org/apache/lucene/search/Scorer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/Scorer.java b/lucene/core/src/java/org/apache/lucene/search/Scorer.java
index f434327..7ceed33 100644
--- a/lucene/core/src/java/org/apache/lucene/search/Scorer.java
+++ b/lucene/core/src/java/org/apache/lucene/search/Scorer.java
@@ -77,9 +77,15 @@ public abstract class Scorer {
return weight;
}
- /** Returns child sub-scorers
- * @lucene.experimental */
- public Collection<ChildScorer> getChildren() {
+ /**
+ * Returns child sub-scorers positioned on the current document
+ *
+ * Note that this method should not be called on Scorers passed to {@link LeafCollector#setScorer(Scorer)},
+ * as these may be synthetic Scorers produced by {@link BulkScorer} which will throw an Exception.
+ *
+ * @lucene.experimental
+ */
+ public Collection<ChildScorer> getChildren() throws IOException {
return Collections.emptyList();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ac38872a/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java b/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java
index 38ddcab..5436873 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java
@@ -169,7 +169,7 @@ public class TestBooleanQueryVisitSubscorers extends LuceneTestCase {
};
}
- private void fillLeaves(Scorer scorer, Set<Scorer> set) {
+ private void fillLeaves(Scorer scorer, Set<Scorer> set) throws IOException {
if (scorer.getWeight().getQuery() instanceof TermQuery) {
set.add(scorer);
} else {
@@ -186,7 +186,40 @@ public class TestBooleanQueryVisitSubscorers extends LuceneTestCase {
public int freq(int doc) throws IOException {
return docCounts.get(doc);
}
-
+
+ }
+
+ public void testDisjunctionMatches() throws IOException {
+ BooleanQuery.Builder bq1 = new BooleanQuery.Builder();
+ bq1.add(new TermQuery(new Term(F1, "lucene")), Occur.SHOULD);
+ bq1.add(new PhraseQuery(F2, "search", "engine"), Occur.SHOULD);
+
+ Weight w1 = scorerSearcher.createNormalizedWeight(bq1.build(), true);
+ Scorer s1 = w1.scorer(reader.leaves().get(0));
+ assertEquals(0, s1.iterator().nextDoc());
+ assertEquals(2, s1.getChildren().size());
+
+ BooleanQuery.Builder bq2 = new BooleanQuery.Builder();
+ bq2.add(new TermQuery(new Term(F1, "lucene")), Occur.SHOULD);
+ bq2.add(new PhraseQuery(F2, "search", "library"), Occur.SHOULD);
+
+ Weight w2 = scorerSearcher.createNormalizedWeight(bq2.build(), true);
+ Scorer s2 = w2.scorer(reader.leaves().get(0));
+ assertEquals(0, s2.iterator().nextDoc());
+ assertEquals(1, s2.getChildren().size());
+ }
+
+ public void testMinShouldMatchMatches() throws IOException {
+ BooleanQuery.Builder bq = new BooleanQuery.Builder();
+ bq.add(new TermQuery(new Term(F1, "lucene")), Occur.SHOULD);
+ bq.add(new TermQuery(new Term(F2, "lucene")), Occur.SHOULD);
+ bq.add(new PhraseQuery(F2, "search", "library"), Occur.SHOULD);
+ bq.setMinimumNumberShouldMatch(2);
+
+ Weight w = scorerSearcher.createNormalizedWeight(bq.build(), true);
+ Scorer s = w.scorer(reader.leaves().get(0));
+ assertEquals(0, s.iterator().nextDoc());
+ assertEquals(2, s.getChildren().size());
}
public void testGetChildrenMinShouldMatchSumScorer() throws IOException {
@@ -205,10 +238,10 @@ public class TestBooleanQueryVisitSubscorers extends LuceneTestCase {
"ConjunctionScorer\n" +
" MUST ConstantScoreScorer\n" +
" MUST MinShouldMatchSumScorer\n" +
- " SHOULD TermScorer body:nutch\n" +
+ " SHOULD TermScorer body:web\n" +
" SHOULD TermScorer body:crawler\n" +
- " SHOULD TermScorer body:web",
- summary);
+ " SHOULD TermScorer body:nutch",
+ summary);
}
}
@@ -261,7 +294,7 @@ public class TestBooleanQueryVisitSubscorers extends LuceneTestCase {
};
}
- private static void summarizeScorer(final StringBuilder builder, final Scorer scorer, final int indent) {
+ private static void summarizeScorer(final StringBuilder builder, final Scorer scorer, final int indent) throws IOException {
builder.append(scorer.getClass().getSimpleName());
if (scorer instanceof TermScorer) {
TermQuery termQuery = (TermQuery) scorer.getWeight().getQuery();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ac38872a/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java b/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java
index 121e48d..7b713b9 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java
@@ -80,7 +80,7 @@ public class TestSubScorerFreqs extends LuceneTestCase {
this.relationships = relationships;
}
- public void setSubScorers(Scorer scorer, String relationship) {
+ public void setSubScorers(Scorer scorer, String relationship) throws IOException {
for (ChildScorer child : scorer.getChildren()) {
if (scorer instanceof AssertingScorer || relationships.contains(child.relationship)) {
setSubScorers(child.child, child.relationship);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ac38872a/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java
----------------------------------------------------------------------
diff --git a/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java b/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java
index 793cc412..e545244 100644
--- a/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java
+++ b/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java
@@ -16,6 +16,7 @@
*/
package org.apache.lucene.facet;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -32,7 +33,7 @@ class AssertingSubDocsAtOnceCollector extends SimpleCollector {
List<Scorer> allScorers;
@Override
- public void setScorer(Scorer s) {
+ public void setScorer(Scorer s) throws IOException {
// Gathers all scorers, including s and "under":
allScorers = new ArrayList<>();
allScorers.add(s);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ac38872a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
index b581dd5..37990ea 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
@@ -502,7 +502,7 @@ public class LTRScoringQuery extends Query {
}
@Override
- public Collection<ChildScorer> getChildren() {
+ public Collection<ChildScorer> getChildren() throws IOException {
return featureTraversalScorer.getChildren();
}
[2/2] lucene-solr:branch_6x: LUCENE-7628: Scorer.getChildren()
returns only matching child scorers
Posted by ro...@apache.org.
LUCENE-7628: Scorer.getChildren() returns only matching child scorers
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/cbe7e87d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/cbe7e87d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/cbe7e87d
Branch: refs/heads/branch_6x
Commit: cbe7e87d82a5a64fb8b019b215b2c59814ef5462
Parents: 017b8a6
Author: Alan Woodward <ro...@apache.org>
Authored: Sun Feb 19 10:48:37 2017 +0000
Committer: Alan Woodward <ro...@apache.org>
Committed: Tue Feb 21 13:44:56 2017 +0000
----------------------------------------------------------------------
lucene/CHANGES.txt | 5 +++
.../apache/lucene/search/DisjunctionScorer.java | 4 +-
.../lucene/search/MinShouldMatchSumScorer.java | 16 +++----
.../java/org/apache/lucene/search/Scorer.java | 12 ++++--
.../search/TestBooleanQueryVisitSubscorers.java | 45 +++++++++++++++++---
.../lucene/search/TestSubScorerFreqs.java | 2 +-
.../facet/AssertingSubDocsAtOnceCollector.java | 3 +-
.../org/apache/solr/ltr/LTRScoringQuery.java | 2 +-
8 files changed, 66 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cbe7e87d/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index c875587..93511e6 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -30,6 +30,11 @@ API Changes
after the main query has been executed. (Adrien Grand, Martijn van Groningen,
Mike McCandless)
+* LUCENE-7628: Scorer.getChildren() now only returns Scorers that are
+ positioned on the current document, and can throw an IOException.
+ AssertingScorer checks that getChildren() is not called on an unpositioned
+ Scorer. (Alan Woodward, Adrien Grand)
+
New Features
* LUCENE-7449: Add CROSSES relation support to RangeFieldQuery. (Nick Knize)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cbe7e87d/lucene/core/src/java/org/apache/lucene/search/DisjunctionScorer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/DisjunctionScorer.java b/lucene/core/src/java/org/apache/lucene/search/DisjunctionScorer.java
index c53942a..8180dc4 100644
--- a/lucene/core/src/java/org/apache/lucene/search/DisjunctionScorer.java
+++ b/lucene/core/src/java/org/apache/lucene/search/DisjunctionScorer.java
@@ -194,9 +194,9 @@ abstract class DisjunctionScorer extends Scorer {
protected abstract float score(DisiWrapper topList) throws IOException;
@Override
- public final Collection<ChildScorer> getChildren() {
+ public final Collection<ChildScorer> getChildren() throws IOException {
ArrayList<ChildScorer> children = new ArrayList<>();
- for (DisiWrapper scorer : subScorers) {
+ for (DisiWrapper scorer = getSubMatches(); scorer != null; scorer = scorer.next) {
children.add(new ChildScorer(scorer.scorer, "SHOULD"));
}
return children;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cbe7e87d/lucene/core/src/java/org/apache/lucene/search/MinShouldMatchSumScorer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/MinShouldMatchSumScorer.java b/lucene/core/src/java/org/apache/lucene/search/MinShouldMatchSumScorer.java
index 0a0f013..2e3361b 100644
--- a/lucene/core/src/java/org/apache/lucene/search/MinShouldMatchSumScorer.java
+++ b/lucene/core/src/java/org/apache/lucene/search/MinShouldMatchSumScorer.java
@@ -20,7 +20,6 @@ package org.apache.lucene.search;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
import java.util.stream.LongStream;
import java.util.stream.StreamSupport;
@@ -91,7 +90,6 @@ final class MinShouldMatchSumScorer extends Scorer {
final DisiWrapper[] tail;
int tailSize;
- final Collection<ChildScorer> childScorers;
final long cost;
MinShouldMatchSumScorer(Weight weight, Collection<Scorer> scorers, int minShouldMatch, float[] coord) {
@@ -117,17 +115,17 @@ final class MinShouldMatchSumScorer extends Scorer {
addLead(new DisiWrapper(scorer));
}
- List<ChildScorer> children = new ArrayList<>();
- for (Scorer scorer : scorers) {
- children.add(new ChildScorer(scorer, "SHOULD"));
- }
- this.childScorers = Collections.unmodifiableCollection(children);
this.cost = cost(scorers.stream().map(Scorer::iterator).mapToLong(DocIdSetIterator::cost), scorers.size(), minShouldMatch);
}
@Override
- public final Collection<ChildScorer> getChildren() {
- return childScorers;
+ public final Collection<ChildScorer> getChildren() throws IOException {
+ List<ChildScorer> matchingChildren = new ArrayList<>();
+ updateFreq();
+ for (DisiWrapper s = lead; s != null; s = s.next) {
+ matchingChildren.add(new ChildScorer(s.scorer, "SHOULD"));
+ }
+ return matchingChildren;
}
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cbe7e87d/lucene/core/src/java/org/apache/lucene/search/Scorer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/Scorer.java b/lucene/core/src/java/org/apache/lucene/search/Scorer.java
index f434327..7ceed33 100644
--- a/lucene/core/src/java/org/apache/lucene/search/Scorer.java
+++ b/lucene/core/src/java/org/apache/lucene/search/Scorer.java
@@ -77,9 +77,15 @@ public abstract class Scorer {
return weight;
}
- /** Returns child sub-scorers
- * @lucene.experimental */
- public Collection<ChildScorer> getChildren() {
+ /**
+ * Returns child sub-scorers positioned on the current document
+ *
+ * Note that this method should not be called on Scorers passed to {@link LeafCollector#setScorer(Scorer)},
+ * as these may be synthetic Scorers produced by {@link BulkScorer} which will throw an Exception.
+ *
+ * @lucene.experimental
+ */
+ public Collection<ChildScorer> getChildren() throws IOException {
return Collections.emptyList();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cbe7e87d/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java b/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java
index 3d89775..04bbb83 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestBooleanQueryVisitSubscorers.java
@@ -169,7 +169,7 @@ public class TestBooleanQueryVisitSubscorers extends LuceneTestCase {
};
}
- private void fillLeaves(Scorer scorer, Set<Scorer> set) {
+ private void fillLeaves(Scorer scorer, Set<Scorer> set) throws IOException {
if (scorer.getWeight().getQuery() instanceof TermQuery) {
set.add(scorer);
} else {
@@ -186,7 +186,40 @@ public class TestBooleanQueryVisitSubscorers extends LuceneTestCase {
public int freq(int doc) throws IOException {
return docCounts.get(doc);
}
-
+
+ }
+
+ public void testDisjunctionMatches() throws IOException {
+ BooleanQuery.Builder bq1 = new BooleanQuery.Builder();
+ bq1.add(new TermQuery(new Term(F1, "lucene")), Occur.SHOULD);
+ bq1.add(new PhraseQuery(F2, "search", "engine"), Occur.SHOULD);
+
+ Weight w1 = scorerSearcher.createNormalizedWeight(bq1.build(), true);
+ Scorer s1 = w1.scorer(reader.leaves().get(0));
+ assertEquals(0, s1.iterator().nextDoc());
+ assertEquals(2, s1.getChildren().size());
+
+ BooleanQuery.Builder bq2 = new BooleanQuery.Builder();
+ bq2.add(new TermQuery(new Term(F1, "lucene")), Occur.SHOULD);
+ bq2.add(new PhraseQuery(F2, "search", "library"), Occur.SHOULD);
+
+ Weight w2 = scorerSearcher.createNormalizedWeight(bq2.build(), true);
+ Scorer s2 = w2.scorer(reader.leaves().get(0));
+ assertEquals(0, s2.iterator().nextDoc());
+ assertEquals(1, s2.getChildren().size());
+ }
+
+ public void testMinShouldMatchMatches() throws IOException {
+ BooleanQuery.Builder bq = new BooleanQuery.Builder();
+ bq.add(new TermQuery(new Term(F1, "lucene")), Occur.SHOULD);
+ bq.add(new TermQuery(new Term(F2, "lucene")), Occur.SHOULD);
+ bq.add(new PhraseQuery(F2, "search", "library"), Occur.SHOULD);
+ bq.setMinimumNumberShouldMatch(2);
+
+ Weight w = scorerSearcher.createNormalizedWeight(bq.build(), true);
+ Scorer s = w.scorer(reader.leaves().get(0));
+ assertEquals(0, s.iterator().nextDoc());
+ assertEquals(2, s.getChildren().size());
}
public void testGetChildrenMinShouldMatchSumScorer() throws IOException {
@@ -205,10 +238,10 @@ public class TestBooleanQueryVisitSubscorers extends LuceneTestCase {
"CoordinatingConjunctionScorer\n" +
" MUST ConstantScoreScorer\n" +
" MUST MinShouldMatchSumScorer\n" +
- " SHOULD TermScorer body:nutch\n" +
+ " SHOULD TermScorer body:web\n" +
" SHOULD TermScorer body:crawler\n" +
- " SHOULD TermScorer body:web",
- summary);
+ " SHOULD TermScorer body:nutch",
+ summary);
}
}
@@ -262,7 +295,7 @@ public class TestBooleanQueryVisitSubscorers extends LuceneTestCase {
};
}
- private static void summarizeScorer(final StringBuilder builder, final Scorer scorer, final int indent) {
+ private static void summarizeScorer(final StringBuilder builder, final Scorer scorer, final int indent) throws IOException {
builder.append(scorer.getClass().getSimpleName());
if (scorer instanceof TermScorer) {
TermQuery termQuery = (TermQuery) scorer.getWeight().getQuery();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cbe7e87d/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java b/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java
index 121e48d..7b713b9 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java
@@ -80,7 +80,7 @@ public class TestSubScorerFreqs extends LuceneTestCase {
this.relationships = relationships;
}
- public void setSubScorers(Scorer scorer, String relationship) {
+ public void setSubScorers(Scorer scorer, String relationship) throws IOException {
for (ChildScorer child : scorer.getChildren()) {
if (scorer instanceof AssertingScorer || relationships.contains(child.relationship)) {
setSubScorers(child.child, child.relationship);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cbe7e87d/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java
----------------------------------------------------------------------
diff --git a/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java b/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java
index 793cc412..e545244 100644
--- a/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java
+++ b/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java
@@ -16,6 +16,7 @@
*/
package org.apache.lucene.facet;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -32,7 +33,7 @@ class AssertingSubDocsAtOnceCollector extends SimpleCollector {
List<Scorer> allScorers;
@Override
- public void setScorer(Scorer s) {
+ public void setScorer(Scorer s) throws IOException {
// Gathers all scorers, including s and "under":
allScorers = new ArrayList<>();
allScorers.add(s);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/cbe7e87d/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
index 9f227b9..5bec4b3 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
@@ -514,7 +514,7 @@ public class LTRScoringQuery extends Query {
}
@Override
- public Collection<ChildScorer> getChildren() {
+ public Collection<ChildScorer> getChildren() throws IOException {
return featureTraversalScorer.getChildren();
}