private static void AddAggregationValue(AggregationResponse aggregation, FacetResult facetResult, string valueId) { if (facetResult != null && facetResult.Count > 0) { var aggregationValue = new AggregationResponseValue { Id = valueId, Count = facetResult.Count ?? 0, }; aggregation.Values.Add(aggregationValue); } }
private static AggregationResponse GetTermAggregation(TermAggregationRequest termAggregationRequest, FacetResults facets) { AggregationResponse result = null; if (termAggregationRequest != null) { var azureFieldName = AzureSearchHelper.ToAzureFieldName(termAggregationRequest.FieldName); if (!string.IsNullOrEmpty(azureFieldName)) { var facetResults = facets.ContainsKey(azureFieldName) ? facets[azureFieldName] : null; if (facetResults != null && facetResults.Any()) { result = new AggregationResponse { Id = (termAggregationRequest.Id ?? termAggregationRequest.FieldName).ToLowerInvariant(), Values = new List <AggregationResponseValue>(), }; var values = termAggregationRequest.Values; if (values != null) { foreach (var value in values) { var facetResult = facetResults.FirstOrDefault(r => r.Value.ToStringInvariant().EqualsInvariant(value)); AddAggregationValue(result, facetResult, value); } } else { // Return all facet results if values are not defined foreach (var facetResult in facetResults) { var aggregationValue = new AggregationResponseValue { Id = facetResult.Value.ToStringInvariant(), Count = facetResult.Count ?? 0, }; result.Values.Add(aggregationValue); } } } } } return(result); }
private static void AddAggregationValues(AggregationResponse aggregation, string responseKey, string valueId, IReadOnlyDictionary <string, IAggregate> searchResponseAggregations) { if (searchResponseAggregations.ContainsKey(responseKey)) { var aggregate = searchResponseAggregations[responseKey]; var bucketAggregate = aggregate as BucketAggregate; var singleBucketAggregate = aggregate as SingleBucketAggregate; if (singleBucketAggregate != null) { if (singleBucketAggregate.Aggregations != null) { bucketAggregate = singleBucketAggregate.Aggregations[responseKey] as BucketAggregate; } else if (singleBucketAggregate.DocCount > 0) { var aggregationValue = new AggregationResponseValue { Id = valueId, Count = singleBucketAggregate.DocCount }; aggregation.Values.Add(aggregationValue); } } if (bucketAggregate != null) { foreach (var term in bucketAggregate.Items.OfType <KeyedBucket <object> >()) { if (term.DocCount > 0) { var aggregationValue = new AggregationResponseValue { Id = term.Key.ToStringInvariant(), Count = term.DocCount ?? 0 }; aggregation.Values.Add(aggregationValue); } } } } }
private static AggregationResponseValue GetAggregationValue(string valueId, Filter valueFilter, Filter commonFilter, IndexSearcher searcher) { AggregationResponseValue result = null; var filter = LuceneSearchFilterBuilder.JoinNonEmptyFilters(new[] { commonFilter, valueFilter }, Occur.MUST); if (filter != null) { var count = CalculateFacetCount(searcher, filter); if (count > 0) { result = new AggregationResponseValue { Id = valueId, Count = count }; } } return(result); }