public override Explanation Explain(AtomicReaderContext context, int doc) { Scorer cs = GetScorer(context, (context.AtomicReader).LiveDocs); bool exists = (cs != null && cs.Advance(doc) == doc); ComplexExplanation result = new ComplexExplanation(); if (exists) { result.Description = outerInstance.ToString() + ", product of:"; result.Value = queryWeight; result.Match = true; result.AddDetail(new Explanation(outerInstance.Boost, "boost")); result.AddDetail(new Explanation(queryNorm, "queryNorm")); } else { result.Description = outerInstance.ToString() + " doesn't match id " + doc; result.Value = 0; result.Match = false; } return(result); }