internal virtual Explanation DoExplain(AtomicReaderContext info, int doc) { var subQueryExpl = subQueryWeight.Explain(info, doc); if (!subQueryExpl.IsMatch) { return(subQueryExpl); } // match var valSrcExpls = new Explanation[valSrcWeights.Length]; for (int i = 0; i < valSrcWeights.Length; i++) { valSrcExpls[i] = valSrcWeights[i].Explain(info, doc); } Explanation customExp = outerInstance.GetCustomScoreProvider(info) .CustomExplain(doc, subQueryExpl, valSrcExpls); float sc = outerInstance.Boost * customExp.Value; Explanation res = new ComplexExplanation(true, sc, outerInstance.ToString() + ", product of:"); res.AddDetail(customExp); res.AddDetail(new Explanation(outerInstance.Boost, "queryBoost")); // actually using the q boost as q weight (== weight value) return(res); }
private Explanation DoExplain(IndexReader reader, int doc) { Scorer[] valSrcScorers = new Scorer[valSrcWeights.Length]; for (int i = 0; i < valSrcScorers.Length; i++) { valSrcScorers[i] = valSrcWeights[i].Scorer(reader, true, false); } Explanation subQueryExpl = subQueryWeight.Explain(reader, doc); if (!subQueryExpl.IsMatch()) { return(subQueryExpl); } // match Explanation[] valSrcExpls = new Explanation[valSrcScorers.Length]; for (int i = 0; i < valSrcScorers.Length; i++) { valSrcExpls[i] = valSrcScorers[i].Explain(doc); } Explanation customExp = Enclosing_Instance.GetCustomScoreProvider(reader).CustomExplain(doc, subQueryExpl, valSrcExpls); float sc = GetValue() * customExp.GetValue(); Explanation res = new ComplexExplanation(true, sc, Enclosing_Instance.ToString() + ", product of:"); res.AddDetail(customExp); res.AddDetail(new Explanation(GetValue(), "queryBoost")); // actually using the q boost as q weight (== weight value) return(res); }
public override Explanation Explain(AtomicReaderContext readerContext, int doc) { Explanation subQueryExpl = qWeight.Explain(readerContext, doc); if (!subQueryExpl.IsMatch) { return(subQueryExpl); } FunctionValues vals = outerInstance.boostVal.GetValues(fcontext, readerContext); float sc = subQueryExpl.Value * vals.SingleVal(doc); Explanation res = new ComplexExplanation(true, sc, outerInstance.ToString() + ", product of:"); res.AddDetail(subQueryExpl); res.AddDetail(vals.Explain(doc)); return(res); }
public override Explanation Explain(AtomicReaderContext context, int doc) { return(baseWeight.Explain(context, doc)); }
public override Explanation Explain(AtomicReaderContext context, int doc) { Explanation innerExplain = m_innerWeight.Explain(context, doc); return(m_parent.m_scorerBuilder.Explain(context.AtomicReader, doc, innerExplain)); }
public virtual Explanation Explain(Monodoc.Lucene.Net.Index.IndexReader reader, int doc) { Explanation sumExpl = new Explanation(); sumExpl.SetDescription("sum of:"); int coord = 0; int maxCoord = 0; float sum = 0.0f; for (int i = 0; i < weights.Count; i++) { BooleanClause c = (BooleanClause)Enclosing_Instance.clauses[i]; Weight w = (Weight)weights[i]; Explanation e = w.Explain(reader, doc); if (!c.prohibited) { maxCoord++; } if (e.GetValue() > 0) { if (!c.prohibited) { sumExpl.AddDetail(e); sum += e.GetValue(); coord++; } else { return(new Explanation(0.0f, "match prohibited")); } } else if (c.required) { return(new Explanation(0.0f, "match required")); } } sumExpl.SetValue(sum); if (coord == 1) { // only one clause matched sumExpl = sumExpl.GetDetails()[0]; // eliminate wrapper } float coordFactor = Enclosing_Instance.GetSimilarity(searcher).Coord(coord, maxCoord); if (coordFactor == 1.0f) { // coord is no-op return(sumExpl); } // eliminate wrapper else { Explanation result = new Explanation(); result.SetDescription("product of:"); result.AddDetail(sumExpl); result.AddDetail(new Explanation(coordFactor, "coord(" + coord + "/" + maxCoord + ")")); result.SetValue(sum * coordFactor); return(result); } }
public override Explanation Explain(IndexReader reader, int doc) { Explanation innerExplain = _innerWeight.Explain(reader, doc); return(_parent._scorerBuilder.Explain(reader, doc, innerExplain)); }
public override Lucene.Net.Search.Explanation Explain(IndexReader reader, int doc, IState state) { return(_inner.Explain(reader, doc, state)); }