pivotFields.sort((o1, o2) -> { String s1 = groupOrder.getGroupOrderType() == GroupOrderType.TERM ? o1.getValue().toString() : Integer.toString(o1.getCount()); String s2 = groupOrder.getGroupOrderType() == GroupOrderType.TERM ? o2.getValue().toString() : Integer.toString(o2.getCount()); if (groupOrder.getSortOrder() == SortOrder.ASC) { return s1.compareTo(s2); groupResult.setKey(pivotField.getValue().toString()); groupResult.setTotal(pivotField.getCount()); Optional<String> scoreField = groupRequest.getScoreField(); if (scoreField.isPresent()) { groupResult .setScore((Double) pivotField.getFieldStatsInfo().get(scoreField.get()).getSum()); .setGroupResults(getGroupResults(groupRequest, index + 1, pivotField.getPivot()));
private static PivotFacetResult<?> getPivotFacetResult(PivotField pivotField,QueryResponse response, DocumentFactory factory, Map<String, Facet> facetsQuery, String searchContext) { final String fieldName = getFieldDescriptorName(searchContext, pivotField.getField()); final FieldDescriptor<?> descriptor = factory.getField(fieldName); if (descriptor == null) { log.error("Unable to create a pivot faced result: the field '{}' is not configured as facet.", fieldName); throw new RuntimeException("Unable to create a pivot faced result: the field '"+ fieldName +"' is not configured as facet."); } final List<PivotFacetResult<?>> pivot = new ArrayList<>(); if(pivotField.getPivot()!=null) { pivotField.getPivot().stream().forEach(pivotF -> pivot.add(getPivotFacetResult(pivotF,response,factory,facetsQuery, searchContext))); } HashMap<String, QueryFacetResult<?>> pivotQueryResult = new HashMap<>(); if (pivotField.getFacetQuery() != null) { pivotQueryResult= getFacetQueryResults(pivotField.getFacetQuery().entrySet(),facetsQuery); } HashMap<String, RangeFacetResult<?>> pivotRangeResult = new HashMap<>(); if (pivotField.getFacetRanges() != null) { pivotRangeResult = getRangeFacetResult(pivotField.getFacetRanges(), response, factory, facetsQuery, searchContext); } HashMap<String, StatsFacetResult<?>> pivotStatsResults = new HashMap<>(); if(pivotField.getFieldStatsInfo()!=null) { pivotStatsResults = getStatsFacetsResults(pivotField.getFieldStatsInfo().entrySet(), facetsQuery); } /*TODO: check value type: castForDescriptor(pivotField.getValue(), descriptor)*/ return new PivotFacetResult(pivot, pivotField.getValue(), descriptor, pivotField.getCount(),pivotQueryResult, pivotStatsResults, pivotRangeResult); }
private static List<FacetPivotFieldEntry> convertPivotResult(List<PivotField> pivotResult) { if (CollectionUtils.isEmpty(pivotResult)) { return Collections.emptyList(); } ArrayList<FacetPivotFieldEntry> pivotFieldEntries = new ArrayList<>(); for (PivotField pivotField : pivotResult) { SimpleFacetPivotEntry pivotFieldEntry = new SimpleFacetPivotEntry(new SimpleField(pivotField.getField()), String.valueOf(pivotField.getValue()), pivotField.getCount()); List<PivotField> pivot = pivotField.getPivot(); if (pivot != null) { pivotFieldEntry.setPivot(convertPivotResult(pivot)); } pivotFieldEntries.add(pivotFieldEntry); } return pivotFieldEntries; }
public ArrayList<ServerDetail> getList(SolrServer realTimeThoth) throws SolrServerException { ArrayList<ServerDetail> serverDetails = new ArrayList<ServerDetail>(); // Using HierarchicalFaceting to fetch server details .http://wiki.apache.org/solr/HierarchicalFaceting QueryResponse qr = realTimeThoth.query(new SolrQuery("*:*").addFacetPivotField(FACET_PIVOT_FIELDS).setRows(0).setFacetLimit(FACET_LIMIT)); NamedList<List<PivotField>> pivots = qr.getFacetPivot(); System.out.println("Found " + pivots.get(FACET_PIVOT_FIELDS).size()+" servers to monitor. Fetching information for these servers. Please wait"); for (PivotField pivot: pivots.get(FACET_PIVOT_FIELDS)){ String hostname = (String) pivot.getValue(); for (PivotField pf: pivot.getPivot()){ String coreName = (String) pf.getValue(); ServerDetail detail = fetchServerDetails(hostname,coreName, realTimeThoth); if (detail != null) serverDetails.add(detail); } } return serverDetails; }
public class Mapper { public void mapMyObject(List<PivotField> pivotFields){ for(PivotField pv : pivotFields){ Date value = (Date) pv.getValue(); String parutionDate = formatDate(value, DateHelper.DD_MM_YYYY_FORMAT); } } private String formatDate(Date date, String pattern){ return DateHelper.getStringFromDateSolr(date, pattern); } }
public void write( PrintStream out, int indent ) { for( int i=0; i<indent; i++ ) { out.print( " " ); } out.print( _field + "=" + _value + " ("+_count+")" ); if (null != _statsInfo) { out.print( "->stats:[" ); for( FieldStatsInfo fieldStatsInfo : _statsInfo.values() ) { out.print(fieldStatsInfo.toString()); out.print(","); } out.print("]"); } out.println(); if(_querycounts != null) { out.println(_querycounts.toString()); } if(_ranges != null) { out.println(_ranges.toString()); } if( _pivot != null ) { for( PivotField p : _pivot ) { p.write( out, indent+1 ); } } } }
values.add( new PivotField( f, v, cnt, subPivots, fieldStatsInfos, queryCounts, ranges ) );
public void write( PrintStream out, int indent ) { for( int i=0; i<indent; i++ ) { out.print( " " ); } out.print( _field + "=" + _value + " ("+_count+")" ); if (null != _statsInfo) { out.print( "->stats:[" ); for( FieldStatsInfo fieldStatsInfo : _statsInfo.values() ) { out.print(fieldStatsInfo.toString()); out.print(","); } out.print("]"); } out.println(); if(_querycounts != null) { out.println(_querycounts.toString()); } if(_ranges != null) { out.println(_ranges.toString()); } if( _pivot != null ) { for( PivotField p : _pivot ) { p.write( out, indent+1 ); } } } }
values.add( new PivotField( f, v, cnt, subPivots, fieldStatsInfos, queryCounts, ranges ) );