Lucene.Net.Facet.FacetsCollector.DoSearch C# (CSharp) Method

DoSearch() private static method

private static DoSearch ( IndexSearcher searcher, Lucene.Net.Search.ScoreDoc after, Query q, Filter filter, int n, Lucene.Net.Search.Sort sort, bool doDocScores, bool doMaxScore, Collector fc ) : Lucene.Net.Search.TopDocs
searcher Lucene.Net.Search.IndexSearcher
after Lucene.Net.Search.ScoreDoc
q Lucene.Net.Search.Query
filter Lucene.Net.Search.Filter
n int
sort Lucene.Net.Search.Sort
doDocScores bool
doMaxScore bool
fc Lucene.Net.Search.Collector
return Lucene.Net.Search.TopDocs
        private static TopDocs DoSearch(IndexSearcher searcher, ScoreDoc after, Query q, Filter filter, int n, Sort sort, bool doDocScores, bool doMaxScore, Collector fc)
        {

            if (filter != null)
            {
                q = new FilteredQuery(q, filter);
            }

            int limit = searcher.IndexReader.MaxDoc;
            if (limit == 0)
            {
                limit = 1;
            }
            n = Math.Min(n, limit);

            if (after != null && after.Doc >= limit)
            {
                throw new System.ArgumentException("after.doc exceeds the number of documents in the reader: after.doc=" + after.Doc + " limit=" + limit);
            }


            if (sort != null)
            {
                if (after != null && !(after is FieldDoc))
                {
                    // TODO: if we fix type safety of TopFieldDocs we can
                    // remove this
                    throw new System.ArgumentException("after must be a FieldDoc; got " + after);
                }
                const bool fillFields = true;
                var hitsCollector = TopFieldCollector.Create(sort, n, (FieldDoc)after, fillFields, doDocScores, doMaxScore, false);
                searcher.Search(q, MultiCollector.Wrap(hitsCollector, fc));
                return hitsCollector.TopDocs();
            }
            else
            {
                // TODO: can we pass the right boolean for
                // in-order instead of hardwired to false...?  we'd
                // need access to the protected IS.search methods
                // taking Weight... could use reflection...
                var hitsCollector = TopScoreDocCollector.Create(n, after, false);
                searcher.Search(q, MultiCollector.Wrap(hitsCollector, fc));
                return hitsCollector.TopDocs();
            }
        }
    }