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);
                }
Example #2
0
            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"));
            }
Example #3
0
            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"));
            }