Lucene.Net.Search.Weight.Scorer C# (CSharp) Method

Scorer() public abstract method

Returns a Scorer which scores documents in/out-of order according to scoreDocsInOrder.

NOTE: even if scoreDocsInOrder is false, it is recommended to check whether the returned Scorer indeed scores documents out of order (i.e., call ScoresDocsOutOfOrder()), as some Scorer implementations will always return documents in-order.
NOTE: null can be returned if no documents will be scored by this query.

public abstract Scorer ( Lucene.Net.Index.IndexReader reader, bool scoreDocsInOrder, bool topScorer ) : Lucene.Net.Search.Scorer
reader Lucene.Net.Index.IndexReader /// the for which to return the . ///
scoreDocsInOrder bool specifies whether in-order scoring of documents is required. Note /// that if set to false (i.e., out-of-order scoring is required), /// this method can return whatever scoring mode it supports, as every /// in-order scorer is also an out-of-order one. However, an /// out-of-order scorer may not support /// and/or , therefore it is recommended to /// request an in-order scorer if use of these methods is required. ///
topScorer bool /// if true, will be called; if false, /// and/or will /// be called. ///
return Lucene.Net.Search.Scorer
		public abstract Scorer Scorer(IndexReader reader, bool scoreDocsInOrder, bool topScorer);

Usage Example

        private void SearchWithFilter(IndexReader reader, Weight weight, Filter filter, Collector collector)
        {
            DocIdSet docIdSet = filter.GetDocIdSet(reader);
            if (docIdSet == null)
                return;
            Scorer scorer = weight.Scorer(reader, true, false);
            if (scorer == null)
                return;
            scorer.DocID();

            DocIdSetIterator docIdSetIterator = docIdSet.Iterator();
            if (docIdSetIterator == null)
                return;
            int target = docIdSetIterator.NextDoc();
            int num = scorer.Advance(target);
            collector.SetScorer(scorer);
            while (true)
            {
                while (num != target)
                {
                    if (num > target)
                        target = docIdSetIterator.Advance(num);
                    else
                        num = scorer.Advance(target);
                }
                if (num != DocIdSetIterator.NO_MORE_DOCS && !((GroupCollector)collector).GroupLimitReached)
                {
                    collector.Collect(num);
                    target = docIdSetIterator.NextDoc();
                    num = scorer.Advance(target);
                }
                else
                    break;
            }
        }
All Usage Examples Of Lucene.Net.Search.Weight::Scorer