Ahem, sorry. I quoted an old answer of mine, but HitCollector has been gone for a while now... This is the modern version:
final ArrayList<Document> docs = new ArrayList<Document>(); searcher.search( query, new Collector() { private int docBase; *// ignore scorer* public void setScorer(Scorer scorer) { } *// accept docs out of order (for a BitSet it doesn't matter)* public boolean acceptsDocsOutOfOrder() { return true; } public void collect(int doc) { doc.add(searcher.doc(doc + docBase)); } public void setNextReader(IndexReader reader, int docBase) { this.docBase = docBase; } });