public override Explanation Explain(int doc, Explanation freq) { Explanation boostExplanation = new Explanation(Values.Get(doc), "indexDocValue(" + OuterInstance.BoostField + ")"); Explanation simExplanation = Sub.Explain(doc, freq); Explanation expl = new Explanation(boostExplanation.Value * simExplanation.Value, "product of:"); expl.AddDetail(boostExplanation); expl.AddDetail(simExplanation); return(expl); }
public override Explanation Explain(AtomicReaderContext context, int doc) { Scorer scorer = GetScorer(context, context.AtomicReader.LiveDocs); if (scorer != null) { int newDoc = scorer.Advance(doc); if (newDoc == doc) { float freq = scorer.Freq; SimScorer docScorer = similarity.GetSimScorer(stats, context); ComplexExplanation result = new ComplexExplanation(); result.Description = "weight(" + Query + " in " + doc + ") [" + similarity.GetType().Name + "], result of:"; Explanation scoreExplanation = docScorer.Explain(doc, new Explanation(freq, "termFreq=" + freq)); result.AddDetail(scoreExplanation); result.Value = scoreExplanation.Value; result.Match = true; return(result); } } return(new ComplexExplanation(false, 0.0f, "no matching term")); }
public override Explanation Explain(AtomicReaderContext context, int doc) { Scorer scorer = Scorer(context, (context.AtomicReader).LiveDocs); if (scorer != null) { int newDoc = scorer.Advance(doc); if (newDoc == doc) { float freq = OuterInstance.slop == 0 ? scorer.Freq() : ((SloppyPhraseScorer)scorer).SloppyFreq(); SimScorer docScorer = Similarity.DoSimScorer(Stats, context); ComplexExplanation result = new ComplexExplanation(); result.Description = "weight(" + Query + " in " + doc + ") [" + Similarity.GetType().Name + "], result of:"; Explanation scoreExplanation = docScorer.Explain(doc, new Explanation(freq, "phraseFreq=" + freq)); result.AddDetail(scoreExplanation); result.Value = scoreExplanation.Value; result.Match = true; return(result); } } return(new ComplexExplanation(false, 0.0f, "no matching term")); }