Example usage for org.apache.lucene.search CollectorManager CollectorManager

List of usage examples for org.apache.lucene.search CollectorManager CollectorManager

Introduction

In this page you can find the example usage for org.apache.lucene.search CollectorManager CollectorManager.

Prototype

CollectorManager

Source Link

Usage

From source file:com.lucene.MyIndexSearcher.java

License:Apache License

public MyTopDocs searchAfter(Query query, int numHits) throws IOException {

    final int limit = Math.max(1, reader.maxDoc());
    numHits = Math.min(numHits, limit);

    final int cappedNumHits = Math.min(numHits, limit);

    final CollectorManager<MyTopScoreDocCollector, MyTopDocs> manager = new CollectorManager<MyTopScoreDocCollector, MyTopDocs>() {

        @Override//from   www  .ja  v  a  2  s .c  o  m
        public MyTopScoreDocCollector newCollector() throws IOException {
            MyTopScoreDocCollector collector = MyTopScoreDocCollector.create(cappedNumHits);
            return collector;
        }

        @Override
        public MyTopDocs reduce(Collection<MyTopScoreDocCollector> collectors) throws IOException {
            final MyTopDocs[] topDocs = new MyTopDocs[collectors.size()];
            int i = 0;
            for (MyTopScoreDocCollector collector : collectors) {
                topDocs[i++] = collector.topDocs1();
            }
            MyTopDocs top = MyTopDocs.merge1(0, cappedNumHits, topDocs, true);
            return top;
        }
    };
    MyTopDocs result = search(query, manager);
    return result;
}