List of usage examples for org.apache.solr.client.solrj.response QueryResponse getFieldStatsInfo
public Map<String, FieldStatsInfo> getFieldStatsInfo()
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
License:Open Source License
/** * @see au.org.ala.biocache.dao.SearchDAO#getStatistics(SpatialSearchRequestParams) */// www . j a v a 2 s . c o m public Map<String, FieldStatsInfo> getStatistics(SpatialSearchRequestParams searchParams) throws Exception { try { queryFormatUtils.formatSearchQuery(searchParams); String queryString = searchParams.getFormattedQuery(); SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(queryString); for (String field : searchParams.getFacets()) { solrQuery.setGetFieldStatistics(field); } QueryResponse qr = runSolrQuery(solrQuery, searchParams); if (logger.isDebugEnabled()) { logger.debug(qr.getFieldStatsInfo()); } return qr.getFieldStatsInfo(); } catch (SolrServerException ex) { logger.error("Problem communicating with SOLR server. " + ex.getMessage(), ex); } return null; }
From source file:au.org.ala.biocache.dao.SearchDAOImpl.java
License:Open Source License
/** * @see au.org.ala.biocache.dao.SearchDAO#searchStat *///w ww.j a va2s .co m public List<FieldStatsItem> searchStat(SpatialSearchRequestParams searchParams, String field, String facet) throws Exception { searchParams.setFacets(new String[] {}); queryFormatUtils.formatSearchQuery(searchParams); String queryString = searchParams.getFormattedQuery(); if (facet != null) searchParams.setFacet(true); //get facet group counts SolrQuery query = initSolrQuery(searchParams, false, null); query.setQuery(queryString); query.setFields(null); //query.setFacetLimit(-1); //stats parameters query.add("stats", "true"); if (facet != null) query.add("stats.facet", facet); query.add("stats.field", field); query.setRows(0); searchParams.setPageSize(0); QueryResponse response = runSolrQuery(query, searchParams); List<FieldStatsItem> output = new ArrayList(); if (facet != null && response.getFieldStatsInfo().size() > 0) { for (FieldStatsInfo f : response.getFieldStatsInfo().values().iterator().next().getFacets().values() .iterator().next()) { FieldStatsItem item = new FieldStatsItem(f); if (f.getName() == null) { item.setFq("-" + facet + ":*"); } else { item.setFq(facet + ":\"" + f.getName() + "\""); } item.setLabel(f.getName()); output.add(item); } } else { if (response.getFieldStatsInfo().size() > 0) { output.add(new FieldStatsItem(response.getFieldStatsInfo().values().iterator().next())); } } return output; }
From source file:com.francelabs.datafari.statistics.StatsProcessor.java
License:Apache License
public static void processStatsResponse(final QueryResponse queryResponse) throws Exception { final NamedList responseHeader = queryResponse.getResponseHeader(); final FacetField QFacet = queryResponse.getFacetField("q"); final Long numTot = queryResponse.getResults().getNumFound(); final SolrDocumentList solrDocumentList = new SolrDocumentList(); solrDocumentList.setNumFound(QFacet.getValueCount()); solrDocumentList.setStart(0);/* www . j av a2s .c o m*/ if (numTot != 0) { final Map<String, FieldStatsInfo> stats = queryResponse.getFieldStatsInfo(); final List<FieldStatsInfo> noHitsStats = stats.get("noHits").getFacets().get("q"); final List<FieldStatsInfo> QTimeStats = stats.get("QTime").getFacets().get("q"); List<FieldStatsInfo> positionClickTotStats = null; try { positionClickTotStats = stats.get("positionClickTot").getFacets().get("q"); } catch (final Exception e) { } final List<FieldStatsInfo> clickStats = stats.get("click").getFacets().get("q"); final List<FieldStatsInfo> numClicksStats = stats.get("numClicks").getFacets().get("q"); final List<FieldStatsInfo> numFoundStats = stats.get("numFound").getFacets().get("q"); final List<Count> QFacetValues = QFacet.getValues(); final Map<String, SolrDocument> mapDocuments = new HashMap<String, SolrDocument>(); for (int i = 0; i < QFacetValues.size(); i++) { final SolrDocument doc = new SolrDocument(); final String query = QFacetValues.get(i).getName(); final double count = QFacetValues.get(i).getCount(); final double frequency = StatsUtils.round(count * 100 / numTot, 2, BigDecimal.ROUND_HALF_UP); doc.addField("query", query); doc.addField("count", count); doc.addField("frequency", frequency); mapDocuments.put(query, doc); solrDocumentList.add(doc); } for (int i = 0; i < QTimeStats.size(); i++) { final String query = QTimeStats.get(i).getName(); final SolrDocument doc = mapDocuments.get(query); final int AVGHits = new Double((Double) numFoundStats.get(i).getMean()).intValue(); final Double noHits = new Double((Double) noHitsStats.get(i).getSum()); final int AVGQTime = new Double((Double) QTimeStats.get(i).getMean()).intValue(); final int MAXQTime = new Double((Double) QTimeStats.get(i).getMax()).intValue(); final double click = new Double((Double) clickStats.get(i).getSum()); final double clickRatio = StatsUtils.round(click * 100 / (Double) doc.getFirstValue("count"), 2, BigDecimal.ROUND_HALF_UP); if (click > 0) { final double AVGClickPosition = new Double((Double) positionClickTotStats.get(i).getSum() / (Double) numClicksStats.get(i).getSum()).intValue(); doc.addField("AVGClickPosition", AVGClickPosition); } else { doc.addField("AVGClickPosition", "-"); } doc.addField("withClickRatio", clickRatio); doc.addField("AVGHits", AVGHits); doc.addField("numNoHits", noHits); doc.addField("withClick", click); doc.addField("AVGQTime", AVGQTime); doc.addField("MaxQTime", MAXQTime); } } final NamedList<Object> response = new SimpleOrderedMap<Object>(); response.add("responseHeader", responseHeader); response.add("response", solrDocumentList); queryResponse.setResponse(response); }
From source file:com.frank.search.solr.core.SolrTemplate.java
License:Apache License
private <T> SolrResultPage<T> createSolrResultPage(Query query, Class<T> clazz, QueryResponse response, Map<String, Object> objectsName) { List<T> beans = convertQueryResponseToBeans(response, clazz); SolrDocumentList results = response.getResults(); long numFound = results == null ? 0 : results.getNumFound(); Float maxScore = results == null ? null : results.getMaxScore(); Pageable pageRequest = query.getPageRequest(); SolrResultPage<T> page = new SolrResultPage<T>(beans, pageRequest, numFound, maxScore); page.setFieldStatsResults(/* w w w . j ava 2s . c om*/ ResultHelper.convertFieldStatsInfoToFieldStatsResultMap(response.getFieldStatsInfo())); page.setGroupResults( ResultHelper.convertGroupQueryResponseToGroupResultMap(query, objectsName, response, this, clazz)); return page; }
From source file:com.nridge.ds.solr.SolrResponseBuilder.java
License:Open Source License
private void populateStatistic(QueryResponse aQueryResponse) { Object statObject;/*from ww w . ja va2 s. c o m*/ DataField schemaField; FieldStatsInfo fieldStatsInfo; String fieldName, fieldTitle, fieldValue; Logger appLogger = mAppMgr.getLogger(this, "populateStatistic"); appLogger.trace(mAppMgr.LOGMSG_TRACE_ENTER); Map<String, FieldStatsInfo> mapFieldStatsInfo = aQueryResponse.getFieldStatsInfo(); if (mapFieldStatsInfo != null) { mDocument.addRelationship(Solr.RESPONSE_STATISTIC, createStatisticsBag()); Relationship statisticRelationship = mDocument.getFirstRelationship(Solr.RESPONSE_STATISTIC); if (statisticRelationship != null) { DataBag statisticsBag = new DataBag(statisticRelationship.getBag()); statisticsBag.setAssignedFlagAll(false); DataTable statisticTable = new DataTable(statisticsBag); DataBag resultBag = mBag; for (Map.Entry<String, FieldStatsInfo> entry : mapFieldStatsInfo.entrySet()) { statisticTable.newRow(); fieldName = entry.getKey(); fieldStatsInfo = entry.getValue(); statisticTable.setValueByName("field_name", fieldName); schemaField = resultBag.getFieldByName(fieldName); if (schemaField == null) fieldTitle = Field.nameToTitle(fieldName); else fieldTitle = schemaField.getTitle(); statisticTable.setValueByName("field_title", fieldTitle); statObject = fieldStatsInfo.getMin(); if (statObject == null) fieldValue = StringUtils.EMPTY; else fieldValue = statObject.toString(); statisticTable.setValueByName("min", fieldValue); statObject = fieldStatsInfo.getMax(); if (statObject == null) fieldValue = StringUtils.EMPTY; else fieldValue = statObject.toString(); statisticTable.setValueByName("max", fieldValue); statObject = fieldStatsInfo.getCount(); if (statObject == null) fieldValue = StringUtils.EMPTY; else fieldValue = statObject.toString(); statisticTable.setValueByName("count", fieldValue); statObject = fieldStatsInfo.getMissing(); if (statObject == null) fieldValue = StringUtils.EMPTY; else fieldValue = statObject.toString(); statisticTable.setValueByName("missing", fieldValue); statObject = fieldStatsInfo.getSum(); if (statObject == null) fieldValue = StringUtils.EMPTY; else fieldValue = statObject.toString(); statisticTable.setValueByName("sum", fieldValue); statObject = fieldStatsInfo.getMean(); if (statObject == null) fieldValue = StringUtils.EMPTY; else fieldValue = statObject.toString(); statisticTable.setValueByName("mean", fieldValue); statObject = fieldStatsInfo.getStddev(); if (statObject == null) fieldValue = StringUtils.EMPTY; else fieldValue = statObject.toString(); statisticTable.setValueByName("standard_deviation", fieldValue); statisticTable.addRow(); } Document facetDocument = new Document(Solr.RESPONSE_STATISTIC, statisticTable); statisticRelationship.add(facetDocument); } } appLogger.trace(mAppMgr.LOGMSG_TRACE_DEPART); }
From source file:org.apache.drill.exec.store.solr.SolrAggrReader.java
License:Apache License
public SolrAggrReader(FragmentContext context, SolrSubScan config) { fc = context;/*from w w w .java2 s . c o m*/ solrSubScan = config; solrServerUrl = solrSubScan.getSolrPlugin().getSolrStorageConfig().getSolrServer(); scanList = solrSubScan.getScanList(); solrClient = solrSubScan.getSolrPlugin().getSolrClient(); solrClientApiExec = new SolrClientAPIExec(solrClient); String solrCoreName = scanList.get(0).getSolrCoreName(); List<SchemaPath> colums = config.getColumns(); SolrFilterParam filters = config.getSolrScanSpec().getFilter(); solrAggrParams = config.getSolrScanSpec().getAggrParams(); SolrSchemaResp oCVSchema = config.getSolrScanSpec().getCvSchema(); if (oCVSchema.getSchemaFields() != null) { schemaFieldMap = new HashMap<String, SolrSchemaField>(oCVSchema.getSchemaFields().size()); for (SolrSchemaField cvSchemaField : oCVSchema.getSchemaFields()) { schemaFieldMap.put(cvSchemaField.getFieldName(), cvSchemaField); } } StringBuilder sb = new StringBuilder(); if (filters != null) { for (String filter : filters) { sb.append(filter); } } setColumns(colums); // Query Response if (!solrAggrParams.isEmpty()) { QueryResponse queryRsp = solrClientApiExec.getSolrFieldStats(solrServerUrl, solrCoreName, oCVSchema.getUniqueKey(), this.fields, sb); if (queryRsp != null) { fieldStatsInfoMap = queryRsp.getFieldStatsInfo(); } } }
From source file:org.apache.drill.exec.store.solr.SolrRecordReader.java
License:Apache License
@Override public int next() { int counter = 0; int statsCounter = 0; SolrRecordReader.logger.info("Use SOLR Stream : " + useSolrStream); QueryResponse rsp = null; String solrUrl = solrSubScan.getSolrScanSpec().getSolrUrl(); String uniqueKey = solrSubScan.getSolrScanSpec().getCvSchema().getUniqueKey(); String solrCoreName = solrSubScan.getSolrScanSpec().getSolrCoreName(); SolrFilterParam filters = solrSubScan.getSolrScanSpec().getFilter(); List<SolrSortParam> solrSortParams = solrSubScan.getSolrScanSpec().getSortParams(); ArrayList<String> fieldListCopy = new ArrayList(this.fields); long solrDocFetchCount = solrSubScan.getSolrScanSpec().getSolrDocFetchCount(solrCoreName, fieldListCopy); boolean isDistinct = solrSubScan.getSolrScanSpec().isDistinct(); boolean isGroup = solrSubScan.getSolrScanSpec().isGroup(); boolean useFacetPivotFromGroupCount = isCountOnlyQuery() && isGroup; boolean isDataQuery = solrAggrParams.isEmpty() && !isGroup && !useFacetPivotFromGroupCount; if (!solrStreamReadFinished) { StringBuilder filterBuilder = new StringBuilder(); if (filters != null) { for (String filter : filters) { filterBuilder.append(filter); }/* www .jav a 2 s . co m*/ } if ((solrUrl != null) && solrUrl.contains(solrCoreName)) { solrServerUrl = solrUrl; solrCoreName = null; // setting it null since solrUrl already contains the coreName; } if (useSolrStream) { SolrStream solrStream = solrClientApiExec.getSolrStreamResponse(solrServerUrl, solrCoreName, this.fields, filterBuilder, uniqueKey, solrDocFetchCount); counter = processSolrStream(solrStream); } else { if (!solrAggrParams.isEmpty() && !isGroup && isCountOnlyQuery()) { SolrRecordReader.logger.info("Processing COUNT only query..."); ValueVector vv1 = vectors.get(String.valueOf(statsCounter)); processCountQuery(vv1, solrDocFetchCount, statsCounter, counter); statsCounter++; counter++; // actual record counter } else { if (solrDocFetchCount != 0) { if (isDistinct) { // make facet query. } if (isDataQuery && !solrSubScan.getSolrScanSpec().isLimitApplied()) { solrDocFetchCount = SolrPluginConstants.SOLR_DEFAULT_FETCH_COUNT; } rsp = solrClientApiExec.getSolrDocs(solrServerUrl, solrCoreName, uniqueKey, this.fields, solrDocFetchCount, cursorMark, filterBuilder, solrAggrParams, solrSortParams, solrScanSpec.getProjectFieldNames(), isGroup, isCountOnlyQuery()); SolrDocumentList solrDocList = rsp.getResults(); Map<String, FieldStatsInfo> fieldStatsInfoMap = rsp.getFieldStatsInfo(); NamedList<List<PivotField>> facetPivots = rsp.getFacetPivot(); // solr doc iteration if (solrDocList != null) { counter = processSolrDocs(solrDocList); } // facet iteration (for single group by) if (rsp.getFacetFields() != null) { counter = processFacetResponse(rsp, isCountOnlyQuery()); } // stats/stats.facet iteration (for stats with single group by should be replace by // facet pivot) if (fieldStatsInfoMap != null) { counter = processStatsFieldResponse(fieldStatsInfoMap, isGroup, uniqueKey); } // facet pivot response if (facetPivots != null) { List<PivotField> pivotList = facetPivots.get(Joiner.on(",").join(fields)); counter = processFacetPivotResponse(pivotList); } } } } } for (String key : vectors.keySet()) { ValueVector vv = vectors.get(key); vv.getMutator().setValueCount(counter); } if (isDataQuery && rsp != null && cursorMark != rsp.getNextCursorMark()) { solrStreamReadFinished = false; cursorMark = rsp.getNextCursorMark(); SolrRecordReader.logger .info("Retrieving resultset from SOLR is not yet finished. Retriving with next cursor [ " + cursorMark + " ] with rows:" + solrDocFetchCount); } else { solrStreamReadFinished = true; } return counter; }
From source file:org.apache.nifi.processors.solr.QuerySolr.java
License:Apache License
private static void addStatsFromSolrResponseToJsonWriter(final QueryResponse response, final JsonWriter writer) throws IOException { writer.beginObject();// w ww . ja v a 2 s . co m writer.name("stats_fields"); writer.beginObject(); for (Map.Entry<String, FieldStatsInfo> entry : response.getFieldStatsInfo().entrySet()) { FieldStatsInfo fsi = entry.getValue(); writer.name(entry.getKey()); writer.beginObject(); writer.name("min").value(fsi.getMin().toString()); writer.name("max").value(fsi.getMax().toString()); writer.name("count").value(fsi.getCount()); writer.name("missing").value(fsi.getMissing()); writer.name("sum").value(fsi.getSum().toString()); writer.name("mean").value(fsi.getMean().toString()); writer.name("sumOfSquares").value(fsi.getSumOfSquares()); writer.name("stddev").value(fsi.getStddev()); writer.endObject(); } writer.endObject(); writer.endObject(); }
From source file:org.mousephenotype.cda.solr.service.ObservationService.java
License:Apache License
/** * Get stats for the baseline graphs on the phenotype pages for each parameter/center * if phenotypingCenter is null just return all stats for the center otherwise filter on that center *//*from w w w. j av a 2s . c o m*/ public List<FieldStatsInfo> getStatisticsForParameterFromCenter(String parameterStableId, String phenotypingCenter) throws SolrServerException, IOException { //http://ves-ebi-d0.ebi.ac.uk:8090/mi/impc/dev/solr/experiment/select?q=*:*&stats=true&stats.field=data_point&stats.facet=parameter_stable_id&rows=0&indent=true&fq=phenotyping_center:HMGU&fq=parameter_stable_id:IMPC_CBC_010_001 //http://ves-ebi-d0.ebi.ac.uk:8090/mi/impc/dev/solr/experiment/select?q=*:*&stats=true&stats.field=data_point&stats.facet=phenotyping_center&rows=0&indent=true&fq=parameter_stable_id:IMPC_CBC_010_001 logger.debug("calling getStats for baseline"); SolrQuery query = new SolrQuery().setQuery("*:*"); query.setGetFieldStatistics(true); query.setGetFieldStatistics(ObservationDTO.DATA_POINT); query.setParam("stats.facet", ObservationDTO.PHENOTYPING_CENTER); query.setFacetLimit(-1); query.addFilterQuery(ObservationDTO.BIOLOGICAL_SAMPLE_GROUP + ":control"); if (parameterStableId != null) { query.addFilterQuery(ObservationDTO.PARAMETER_STABLE_ID + ":" + parameterStableId); } if (phenotypingCenter != null) { query.addFilterQuery(ObservationDTO.PHENOTYPING_CENTER + ":\"" + phenotypingCenter + "\""); } query.setRows(0); logger.debug("SOLR URL getPipelines " + SolrUtils.getBaseURL(experimentCore) + "/select?" + query); QueryResponse response = experimentCore.query(query); FieldStatsInfo statsInfo = response.getFieldStatsInfo().get(ObservationDTO.DATA_POINT); Map<String, List<FieldStatsInfo>> facetToStatsMap = statsInfo.getFacets(); List<FieldStatsInfo> centerStatsList = null; //just get the first result as we only expect 1 for (String facet : facetToStatsMap.keySet()) { centerStatsList = facetToStatsMap.get(facet); } return centerStatsList; }