@Override public final TwoPhaseIterator twoPhaseIterator() { return in.twoPhaseIterator(); } }
@Override public TwoPhaseIterator twoPhaseIterator() { return reqScorer.twoPhaseIterator(); }
/** Sole constructor. */ public DefaultBulkScorer(Scorer scorer) { if (scorer == null) { throw new NullPointerException(); } this.scorer = scorer; this.iterator = scorer.iterator(); this.twoPhase = scorer.twoPhaseIterator(); }
/** Construct a <code>ReqExclScorer</code>. * @param reqScorer The scorer that must match, except where * @param exclScorer indicates exclusion. */ public ReqExclScorer(Scorer reqScorer, Scorer exclScorer) { super(reqScorer.weight); this.reqScorer = reqScorer; reqTwoPhaseIterator = reqScorer.twoPhaseIterator(); if (reqTwoPhaseIterator == null) { reqApproximation = reqScorer.iterator(); } else { reqApproximation = reqTwoPhaseIterator.approximation(); } exclTwoPhaseIterator = exclScorer.twoPhaseIterator(); if (exclTwoPhaseIterator == null) { exclApproximation = exclScorer.iterator(); } else { exclApproximation = exclTwoPhaseIterator.approximation(); } }
/** Adds the scorer, possibly splitting up into two phases or collapsing if it is another conjunction */ private static void addScorer(Scorer scorer, List<DocIdSetIterator> allIterators, List<TwoPhaseIterator> twoPhaseIterators) { TwoPhaseIterator twoPhaseIter = scorer.twoPhaseIterator(); if (twoPhaseIter != null) { addTwoPhaseIterator(twoPhaseIter, allIterators, twoPhaseIterators); } else { // no approximation support, use the iterator as-is addIterator(scorer.iterator(), allIterators, twoPhaseIterators); } }
public DisiWrapper(Scorer scorer) { this.scorer = scorer; this.spans = null; this.iterator = scorer.iterator(); this.cost = iterator.cost(); this.doc = -1; this.twoPhaseView = scorer.twoPhaseIterator(); if (twoPhaseView != null) { approximation = twoPhaseView.approximation(); matchCost = twoPhaseView.matchCost(); } else { approximation = iterator; matchCost = 0f; } }
? prohibited.get(0) : new DisjunctionSumScorer(this, prohibited, false); if (prohibitedScorer.twoPhaseIterator() != null) {
/** * Returns {@link Matches} for a specific document, or {@code null} if the document * does not match the parent query * * A query match that contains no position information (for example, a Point or * DocValues query) will return {@link MatchesUtils#MATCH_WITH_NO_TERMS} * * @param context the reader's context to create the {@link Matches} for * @param doc the document's id relative to the given context's reader * @lucene.experimental */ public Matches matches(LeafReaderContext context, int doc) throws IOException { Scorer scorer = scorer(context); if (scorer == null) { return null; } final TwoPhaseIterator twoPhase = scorer.twoPhaseIterator(); if (twoPhase == null) { if (scorer.iterator().advance(doc) != doc) { return null; } } else { if (twoPhase.approximation().advance(doc) != doc || twoPhase.matches() == false) { return null; } } return MatchesUtils.MATCH_WITH_NO_TERMS; }
@Override public Explanation explain(LeafReaderContext context, int doc) throws IOException { final Scorer s = scorer(context); final boolean exists; if (s == null) { exists = false; } else { final TwoPhaseIterator twoPhase = s.twoPhaseIterator(); if (twoPhase == null) { exists = s.iterator().advance(doc) == doc; } else { exists = twoPhase.approximation().advance(doc) == doc && twoPhase.matches(); } } if (exists) { return Explanation.match( score, getQuery().toString() + (score == 1f ? "" : "^" + score)); } else { return Explanation.noMatch(getQuery().toString() + " doesn't match id " + doc); } }
@Override public TwoPhaseIterator twoPhaseIterator() { if (isConstantScoreQuery) { return scorer.twoPhaseIterator(); final TwoPhaseIterator in = scorer.twoPhaseIterator(); if (in == null) { return null;
@Override public TwoPhaseIterator twoPhaseIterator() { final TwoPhaseIterator inTwoPhase = this.in.twoPhaseIterator(); final DocIdSetIterator approximation = inTwoPhase == null ? in.iterator() : inTwoPhase.approximation(); return new TwoPhaseIterator(approximation) { @Override public boolean matches() throws IOException { // we need to check the two-phase iterator first // otherwise calling score() is illegal if (inTwoPhase != null && inTwoPhase.matches() == false) { return false; } return in.score() >= minScore; } @Override public float matchCost() { return 1000f // random constant for the score computation + (inTwoPhase == null ? 0 : inTwoPhase.matchCost()); } }; } }
final TwoPhaseIterator twoPhase = scorer.twoPhaseIterator(); final DocIdSetIterator iterator; if (twoPhase == null) {
@Override public final TwoPhaseIterator twoPhaseIterator() { return in.twoPhaseIterator(); } }
@Override public final TwoPhaseIterator twoPhaseIterator() { return in.twoPhaseIterator(); } }
/** Sole constructor. */ public DefaultBulkScorer(Scorer scorer) { if (scorer == null) { throw new NullPointerException(); } this.scorer = scorer; this.iterator = scorer.iterator(); this.twoPhase = scorer.twoPhaseIterator(); }
/** Sole constructor. */ public DefaultBulkScorer(Scorer scorer) { if (scorer == null) { throw new NullPointerException(); } this.scorer = scorer; this.iterator = scorer.iterator(); this.twoPhase = scorer.twoPhaseIterator(); }
DocsAndCost(Scorer scorer, Collector sidewaysCollector) { final TwoPhaseIterator twoPhase = scorer.twoPhaseIterator(); if (twoPhase == null) { this.approximation = scorer.iterator(); this.twoPhase = null; } else { this.approximation = twoPhase.approximation(); this.twoPhase = twoPhase; } this.sidewaysCollector = sidewaysCollector; } }
DocsAndCost(Scorer scorer, Collector sidewaysCollector) { final TwoPhaseIterator twoPhase = scorer.twoPhaseIterator(); if (twoPhase == null) { this.approximation = scorer.iterator(); this.twoPhase = null; } else { this.approximation = twoPhase.approximation(); this.twoPhase = twoPhase; } this.sidewaysCollector = sidewaysCollector; } }
/** Adds the scorer, possibly splitting up into two phases or collapsing if it is another conjunction */ private static void addScorer(Scorer scorer, List<DocIdSetIterator> allIterators, List<TwoPhaseIterator> twoPhaseIterators) { TwoPhaseIterator twoPhaseIter = scorer.twoPhaseIterator(); if (twoPhaseIter != null) { addTwoPhaseIterator(twoPhaseIter, allIterators, twoPhaseIterators); } else { // no approximation support, use the iterator as-is addIterator(scorer.iterator(), allIterators, twoPhaseIterators); } }
/** Adds the scorer, possibly splitting up into two phases or collapsing if it is another conjunction */ private static void addScorer(Scorer scorer, List<DocIdSetIterator> allIterators, List<TwoPhaseIterator> twoPhaseIterators) { TwoPhaseIterator twoPhaseIter = scorer.twoPhaseIterator(); if (twoPhaseIter != null) { addTwoPhaseIterator(twoPhaseIter, allIterators, twoPhaseIterators); } else { // no approximation support, use the iterator as-is addIterator(scorer.iterator(), allIterators, twoPhaseIterators); } }