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 2015/05/20 12:20:26 UTC
svn commit: r1680514 - in /lucene/dev/branches/branch_5x: ./ lucene/
lucene/core/ lucene/core/src/java/org/apache/lucene/search/payloads/
lucene/core/src/java/org/apache/lucene/search/spans/
lucene/core/src/test/org/apache/lucene/search/payloads/ lucen...
Author: romseygeek
Date: Wed May 20 10:20:26 2015
New Revision: 1680514
URL: http://svn.apache.org/r1680514
Log:
LUCENE-6490: SpanCollector must be created per-scorer to allow multithreaded search
Added:
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanCollectorFactory.java
- copied unchanged from r1680500, lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/search/spans/SpanCollectorFactory.java
Modified:
lucene/dev/branches/branch_5x/ (props changed)
lucene/dev/branches/branch_5x/lucene/ (props changed)
lucene/dev/branches/branch_5x/lucene/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_5x/lucene/core/ (props changed)
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadSpanCollector.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/SpanNearPayloadCheckQuery.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/SpanPayloadCheckQuery.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanFirstQuery.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionCheckQuery.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionRangeQuery.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanQuery.java
lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanWeight.java
lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java
lucene/dev/branches/branch_5x/lucene/highlighter/ (props changed)
lucene/dev/branches/branch_5x/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java
lucene/dev/branches/branch_5x/solr/ (props changed)
lucene/dev/branches/branch_5x/solr/core/ (props changed)
Modified: lucene/dev/branches/branch_5x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/CHANGES.txt?rev=1680514&r1=1680513&r2=1680514&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/lucene/CHANGES.txt Wed May 20 10:20:26 2015
@@ -163,12 +163,12 @@ API Changes
* LUCENE-6445: Two new methods in Highlighter's TokenSources; the existing
methods are now marked deprecated. (David Smiley)
-* LUCENE-6371: Payload collection from Spans is moved to a more generic
+* LUCENE-6371, LUCENE-6490: Payload collection from Spans is moved to a more generic
SpanCollector framework. Spans no longer implements .hasPayload() and
.getPayload() methods, and instead exposes a collect() method that allows
the collection of arbitrary postings information. SpanPayloadCheckQuery and
SpanPayloadNearCheckQuery have moved from the .spans package to the .payloads
- package. (Alan Woodward, David Smiley, Paul Elschot)
+ package. (Alan Woodward, David Smiley, Paul Elschot, Robert Muir)
* LUCENE-6484: Removed EliasFanoDocIdSet, which was unused.
(Paul Elschot via Adrien Grand)
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java?rev=1680514&r1=1680513&r2=1680514&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java Wed May 20 10:20:26 2015
@@ -56,7 +56,6 @@ public class PayloadNearQuery extends Sp
protected String fieldName;
protected PayloadFunction function;
- protected final PayloadSpanCollector payloadCollector = new PayloadSpanCollector();
public PayloadNearQuery(SpanQuery[] clauses, int slop, boolean inOrder) {
this(clauses, slop, inOrder, new AveragePayloadFunction());
@@ -132,15 +131,16 @@ public class PayloadNearQuery extends Sp
public PayloadNearSpanWeight(SpanQuery query, IndexSearcher searcher)
throws IOException {
- super(query, searcher, payloadCollector);
+ super(query, searcher, PayloadSpanCollector.FACTORY);
}
@Override
public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
- Spans spans = query.getSpans(context, acceptDocs, termContexts, payloadCollector);
+ PayloadSpanCollector collector = PayloadSpanCollector.FACTORY.newCollector();
+ Spans spans = query.getSpans(context, acceptDocs, termContexts, collector);
return (spans == null)
? null
- : new PayloadNearSpanScorer(spans, this, similarity.simScorer(stats, context));
+ : new PayloadNearSpanScorer(spans, this, collector, similarity.simScorer(stats, context));
}
@Override
@@ -176,10 +176,13 @@ public class PayloadNearQuery extends Sp
Spans spans;
protected float payloadScore;
private int payloadsSeen;
+ private final PayloadSpanCollector collector;
- protected PayloadNearSpanScorer(Spans spans, SpanWeight weight, Similarity.SimScorer docScorer) throws IOException {
+ protected PayloadNearSpanScorer(Spans spans, SpanWeight weight, PayloadSpanCollector collector,
+ Similarity.SimScorer docScorer) throws IOException {
super(spans, weight, docScorer);
this.spans = spans;
+ this.collector = collector;
}
// TODO change the whole spans api to use bytesRef, or nuke spans
@@ -218,9 +221,9 @@ public class PayloadNearQuery extends Sp
do {
int matchLength = spans.endPosition() - startPos;
freq += docScorer.computeSlopFactor(matchLength);
- payloadCollector.reset();
- spans.collect(payloadCollector);
- processPayloads(payloadCollector.getPayloads(), startPos, spans.endPosition());
+ collector.reset();
+ spans.collect(collector);
+ processPayloads(collector.getPayloads(), startPos, spans.endPosition());
startPos = spans.nextStartPosition();
} while (startPos != Spans.NO_MORE_POSITIONS);
}
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadSpanCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadSpanCollector.java?rev=1680514&r1=1680513&r2=1680514&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadSpanCollector.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadSpanCollector.java Wed May 20 10:20:26 2015
@@ -21,6 +21,7 @@ import org.apache.lucene.index.PostingsE
import org.apache.lucene.index.Term;
import org.apache.lucene.search.spans.BufferedSpanCollector;
import org.apache.lucene.search.spans.SpanCollector;
+import org.apache.lucene.search.spans.SpanCollectorFactory;
import org.apache.lucene.search.spans.Spans;
import org.apache.lucene.util.BytesRef;
@@ -33,6 +34,13 @@ import java.util.Collection;
*/
public class PayloadSpanCollector implements SpanCollector {
+ public static final SpanCollectorFactory<PayloadSpanCollector> FACTORY = new SpanCollectorFactory<PayloadSpanCollector>() {
+ @Override
+ public PayloadSpanCollector newCollector() {
+ return new PayloadSpanCollector();
+ }
+ };
+
private final Collection<byte[]> payloads = new ArrayList<>();
BufferedPayloadCollector bufferedCollector;
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java?rev=1680514&r1=1680513&r2=1680514&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java Wed May 20 10:20:26 2015
@@ -27,6 +27,7 @@ import org.apache.lucene.search.similari
import org.apache.lucene.search.similarities.Similarity.SimScorer;
import org.apache.lucene.search.spans.BufferedSpanCollector;
import org.apache.lucene.search.spans.SpanCollector;
+import org.apache.lucene.search.spans.SpanCollectorFactory;
import org.apache.lucene.search.spans.SpanQuery;
import org.apache.lucene.search.spans.SpanScorer;
import org.apache.lucene.search.spans.SpanTermQuery;
@@ -69,10 +70,10 @@ public class PayloadTermQuery extends Sp
@Override
public SpanWeight createWeight(IndexSearcher searcher, boolean needsScores) throws IOException {
- return new PayloadTermWeight(this, searcher, new PayloadTermCollector());
+ return new PayloadTermWeight(this, searcher);
}
- protected class PayloadTermCollector implements SpanCollector {
+ private static class PayloadTermCollector implements SpanCollector {
BytesRef payload;
@@ -102,33 +103,32 @@ public class PayloadTermQuery extends Sp
}
}
- protected class PayloadTermWeight extends SpanWeight {
+ private class PayloadTermWeight extends SpanWeight {
- final PayloadTermCollector payloadCollector;
-
- public PayloadTermWeight(PayloadTermQuery query, IndexSearcher searcher, PayloadTermCollector collector)
+ public PayloadTermWeight(PayloadTermQuery query, IndexSearcher searcher)
throws IOException {
- super(query, searcher, collector);
- this.payloadCollector = collector;
+ super(query, searcher, SpanCollectorFactory.NO_OP_FACTORY);
}
@Override
public PayloadTermSpanScorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
- TermSpans spans = (TermSpans) query.getSpans(context, acceptDocs, termContexts, payloadCollector);
+ PayloadTermCollector collector = new PayloadTermCollector();
+ TermSpans spans = (TermSpans) query.getSpans(context, acceptDocs, termContexts, collector);
return (spans == null)
? null
- : new PayloadTermSpanScorer(spans, this, similarity.simScorer(stats, context));
+ : new PayloadTermSpanScorer(spans, this, collector, similarity.simScorer(stats, context));
}
protected class PayloadTermSpanScorer extends SpanScorer {
protected BytesRef payload;
protected float payloadScore;
protected int payloadsSeen;
- private final TermSpans termSpans;
+ private final PayloadTermCollector payloadCollector;
- public PayloadTermSpanScorer(TermSpans spans, SpanWeight weight, Similarity.SimScorer docScorer) throws IOException {
+ public PayloadTermSpanScorer(TermSpans spans, SpanWeight weight, PayloadTermCollector collector,
+ Similarity.SimScorer docScorer) throws IOException {
super(spans, weight, docScorer);
- termSpans = spans; // CHECKME: generics to use SpansScorer.spans as TermSpans.
+ this.payloadCollector = collector;
}
@Override
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/SpanNearPayloadCheckQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/SpanNearPayloadCheckQuery.java?rev=1680514&r1=1680513&r2=1680514&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/SpanNearPayloadCheckQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/SpanNearPayloadCheckQuery.java Wed May 20 10:20:26 2015
@@ -18,6 +18,7 @@ package org.apache.lucene.search.payload
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.spans.FilterSpans.AcceptStatus;
+import org.apache.lucene.search.spans.SpanCollector;
import org.apache.lucene.search.spans.SpanNearQuery;
import org.apache.lucene.search.spans.SpanPositionCheckQuery;
import org.apache.lucene.search.spans.SpanWeight;
@@ -37,7 +38,6 @@ import java.util.Objects;
public class SpanNearPayloadCheckQuery extends SpanPositionCheckQuery {
protected final Collection<byte[]> payloadToMatch;
- protected final PayloadSpanCollector payloadCollector = new PayloadSpanCollector();
/**
* @param match The underlying {@link org.apache.lucene.search.spans.SpanQuery} to check
@@ -50,11 +50,13 @@ public class SpanNearPayloadCheckQuery e
@Override
public SpanWeight createWeight(IndexSearcher searcher, boolean needsScores) throws IOException {
- return new SpanWeight(this, searcher, payloadCollector);
+ return new SpanWeight(this, searcher, PayloadSpanCollector.FACTORY);
}
@Override
- protected AcceptStatus acceptPosition(Spans spans) throws IOException {
+ protected AcceptStatus acceptPosition(Spans spans, SpanCollector collector) throws IOException {
+
+ PayloadSpanCollector payloadCollector = (PayloadSpanCollector) collector;
payloadCollector.reset();
spans.collect(payloadCollector);
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/SpanPayloadCheckQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/SpanPayloadCheckQuery.java?rev=1680514&r1=1680513&r2=1680514&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/SpanPayloadCheckQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/payloads/SpanPayloadCheckQuery.java Wed May 20 10:20:26 2015
@@ -17,8 +17,8 @@ package org.apache.lucene.search.payload
*/
import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.payloads.PayloadSpanCollector;
import org.apache.lucene.search.spans.FilterSpans.AcceptStatus;
+import org.apache.lucene.search.spans.SpanCollector;
import org.apache.lucene.search.spans.SpanNearQuery;
import org.apache.lucene.search.spans.SpanPositionCheckQuery;
import org.apache.lucene.search.spans.SpanQuery;
@@ -43,7 +43,6 @@ import java.util.Iterator;
public class SpanPayloadCheckQuery extends SpanPositionCheckQuery {
protected final Collection<byte[]> payloadToMatch;
- protected final PayloadSpanCollector payloadCollector = new PayloadSpanCollector();
/**
* @param match The underlying {@link org.apache.lucene.search.spans.SpanQuery} to check
@@ -59,11 +58,13 @@ public class SpanPayloadCheckQuery exten
@Override
public SpanWeight createWeight(IndexSearcher searcher, boolean needsScores) throws IOException {
- return new SpanWeight(this, searcher, payloadCollector);
+ return new SpanWeight(this, searcher, PayloadSpanCollector.FACTORY);
}
@Override
- protected AcceptStatus acceptPosition(Spans spans) throws IOException {
+ protected AcceptStatus acceptPosition(Spans spans, SpanCollector collector) throws IOException {
+
+ PayloadSpanCollector payloadCollector = (PayloadSpanCollector) collector;
payloadCollector.reset();
spans.collect(payloadCollector);
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanFirstQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanFirstQuery.java?rev=1680514&r1=1680513&r2=1680514&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanFirstQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanFirstQuery.java Wed May 20 10:20:26 2015
@@ -37,7 +37,7 @@ public class SpanFirstQuery extends Span
}
@Override
- protected AcceptStatus acceptPosition(Spans spans) throws IOException {
+ protected AcceptStatus acceptPosition(Spans spans, SpanCollector collector) throws IOException {
assert spans.startPosition() != spans.endPosition() : "start equals end: " + spans.startPosition();
if (spans.startPosition() >= end)
return AcceptStatus.NO_MORE_IN_CURRENT_DOC;
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionCheckQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionCheckQuery.java?rev=1680514&r1=1680513&r2=1680514&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionCheckQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionCheckQuery.java Wed May 20 10:20:26 2015
@@ -68,21 +68,22 @@ public abstract class SpanPositionCheckQ
*
*
* @param spans The {@link Spans} instance, positioned at the spot to check
+ * @param collector the {@link SpanCollector} associated with the Spans
*
* @return whether the match is accepted, rejected, or rejected and should move to the next doc.
*
* @see Spans#nextDoc()
*
*/
- protected abstract AcceptStatus acceptPosition(Spans spans) throws IOException;
+ protected abstract AcceptStatus acceptPosition(Spans spans, SpanCollector collector) throws IOException;
@Override
- public Spans getSpans(final LeafReaderContext context, Bits acceptDocs, Map<Term,TermContext> termContexts, SpanCollector collector) throws IOException {
+ public Spans getSpans(final LeafReaderContext context, Bits acceptDocs, Map<Term,TermContext> termContexts, final SpanCollector collector) throws IOException {
Spans matchSpans = match.getSpans(context, acceptDocs, termContexts, collector);
return (matchSpans == null) ? null : new FilterSpans(matchSpans) {
@Override
protected AcceptStatus accept(Spans candidate) throws IOException {
- return acceptPosition(candidate);
+ return acceptPosition(candidate, collector);
}
};
}
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionRangeQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionRangeQuery.java?rev=1680514&r1=1680513&r2=1680514&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionRangeQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanPositionRangeQuery.java Wed May 20 10:20:26 2015
@@ -40,7 +40,7 @@ public class SpanPositionRangeQuery exte
@Override
- protected AcceptStatus acceptPosition(Spans spans) throws IOException {
+ protected AcceptStatus acceptPosition(Spans spans, SpanCollector collector) throws IOException {
assert spans.startPosition() != spans.endPosition();
AcceptStatus res = (spans.startPosition() >= end)
? AcceptStatus.NO_MORE_IN_CURRENT_DOC
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanQuery.java?rev=1680514&r1=1680513&r2=1680514&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanQuery.java Wed May 20 10:20:26 2015
@@ -53,7 +53,11 @@ public abstract class SpanQuery extends
@Override
public SpanWeight createWeight(IndexSearcher searcher, boolean needsScores) throws IOException {
- return new SpanWeight(this, searcher, SpanCollector.NO_OP);
+ return new SpanWeight(this, searcher, getSpanCollectorFactory());
+ }
+
+ protected SpanCollectorFactory<? extends SpanCollector> getSpanCollectorFactory() {
+ return SpanCollectorFactory.NO_OP_FACTORY;
}
}
Modified: lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanWeight.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanWeight.java?rev=1680514&r1=1680513&r2=1680514&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanWeight.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/java/org/apache/lucene/search/spans/SpanWeight.java Wed May 20 10:20:26 2015
@@ -44,14 +44,14 @@ public class SpanWeight extends Weight {
protected final Similarity similarity;
protected final Map<Term,TermContext> termContexts;
protected final SpanQuery query;
- protected final SpanCollector collector;
+ protected final SpanCollectorFactory<?> collectorFactory;
protected Similarity.SimWeight stats;
- public SpanWeight(SpanQuery query, IndexSearcher searcher, SpanCollector collector) throws IOException {
+ public SpanWeight(SpanQuery query, IndexSearcher searcher, SpanCollectorFactory<?> collectorFactory) throws IOException {
super(query);
this.similarity = searcher.getSimilarity();
this.query = query;
- this.collector = collector;
+ this.collectorFactory = collectorFactory;
termContexts = new HashMap<>();
TreeSet<Term> terms = new TreeSet<>();
@@ -73,6 +73,13 @@ public class SpanWeight extends Weight {
}
}
+ /**
+ * @return the SpanCollectorFactory associated with this SpanWeight
+ */
+ public SpanCollectorFactory<?> getSpanCollectorFactory() {
+ return collectorFactory;
+ }
+
@Override
public void extractTerms(Set<Term> terms) {
query.extractTerms(terms);
@@ -99,7 +106,7 @@ public class SpanWeight extends Weight {
if (terms != null && terms.hasPositions() == false) {
throw new IllegalStateException("field \"" + query.getField() + "\" was indexed without position data; cannot run SpanQuery (query=" + query + ")");
}
- Spans spans = query.getSpans(context, acceptDocs, termContexts, collector);
+ Spans spans = query.getSpans(context, acceptDocs, termContexts, collectorFactory.newCollector());
return (spans == null) ? null : new SpanScorer(spans, this, similarity.simScorer(stats, context));
}
Modified: lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java?rev=1680514&r1=1680513&r2=1680514&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java (original)
+++ lucene/dev/branches/branch_5x/lucene/core/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java Wed May 20 10:20:26 2015
@@ -15,9 +15,12 @@ package org.apache.lucene.search.payload
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import java.io.IOException;
-import org.apache.lucene.analysis.*;
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.MockTokenizer;
+import org.apache.lucene.analysis.TokenFilter;
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.tokenattributes.PayloadAttribute;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
@@ -27,14 +30,14 @@ import org.apache.lucene.index.RandomInd
import org.apache.lucene.index.Term;
import org.apache.lucene.search.CollectionStatistics;
import org.apache.lucene.search.Explanation;
+import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.QueryUtils;
import org.apache.lucene.search.ScoreDoc;
-import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.TermStatistics;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.similarities.DefaultSimilarity;
-import org.apache.lucene.search.spans.SpanQuery;
import org.apache.lucene.search.spans.SpanNearQuery;
+import org.apache.lucene.search.spans.SpanQuery;
import org.apache.lucene.search.spans.SpanTermQuery;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
@@ -43,6 +46,7 @@ import org.apache.lucene.util.LuceneTest
import org.junit.AfterClass;
import org.junit.BeforeClass;
+import java.io.IOException;
public class TestPayloadNearQuery extends LuceneTestCase {
private static IndexSearcher searcher;
Modified: lucene/dev/branches/branch_5x/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java?rev=1680514&r1=1680513&r2=1680514&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java (original)
+++ lucene/dev/branches/branch_5x/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java Wed May 20 10:20:26 2015
@@ -48,13 +48,13 @@ import org.apache.lucene.search.TermQuer
import org.apache.lucene.search.join.ToChildBlockJoinQuery;
import org.apache.lucene.search.join.ToParentBlockJoinQuery;
import org.apache.lucene.search.spans.FieldMaskingSpanQuery;
-import org.apache.lucene.search.spans.SpanCollector;
import org.apache.lucene.search.spans.SpanFirstQuery;
import org.apache.lucene.search.spans.SpanNearQuery;
import org.apache.lucene.search.spans.SpanNotQuery;
import org.apache.lucene.search.spans.SpanOrQuery;
import org.apache.lucene.search.spans.SpanQuery;
import org.apache.lucene.search.spans.SpanTermQuery;
+import org.apache.lucene.search.spans.SpanWeight;
import org.apache.lucene.search.spans.Spans;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.IOUtils;
@@ -303,12 +303,13 @@ public class WeightedSpanTermExtractor {
LeafReaderContext context = getLeafContext();
Map<Term,TermContext> termContexts = new HashMap<>();
TreeSet<Term> extractedTerms = new TreeSet<>();
- searcher.createNormalizedWeight(q, false).extractTerms(extractedTerms);
+ SpanWeight w = (SpanWeight) searcher.createNormalizedWeight(q, false);
+ w.extractTerms(extractedTerms);
for (Term term : extractedTerms) {
termContexts.put(term, TermContext.build(context, term));
}
Bits acceptDocs = context.reader().getLiveDocs();
- final Spans spans = q.getSpans(context, acceptDocs, termContexts, SpanCollector.NO_OP);
+ final Spans spans = q.getSpans(context, acceptDocs, termContexts, w.getSpanCollectorFactory().newCollector());
if (spans == null) {
return;
}