Hi there, I have my own Collector implementation which I use for searching, something like this skeleton:
public class LightweightHitCollector extends Collector { private int maxHits; private int numHits; private int docBase; private boolean collecting; private Scorer scorer; private int[] hits; public LightweightHitCollector(int maxHits) { this.numHits = 0; this.maxHits = maxHits; this.collecting = true; hits = new int[maxHits]; for (int i=0; i < maxHits; i++) { hits[i] = -1; } } public boolean acceptsDocsOutOfOrder() { return true; } public void setScorer(Scorer scorer) { this.scorer = scorer; } public void setNextReader(IndexReader reader, int docBase) { this.docBase = docBase; } public void collect(int docID) { if (! collecting) { return; } hits[numHits] = docBase + docID; if (++numHits == maxHits) { collecting = false; } } public int[] getHits() { return hits; } } Question: is there a way to prevent collect() being called after it has collected its quota (i.e. when collecting becomes false)? On large datasets this would save a lot of time. In this scenario I have no need for sort / ordering etc. Thanks. - Chris