public override TermStatistics TermStatistics(Term term, TermContext context) { Debug.Assert(term != null); long docFreq = 0; long totalTermFreq = 0; for (int nodeID = 0; nodeID < NodeVersions.Length; nodeID++) { TermStatistics subStats; if (nodeID == MyNodeID) { subStats = base.TermStatistics(term, context); } else { TermAndShardVersion key = new TermAndShardVersion(nodeID, NodeVersions[nodeID], term); subStats = OuterInstance.TermStatsCache[key]; // We pre-cached during rewrite so all terms // better be here... Debug.Assert(subStats != null); } long nodeDocFreq = subStats.DocFreq(); if (docFreq >= 0 && nodeDocFreq >= 0) { docFreq += nodeDocFreq; } else { docFreq = -1; } long nodeTotalTermFreq = subStats.TotalTermFreq(); if (totalTermFreq >= 0 && nodeTotalTermFreq >= 0) { totalTermFreq += nodeTotalTermFreq; } else { totalTermFreq = -1; } } return new TermStatistics(term.Bytes, docFreq, totalTermFreq); }
protected internal override void AddClause(BooleanQuery topLevel, Term term, int docFreq, float boost, TermContext states) { Query q = new ConstantScoreQuery(new TermQuery(term, states)); q.Boost = boost; topLevel.Add(q, BooleanClause.Occur.SHOULD); }
protected internal override void AddClause(BooleanQuery topLevel, Term term, int docCount, float boost, TermContext states) { TermQuery tq = new TermQuery(term, states); tq.Boost = boost; topLevel.Add(tq, BooleanClause.Occur.SHOULD); }
/// <summary> /// Expert: constructs a TermQuery that will use the /// provided docFreq instead of looking up the docFreq /// against the searcher. /// </summary> public TermQuery(Term t, TermContext states) { Debug.Assert(states != null); _term = t; DocFreq = states.DocFreq; PerReaderTermState = states; }
/// <summary> /// Expert: constructs a TermQuery that will use the /// provided docFreq instead of looking up the docFreq /// against the searcher. /// </summary> public TermQuery(Term t, int docFreq) { _term = t; this.DocFreq = docFreq; PerReaderTermState = null; }
public TermWeight(TermQuery outerInstance, IndexSearcher searcher, TermContext termStates) { this.OuterInstance = outerInstance; Debug.Assert(termStates != null, "TermContext must not be null"); this.TermStates = termStates; this.Similarity = searcher.Similarity; this.Stats = Similarity.ComputeWeight(outerInstance.Boost, searcher.CollectionStatistics(outerInstance._term.Field), searcher.TermStatistics(outerInstance._term, termStates)); }