public Spans getSpans(final IndexReader reader) throws IOException { return new Spans() { private Spans spans = match.getSpans(reader); public boolean next() throws IOException { while (spans.next()) { // scan to next match if (end() <= end) return true; } return false; } public boolean skipTo(int target) throws IOException { if (!spans.skipTo(target)) return false; if (spans.end() <= end) // there is a match return true; return next(); // scan to next match } public int doc() { return spans.doc(); } public int start() { return spans.start(); } public int end() { return spans.end(); } public String toString() { return "spans(" + SpanFirstQuery.this.toString() + ")"; } }; }
public Spans getSpans(final IndexReader reader) throws IOException { if (clauses.size() == 0) // optimize 0-clause case return new SpanOrQuery(getClauses()).getSpans(reader); if (clauses.size() == 1) // optimize 1-clause case return ((SpanQuery)clauses.get(0)).getSpans(reader); return new NearSpans(this, reader); }
public Scorer scorer(IndexReader reader) throws IOException { return new SpanScorer(query.getSpans(reader), this, similarity, reader.norms(query.getField())); }
public Scorer scorer(IndexReader reader) throws IOException { return new SpanScorer(query.getSpans(reader), this, similarity, reader.norms(query.getField())); }
public Scorer scorer(IndexReader reader) throws IOException { return new BoostingSpanScorer((TermSpans)query.getSpans(reader), this, similarity, reader.norms(query.getField())); }
public Scorer scorer(IndexReader reader) throws IOException { return new BoostingSpanScorer((TermSpans) query.getSpans(reader), this, similarity, reader.norms(query.getField())); }
public Scorer scorer(IndexReader reader) throws IOException { return new BoostingSpanScorer((TermSpans)query.getSpans(reader), this, similarity, reader.norms(query.getField())); }
public Scorer scorer(IndexReader reader) throws IOException { return new SpanScorer(query.getSpans(reader), this, query.getSimilarity(searcher), reader.norms(query.getField())); }
public NearSpans(SpanNearQuery query, IndexReader reader) throws IOException { this.query = query; this.slop = query.getSlop(); this.inOrder = query.isInOrder(); SpanQuery[] clauses = query.getClauses(); // initialize spans & list queue = new CellQueue(clauses.length); for (int i = 0; i < clauses.length; i++) { SpansCell cell = // construct clause spans new SpansCell(clauses[i].getSpans(reader), i); ordered.add(cell); // add to ordered } }
private boolean moreInclude = true; private Spans excludeSpans = exclude.getSpans(reader); private boolean moreExclude = excludeSpans.next();
private boolean moreInclude = true; private Spans excludeSpans = exclude.getSpans(reader); private boolean moreExclude = excludeSpans.next();
public SpanFilterResult bitSpans(IndexReader reader) throws IOException { final OpenBitSet bits = new OpenBitSet(reader.maxDoc()); Spans spans = query.getSpans(reader); List tmp = new ArrayList(20); int currentDoc = -1; SpanFilterResult.PositionInfo currentInfo = null; while (spans.next()) { int doc = spans.doc(); bits.set(doc); if (currentDoc != doc) { currentInfo = new SpanFilterResult.PositionInfo(doc); tmp.add(currentInfo); currentDoc = doc; } currentInfo.addPosition(spans.start(), spans.end()); } return new SpanFilterResult(bits, tmp); }
public SpanFilterResult bitSpans(IndexReader reader) throws IOException { final OpenBitSet bits = new OpenBitSet(reader.maxDoc()); Spans spans = query.getSpans(reader); List tmp = new ArrayList(20); int currentDoc = -1; SpanFilterResult.PositionInfo currentInfo = null; while (spans.next()) { int doc = spans.doc(); bits.set(doc); if (currentDoc != doc) { currentInfo = new SpanFilterResult.PositionInfo(doc); tmp.add(currentInfo); currentDoc = doc; } currentInfo.addPosition(spans.start(), spans.end()); } return new SpanFilterResult(bits, tmp); }