List of usage examples for org.apache.solr.search QueryCommand getSort
public Sort getSort()
From source file:com.zvents.solr.components.ScoreStatsComponent.java
License:Open Source License
@Override public void process(ResponseBuilder rb) throws IOException { boolean bComputeScores = rb.req.getParams().getBool(SCORE_PARAM, false); if (!bComputeScores) return;//from w w w.j a va2s . c om //Find the postfilter and grab the stats List<Query> lFilters = rb.getFilters(); if (lFilters != null) { for (Query q : lFilters) { if (q instanceof ScoreStatsPostFilter) { ScoreStatsPostFilter pf = (ScoreStatsPostFilter) q; QueryCommand cmd = rb.getQueryCommand(); QueryResultKey key = new QueryResultKey(cmd.getQuery(), cmd.getFilterList(), cmd.getSort(), cmd.getFlags()); NamedList<Number> scoreStats = null; long iNumDocs = pf.getNumDocs(); if (iNumDocs < 0) { scoreStats = (NamedList<Number>) rb.req.getSearcher().cacheLookup(CACHE_NAME, key); } else { float fSumSquaredScores = pf.getSumSquaredScores(); float fAvg = pf.getSumScores() / iNumDocs; float fMax = pf.getMaxScore(); float fVariance = pf.getSumSquaredScores() / iNumDocs - fAvg * fAvg; float fStdDev = 1.0f; if (fVariance > 0) fStdDev = (float) Math.sqrt(fVariance); //Basic stuff to calculate average, std-dev, min just there for information scoreStats = new NamedList<Number>(); scoreStats.add("min", pf.getMinScore()); scoreStats.add("max", fMax); scoreStats.add("avg", fAvg); scoreStats.add("stdDev", fStdDev); scoreStats.add("numDocs", iNumDocs); scoreStats.add("sumSquaredScores", fSumSquaredScores); scoreStats.add("sumScores", pf.getSumScores()); rb.req.getSearcher().cacheInsert(CACHE_NAME, key, scoreStats); } if (scoreStats != null) rb.rsp.add("scoreStats", scoreStats); } } } }