/** Explain the score of a document. * @todo Also show the total score. * See BooleanScorer.explain() on how to do this. */ public Explanation explain(int doc) throws IOException { Explanation res = new Explanation(); res.setDescription("required, optional"); res.addDetail(reqScorer.explain(doc)); res.addDetail(optScorer.explain(doc)); return res; } }
public Explanation explain(int doc) throws IOException { float sc = qWeight * vals.floatVal(doc); Explanation result = new ComplexExplanation (true, sc, "FunctionQuery(" + func + "), product of:"); result.addDetail(vals.explain(doc)); result.addDetail(new Explanation(getBoost(), "boost")); result.addDetail(new Explanation(weight.queryNorm,"queryNorm")); return result; } }
/** Explain the score of a document. * @todo Also show the total score. * See BooleanScorer.explain() on how to do this. */ public Explanation explain(int doc) throws IOException { Explanation res = new Explanation(); res.setDescription("required, optional"); res.addDetail(reqScorer.explain(doc)); res.addDetail(optScorer.explain(doc)); return res; } }
public Explanation explain(int doc) throws IOException { float sc = qWeight * vals.floatVal(doc); Explanation result = new ComplexExplanation( true, sc, ValueSourceQuery.this.toString() + ", product of:"); result.addDetail(vals.explain(doc)); result.addDetail(new Explanation(getBoost(), "boost")); result.addDetail(new Explanation(weight.queryNorm,"queryNorm")); return result; } }
public Explanation explain(int doc) throws IOException { float sc = qWeight * vals.floatVal(doc); Explanation result = new ComplexExplanation( true, sc, ValueSourceQuery.this.toString() + ", product of:"); result.addDetail(vals.explain(doc)); result.addDetail(new Explanation(getBoost(), "boost")); result.addDetail(new Explanation(weight.queryNorm,"queryNorm")); return result; } }
@Override public Explanation explain(AtomicReaderContext context, int doc) throws IOException { // explain query weight Explanation queryExpl = new ComplexExplanation(true, queryWeight, "MatchNoneDocsQuery, product of:"); if (getBoost() != 1.0f) { queryExpl.addDetail(new Explanation(getBoost(), "boost")); } queryExpl.addDetail(new Explanation(queryNorm, "queryNorm")); return queryExpl; }
public static Explanation convertToExplanation(JSONObject jsonObj) throws JSONException { if (jsonObj == null) return null; Explanation explanation = new Explanation(); float value = (float) jsonObj.optDouble(SenseiSearchServletParams.PARAM_RESULT_HITS_EXPL_VALUE); String description = jsonObj.optString(SenseiSearchServletParams.PARAM_RESULT_HITS_EXPL_DESC); explanation.setDescription(description); explanation.setValue(value); if (jsonObj.has(SenseiSearchServletParams.PARAM_RESULT_HITS_EXPL_DETAILS)) { JSONArray detailsArr = jsonObj .getJSONArray(SenseiSearchServletParams.PARAM_RESULT_HITS_EXPL_DETAILS); int detailsCnt = detailsArr.length(); for (int i = 0; i < detailsCnt; i++) { JSONObject detailObj = (JSONObject) detailsArr.get(i); Explanation detailExpl = convertToExplanation(detailObj); explanation.addDetail(detailExpl); } } return explanation; }
private static Explanation getExplanation(final Object explanationObj) { final Map<String, Object> explainMap = nodeMapValue(explanationObj, String.class, Object.class); final float value = nodeFloatValue(explainMap.get("value")); final String description = nodeStringValue(explainMap.get("description"), null); final Explanation explanation = new Explanation(value, description); if (explainMap.containsKey("details")) { for (Object detail : nodeListValue(explainMap.get("details"), Object.class)) { explanation.addDetail(getExplanation(detail)); } } return explanation; } }
private static Explanation getExplanation(final Object explanationObj) { final Map<String, Object> explainMap = nodeMapValue(explanationObj, String.class, Object.class); final float value = nodeFloatValue(explainMap.get("value")); final String description = nodeStringValue(explainMap.get("description"), null); final Explanation explanation = new Explanation(value, description); if (explainMap.containsKey("details")) { for (Object detail : nodeListValue(explainMap.get("details"), Object.class)) { explanation.addDetail(getExplanation(detail)); } } return explanation; } }
public Explanation explain(IndexReader reader, int doc) { // explain query weight Explanation queryExpl = new ComplexExplanation (true, getValue(), "MatchAllDocsQuery, product of:"); if (getBoost() != 1.0f) { queryExpl.addDetail(new Explanation(getBoost(),"boost")); } queryExpl.addDetail(new Explanation(queryNorm,"queryNorm")); return queryExpl; } }
public Explanation explain(IndexReader reader, int doc) { // explain query weight Explanation queryExpl = new ComplexExplanation (true, getValue(), "MatchAllDocsQuery, product of:"); if (getBoost() != 1.0f) { queryExpl.addDetail(new Explanation(getBoost(),"boost")); } queryExpl.addDetail(new Explanation(queryNorm,"queryNorm")); return queryExpl; } }
@Override public Explanation explain(final IndexReader reader, final int i) throws IOException { Explanation inner = weight.explain(reader, i); Bits predicate = PredicateQuery.this.predicate.get(reader); if (predicate.get(i)) { return inner; } else { Explanation result = new Explanation(0.0f, "failure to match predicate: " + predicate.toString()); result.addDetail(inner); return result; } }
public Explanation explain(int doc) throws IOException { Explanation subQueryExpl = weight.qWeight.explain(reader,doc); if (!subQueryExpl.isMatch()) { return subQueryExpl; } float sc = subQueryExpl.getValue() * vals.floatVal(doc); Explanation res = new ComplexExplanation( true, sc, BoostedQuery.this.toString() + ", product of:"); res.addDetail(subQueryExpl); res.addDetail(vals.explain(doc)); return res; } }
public Explanation explain (IndexReader ir, int i) throws IOException { Explanation inner = weight.explain (ir, i); if (getBoost()!=1) { Explanation preBoost = inner; inner = new Explanation(inner.getValue()*getBoost(),"product of:"); inner.addDetail(new Explanation(getBoost(),"boost")); inner.addDetail(preBoost); } Filter f = FilteredQuery.this.filter; DocIdSetIterator docIdSetIterator = f.getDocIdSet(ir).iterator(); if (docIdSetIterator.skipTo(i) && (docIdSetIterator.doc() == i)) { return inner; } else { Explanation result = new Explanation (0.0f, "failure to match filter: " + f.toString()); result.addDetail(inner); return result; } }
public Explanation explain (IndexReader ir, int i) throws IOException { Explanation inner = weight.explain (ir, i); if (getBoost()!=1) { Explanation preBoost = inner; inner = new Explanation(inner.getValue()*getBoost(),"product of:"); inner.addDetail(new Explanation(getBoost(),"boost")); inner.addDetail(preBoost); } Filter f = FilteredQuery.this.filter; DocIdSetIterator docIdSetIterator = f.getDocIdSet(ir).iterator(); if (docIdSetIterator.skipTo(i) && (docIdSetIterator.doc() == i)) { return inner; } else { Explanation result = new Explanation (0.0f, "failure to match filter: " + f.toString()); result.addDetail(inner); return result; } }
@Override public Explanation customExplain( final int doc, final Explanation subQueryExplanation, final Explanation[] valSrcExplanations) throws IOException { float bonus = subQueryExplanation.getValue() > 0 ? (this.bits.get(doc) ? this.bonus : 0) : subQueryExplanation.getValue(); Explanation result = new Explanation( subQueryExplanation.getValue() + bonus, "bonus = " + bonus); result.addDetail(subQueryExplanation); return result; }
public Explanation explain(int doc) throws IOException { Explanation res = new Explanation(); if (exclScorer.skipTo(doc) && (exclScorer.doc() == doc)) { res.setDescription("excluded"); } else { res.setDescription("not excluded"); res.addDetail(reqScorer.explain(doc)); } return res; } }
public Explanation explain(int doc) throws IOException { Explanation res = new Explanation(); if (exclScorer.skipTo(doc) && (exclScorer.doc() == doc)) { res.setDescription("excluded"); } else { res.setDescription("not excluded"); res.addDetail(reqScorer.explain(doc)); } return res; } }
@Override public Explanation explain(int doc) { String[] vals = _array.getTranslatedData(doc, _dataCache.valArray); FloatList scoreList = new FloatArrayList(_dataCache.valArray.size()); ArrayList<Explanation> explList = new ArrayList<Explanation>(scoreList.size()); for (String val : vals) { int idx = _dataCache.valArray.indexOf(val); if (idx >= 0) { scoreList.add(_function.score(_dataCache.freqs[idx], _boostList[idx])); explList.add(_function.explain(_dataCache.freqs[idx], _boostList[idx])); } } Explanation topLevel = _function.explain(scoreList.toFloatArray()); for (Explanation sub : explList) { topLevel.addDetail(sub); } return topLevel; }
@Override public Explanation explain(IndexReader reader, int doc) throws IOException { SolrIndexReader topReader = (SolrIndexReader)reader; SolrIndexReader[] subReaders = topReader.getLeafReaders(); int[] offsets = topReader.getLeafOffsets(); int readerPos = SolrIndexReader.readerIndex(doc, offsets); int readerBase = offsets[readerPos]; Explanation subQueryExpl = qWeight.explain(reader,doc); if (!subQueryExpl.isMatch()) { return subQueryExpl; } DocValues vals = boostVal.getValues(context, subReaders[readerPos]); float sc = subQueryExpl.getValue() * vals.floatVal(doc-readerBase); Explanation res = new ComplexExplanation( true, sc, BoostedQuery.this.toString() + ", product of:"); res.addDetail(subQueryExpl); res.addDetail(vals.explain(doc-readerBase)); return res; } }