Ejemplo n.º 1
0
        // 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()));
        }
Ejemplo n.º 2
0
        // 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()));
        }
Ejemplo n.º 3
0
		// 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());
		}