// inherit javadoc public override TopFieldDocs Search(Weight weight, Filter filter, int nDocs, Sort sort) { Scorer scorer = weight.Scorer(reader); if (scorer == null) { return(new TopFieldDocs(0, new ScoreDoc[0], sort.fields, System.Single.NegativeInfinity)); } System.Collections.BitArray bits = filter != null?filter.Bits(reader) : null; FieldSortedHitQueue hq = new FieldSortedHitQueue(reader, sort.fields, nDocs); int[] totalHits = new int[1]; scorer.Score(new AnonymousClassHitCollector1(bits, totalHits, hq, this)); ScoreDoc[] scoreDocs = new ScoreDoc[hq.Size()]; for (int i = hq.Size() - 1; i >= 0; i--) { // put docs in array scoreDocs[i] = hq.FillFields((FieldDoc)hq.Pop()); } return(new TopFieldDocs(totalHits[0], scoreDocs, hq.GetFields(), hq.GetMaxScore())); }
/// <summary> Note that the underlying IndexReader is not closed, if /// IndexSearcher was constructed with IndexSearcher(IndexReader r). /// If the IndexReader was supplied implicitly by specifying a directory, then /// the IndexReader gets closed. /// </summary> public override void Close() { if (closeReader) { FieldSortedHitQueue.Close(reader); Lucene.Net.Search.FieldCache_Fields.DEFAULT.Close(reader); reader.Close(); } }
// javadoc inherited public override TopDocs TopDocs() { FieldSortedHitQueue fshq = (FieldSortedHitQueue)hq; ScoreDoc[] scoreDocs = new ScoreDoc[fshq.Size()]; for (int i = fshq.Size() - 1; i >= 0; i--) { // put docs in array scoreDocs[i] = fshq.FillFields((FieldDoc)fshq.Pop()); } return(new TopFieldDocs(totalHits, scoreDocs, fshq.GetFields(), fshq.GetMaxScore())); }
// inherit javadoc public override TopFieldDocs Search(Weight weight, Filter filter, int nDocs, Sort sort) { Scorer scorer = weight.Scorer(reader); if (scorer == null) return new TopFieldDocs(0, new ScoreDoc[0], sort.fields, System.Single.NegativeInfinity); System.Collections.BitArray bits = filter != null ? filter.Bits(reader) : null; FieldSortedHitQueue hq = new FieldSortedHitQueue(reader, sort.fields, nDocs); int[] totalHits = new int[1]; scorer.Score(new AnonymousClassHitCollector1(bits, totalHits, hq, this)); ScoreDoc[] scoreDocs = new ScoreDoc[hq.Size()]; for (int i = hq.Size() - 1; i >= 0; i--) // put docs in array scoreDocs[i] = hq.FillFields((FieldDoc) hq.Pop()); return new TopFieldDocs(totalHits[0], scoreDocs, hq.GetFields(), hq.GetMaxScore()); }