@Override public final int advance(int target) throws IOException { int doc = in.advance(target); while (doc != NO_MORE_DOCS) { if (twoPhaseCurrentDocMatches()) { break; } doc = in.nextDoc(); } return doc; }
return MatchesUtils.forField(field, () -> { Spans spans = getSpans(context, Postings.OFFSETS); if (spans == null || spans.advance(doc) != doc) { return null;
excludeSpans.advance(doc);
@Override public int advance(int target) throws IOException { return in.advance(target); }
@Override public int advance(int target) throws IOException { return in.advance(target); }
@Override public int advance(int target) throws IOException { return in.advance(target); }
@Override public int advance(int target) throws IOException { return source.advance(target); }
@Override public int advance(int target) throws IOException { return in.advance(target); }
@Override public final int advance(int target) throws IOException { int doc = in.advance(target); while (doc != NO_MORE_DOCS) { if (twoPhaseCurrentDocMatches()) { break; } doc = in.nextDoc(); } return doc; }
@Override public final int advance(int target) throws IOException { int doc = in.advance(target); while (doc != NO_MORE_DOCS) { if (twoPhaseCurrentDocMatches()) { break; } doc = in.nextDoc(); } return doc; }
@Override public final int advance(int target) throws IOException { int doc = in.advance(target); while (doc != NO_MORE_DOCS) { if (twoPhaseCurrentDocMatches()) { break; } doc = in.nextDoc(); } return doc; }
@Override public Explanation explain(LeafReaderContext context, int doc) throws IOException { SpanScorer scorer = scorer(context); if (scorer != null) { int newDoc = scorer.iterator().advance(doc); if (newDoc == doc) { float freq = scorer.sloppyFreq(); SimScorer docScorer = similarity.simScorer(simWeight, context); Explanation freqExplanation = Explanation.match(freq, "phraseFreq=" + freq); Explanation scoreExplanation = docScorer.explain(doc, freqExplanation); return Explanation.match(scoreExplanation.getValue(), "weight("+getQuery()+" in "+doc+") [" + similarity.getClass().getSimpleName() + "], result of:", scoreExplanation); } } return Explanation.noMatch("no matching term"); } }
@Override public Explanation explain(LeafReaderContext context, int doc) throws IOException { SpanScorer scorer = scorer(context); if (scorer != null) { int newDoc = scorer.iterator().advance(doc); if (newDoc == doc) { float freq = scorer.sloppyFreq(); SimScorer docScorer = similarity.simScorer(simWeight, context); Explanation freqExplanation = Explanation.match(freq, "phraseFreq=" + freq); Explanation scoreExplanation = docScorer.explain(doc, freqExplanation); return Explanation.match(scoreExplanation.getValue(), "weight("+getQuery()+" in "+doc+") [" + similarity.getClass().getSimpleName() + "], result of:", scoreExplanation); } } return Explanation.noMatch("no matching term"); } }
/** * Collect all Spans extracted from a Scorer using a SpanCollector * @param scorer the scorer to extract Spans from * @param collector the SpanCollector * @param errorOnNoSpans if true, throw an error if no Spans can be extracted * from the Scorer or any of its children * @throws IOException on error */ public static void collect(Scorer scorer, SpanCollector collector, boolean errorOnNoSpans) throws IOException { List<Spans> allSpans = getSpans(scorer, errorOnNoSpans); int doc = scorer.docID(); for (Spans spans : allSpans) { int spanDoc = spans.docID(); // if the Scorer advances lazily, then not all of its subspans may be on // the correct document if (spanDoc == doc || (spanDoc < doc && spans.advance(doc) == doc)) { while (spans.nextStartPosition() != Spans.NO_MORE_POSITIONS) { if (spans.startPosition() != -1) spans.collect(collector); } } } } }
@Override public Explanation explain(LeafReaderContext context, int doc) throws IOException { PayloadSpanScorer scorer = scorer(context); if (scorer == null || scorer.iterator().advance(doc) != doc) return Explanation.noMatch("No match"); scorer.freq(); // force freq calculation Explanation payloadExpl = scorer.getPayloadExplanation(); if (includeSpanScore) { SpanWeight innerWeight = ((PayloadSpanWeight) scorer.getWeight()).innerWeight; Explanation innerExpl = innerWeight.explain(context, doc); return Explanation.match(scorer.scoreCurrentDoc(), "PayloadSpanQuery, product of:", innerExpl, payloadExpl); } return scorer.getPayloadExplanation(); } }
@Override public Explanation explain(LeafReaderContext context, int doc) throws IOException { PayloadSpanScorer scorer = scorer(context); if (scorer == null || scorer.iterator().advance(doc) != doc) return Explanation.noMatch("No match"); scorer.freq(); // force freq calculation Explanation payloadExpl = scorer.getPayloadExplanation(); if (includeSpanScore) { SpanWeight innerWeight = ((PayloadSpanWeight) scorer.getWeight()).innerWeight; Explanation innerExpl = innerWeight.explain(context, doc); return Explanation.match(scorer.scoreCurrentDoc(), "PayloadSpanQuery, product of:", innerExpl, payloadExpl); } return scorer.getPayloadExplanation(); } }
@Override public Explanation explain(LeafReaderContext context, int doc) throws IOException { PayloadNearSpanScorer scorer = (PayloadNearSpanScorer) scorer(context); if (scorer != null) { int newDoc = scorer.iterator().advance(doc); if (newDoc == doc) { float freq = scorer.freq(); Explanation freqExplanation = Explanation.match(freq, "phraseFreq=" + freq); SimScorer docScorer = similarity.simScorer(simWeight, context); Explanation scoreExplanation = docScorer.explain(doc, freqExplanation); Explanation expl = Explanation.match( scoreExplanation.getValue(), "weight("+getQuery()+" in "+doc+") [" + similarity.getClass().getSimpleName() + "], result of:", scoreExplanation); String field = ((SpanQuery)getQuery()).getField(); // now the payloads part Explanation payloadExpl = function.explain(doc, field, scorer.spans.payloadsSeen, scorer.spans.payloadScore); // combined return Explanation.match( expl.getValue() * payloadExpl.getValue(), "PayloadNearQuery, product of:", expl, payloadExpl); } } return Explanation.noMatch("no matching term"); } }
@Override public Explanation explain(LeafReaderContext context, int doc) throws IOException { PayloadNearSpanScorer scorer = (PayloadNearSpanScorer) scorer(context); if (scorer != null) { int newDoc = scorer.iterator().advance(doc); if (newDoc == doc) { float freq = scorer.freq(); Explanation freqExplanation = Explanation.match(freq, "phraseFreq=" + freq); SimScorer docScorer = similarity.simScorer(simWeight, context); Explanation scoreExplanation = docScorer.explain(doc, freqExplanation); Explanation expl = Explanation.match( scoreExplanation.getValue(), "weight("+getQuery()+" in "+doc+") [" + similarity.getClass().getSimpleName() + "], result of:", scoreExplanation); String field = ((SpanQuery)getQuery()).getField(); // now the payloads part Explanation payloadExpl = function.explain(doc, field, scorer.spans.payloadsSeen, scorer.spans.payloadScore); // combined return Explanation.match( expl.getValue() * payloadExpl.getValue(), "PayloadNearQuery, product of:", expl, payloadExpl); } } return Explanation.noMatch("no matching term"); } }
PayloadTermSpanScorer scorer = scorer(context); if (scorer != null) { int newDoc = scorer.iterator().advance(doc); if (newDoc == doc) { float freq = scorer.sloppyFreq();
PayloadTermSpanScorer scorer = scorer(context); if (scorer != null) { int newDoc = scorer.iterator().advance(doc); if (newDoc == doc) { float freq = scorer.sloppyFreq();