Lucene.Net.Search.MultiTermQuery.IncTotalNumberOfTerms C# (CSharp) Method

IncTotalNumberOfTerms() protected method

protected IncTotalNumberOfTerms ( int inc ) : void
inc int
return void
		protected internal virtual void  IncTotalNumberOfTerms(int inc)
		{
			numberOfTerms += inc;
		}
		

Usage Example

コード例 #1
0
            public override Query Rewrite(IndexReader reader, MultiTermQuery query, IState state)
            {
                // Get the enum and start visiting terms.  If we
                // exhaust the enum before hitting either of the
                // cutoffs, we use ConstantBooleanQueryRewrite; else,
                // ConstantFilterRewrite:
                ICollection <Term> pendingTerms = new List <Term>();
                int docCountCutoff = (int)((docCountPercent / 100.0) * reader.MaxDoc);
                int termCountLimit = System.Math.Min(BooleanQuery.MaxClauseCount, termCountCutoff);
                int docVisitCount  = 0;

                FilteredTermEnum enumerator = query.GetEnum(reader, state);

                try
                {
                    while (true)
                    {
                        Term t = enumerator.Term;
                        if (t != null)
                        {
                            pendingTerms.Add(t);
                            // Loading the TermInfo from the terms dict here
                            // should not be costly, because 1) the
                            // query/filter will load the TermInfo when it
                            // runs, and 2) the terms dict has a cache:
                            docVisitCount += reader.DocFreq(t, state);
                        }

                        if (pendingTerms.Count >= termCountLimit || docVisitCount >= docCountCutoff)
                        {
                            // Too many terms -- make a filter.
                            Query result = new ConstantScoreQuery(new MultiTermQueryWrapperFilter <MultiTermQuery>(query));
                            result.Boost = query.Boost;
                            return(result);
                        }
                        else if (!enumerator.Next(state))
                        {
                            // Enumeration is done, and we hit a small
                            // enough number of terms & docs -- just make a
                            // BooleanQuery, now
                            BooleanQuery bq = new BooleanQuery(true);
                            foreach (Term term in pendingTerms)
                            {
                                TermQuery tq = new TermQuery(term);
                                bq.Add(tq, Occur.SHOULD);
                            }
                            // Strip scores
                            Query result = new ConstantScoreQuery(new QueryWrapperFilter(bq));
                            result.Boost = query.Boost;
                            query.IncTotalNumberOfTerms(pendingTerms.Count);
                            return(result);
                        }
                    }
                }
                finally
                {
                    enumerator.Close();
                }
            }
All Usage Examples Of Lucene.Net.Search.MultiTermQuery::IncTotalNumberOfTerms