private void updateFacets() throws IOException { facetMap = new HashMap<>(); for ( Map.Entry<FacetingRequest, FacetMetadata> entry : facetingRequestsAndMetadata.entrySet() ) { FacetingRequest facetRequest = entry.getKey(); FacetMetadata facetMetadata = entry.getValue(); ArrayList<Facet> facets; if ( facetRequest instanceof DiscreteFacetRequest ) { facets = updateStringFacets( (DiscreteFacetRequest) facetRequest, facetMetadata ); } else { facets = updateRangeFacets( (RangeFacetRequest<?>) facetRequest, facetMetadata ); } // sort if necessary if ( !facetRequest.getSort().equals( FacetSortOrder.RANGE_DEFINITION_ORDER ) ) { Collections.sort( facets, FacetComparators.get( facetRequest.getSort() ) ); } // trim to the expected size int maxNumberOfExpectedFacets = facetRequest.getMaxNumberOfFacets(); if ( maxNumberOfExpectedFacets > 0 && facets.size() > maxNumberOfExpectedFacets ) { facets = new ArrayList<>( facets.subList( 0, facetRequest.getMaxNumberOfFacets() ) ); } facetMap.put( facetRequest.getFacetingName(), facets ); } }
private void updateFacets() throws IOException { facetMap = new HashMap<>(); for ( Map.Entry<FacetingRequest, FacetMetadata> entry : facetingRequestsAndMetadata.entrySet() ) { FacetingRequest facetRequest = entry.getKey(); FacetMetadata facetMetadata = entry.getValue(); ArrayList<Facet> facets; if ( facetRequest instanceof DiscreteFacetRequest ) { facets = updateStringFacets( (DiscreteFacetRequest) facetRequest, facetMetadata ); } else { facets = updateRangeFacets( (RangeFacetRequest<?>) facetRequest, facetMetadata ); } // sort if necessary if ( !facetRequest.getSort().equals( FacetSortOrder.RANGE_DEFINITION_ORDER ) ) { Collections.sort( facets, FacetComparators.get( facetRequest.getSort() ) ); } // trim to the expected size int maxNumberOfExpectedFacets = facetRequest.getMaxNumberOfFacets(); if ( maxNumberOfExpectedFacets > 0 && facets.size() > maxNumberOfExpectedFacets ) { facets = new ArrayList<>( facets.subList( 0, facetRequest.getMaxNumberOfFacets() ) ); } facetMap.put( facetRequest.getFacetingName(), facets ); } }
@Override protected void extractFacetResults() { SearchResult searchResult = getSearchResult(); JsonObject aggregations = searchResult.getAggregations(); if ( aggregations == null ) { return; } Map<String, List<Facet>> results = new HashMap<>(); for ( Map.Entry<FacetingRequest, FacetMetadata> entry : searcher.getFacetingRequestsAndMetadata().entrySet() ) { FacetingRequest facetRequest = entry.getKey(); FacetMetadata facetMetadata = entry.getValue(); List<Facet> facets; if ( facetRequest instanceof DiscreteFacetRequest ) { facets = extractDiscreteFacets( aggregations, (DiscreteFacetRequest) facetRequest, facetMetadata ); // Discrete facets are sorted by Elasticsearch } else { facets = extractRangeFacets( aggregations, (RangeFacetRequest<?>) facetRequest, facetMetadata ); if ( !FacetSortOrder.RANGE_DEFINITION_ORDER.equals( facetRequest.getSort() ) ) { Collections.sort( facets, FacetComparators.get( facetRequest.getSort() ) ); } } results.put( facetRequest.getFacetingName(), facets ); } getFacetManager().setFacetResults( results ); }
@Override protected void extractFacetResults() { SearchResult searchResult = getSearchResult(); JsonObject aggregations = searchResult.getAggregations(); if ( aggregations == null ) { return; } Map<String, List<Facet>> results = new HashMap<>(); for ( Map.Entry<FacetingRequest, FacetMetadata> entry : searcher.getFacetingRequestsAndMetadata().entrySet() ) { FacetingRequest facetRequest = entry.getKey(); FacetMetadata facetMetadata = entry.getValue(); List<Facet> facets; if ( facetRequest instanceof DiscreteFacetRequest ) { facets = extractDiscreteFacets( aggregations, (DiscreteFacetRequest) facetRequest, facetMetadata ); // Discrete facets are sorted by Elasticsearch } else { facets = extractRangeFacets( aggregations, (RangeFacetRequest<?>) facetRequest, facetMetadata ); if ( !FacetSortOrder.RANGE_DEFINITION_ORDER.equals( facetRequest.getSort() ) ) { Collections.sort( facets, FacetComparators.get( facetRequest.getSort() ) ); } } results.put( facetRequest.getFacetingName(), facets ); } getFacetManager().setFacetResults( results ); }
@Override protected void extractFacetResults() { SearchResult searchResult = getSearchResult(); JsonElement aggregationsElement = searchResult.getJsonObject().get( "aggregations" ); if ( aggregationsElement == null ) { return; } JsonObject aggregations = aggregationsElement.getAsJsonObject(); Map<String, List<Facet>> results = new HashMap<>(); for ( FacetingRequest facetRequest : getFacetManager().getFacetRequests().values() ) { List<Facet> facets; if ( facetRequest instanceof DiscreteFacetRequest ) { facets = updateStringFacets( aggregations, (DiscreteFacetRequest) facetRequest ); // Discrete facets are sorted by Elasticsearch } else { facets = updateRangeFacets( aggregations, (RangeFacetRequest<?>) facetRequest ); if ( !FacetSortOrder.RANGE_DEFINITION_ORDER.equals( facetRequest.getSort() ) ) { Collections.sort( facets, FacetComparators.get( facetRequest.getSort() ) ); } } results.put( facetRequest.getFacetingName(), facets ); } getFacetManager().setFacetResults( results ); }