private static AggregationResponse GetRangeAggregation(RangeAggregationRequest rangeAggregationRequest, FacetResults facets) { AggregationResponse result = null; if (rangeAggregationRequest != null) { var azureFieldName = AzureSearchHelper.ToAzureFieldName(rangeAggregationRequest.FieldName); if (!string.IsNullOrEmpty(azureFieldName)) { var facetResults = facets.ContainsKey(azureFieldName) ? facets[azureFieldName] : null; if (facetResults != null && facetResults.Any()) { result = new AggregationResponse { Id = (rangeAggregationRequest.Id ?? rangeAggregationRequest.FieldName).ToLowerInvariant(), Values = new List <AggregationResponseValue>(), }; foreach (var value in rangeAggregationRequest.Values) { var facetResult = GetRangeFacetResult(value, facetResults); AddAggregationValue(result, facetResult, value.Id); } } } } return(result); }
protected virtual SearchDocument ConvertToProviderDocument(IndexDocument document, IList <Field> providerFields, string documentType) { var result = new SearchDocument { Id = document.Id }; document.Fields.Insert(0, new IndexDocumentField(AzureSearchHelper.RawKeyFieldName, document.Id) { IsRetrievable = true, IsFilterable = true }); foreach (var field in document.Fields.OrderBy(f => f.Name)) { var fieldName = AzureSearchHelper.ToAzureFieldName(field.Name); if (result.ContainsKey(fieldName)) { var newValues = new List <object>(); var currentValue = result[fieldName]; if (currentValue is object[] currentValues) { newValues.AddRange(currentValues); } else { newValues.Add(currentValue); } newValues.AddRange(field.Values); result[fieldName] = newValues.ToArray(); } else { var providerField = AddProviderField(documentType, providerFields, fieldName, field); var isCollection = providerField.Type.ToString().StartsWith("Collection("); var point = field.Value as GeoPoint; var value = point != null ? (isCollection ? field.Values.Select(v => ((GeoPoint)v).ToDocumentValue()).ToArray() : point.ToDocumentValue()) : (isCollection ? field.Values : field.Value); result.Add(fieldName, value); } } return(result); }
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); }