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 string CreateGeoDistanceFilter(GeoDistanceFilter geoDistanceFilter, IList <Field> availableFields) { string result; var availableField = availableFields.Get(geoDistanceFilter.FieldName); if (availableField != null) { var distance = AzureSearchHelper.GetGeoDistanceExpression(availableField.Name, geoDistanceFilter.Location); result = string.Format(CultureInfo.InvariantCulture, "{0} le {1}", distance, geoDistanceFilter.Distance); } else { result = AzureSearchHelper.NonExistentFieldFilter; } return(result); }
private static string CreateRangeFilter(RangeFilter rangeFilter, IList <Field> availableFields) { string result; var availableField = availableFields.Get(rangeFilter.FieldName); if (availableField != null) { var expressions = rangeFilter.Values .Select(v => GetRangeFilterValueExpression(v, availableField.Name)) .Where(e => !string.IsNullOrEmpty(e)) .ToArray(); result = AzureSearchHelper.JoinNonEmptyStrings(" or ", true, expressions); } else { result = AzureSearchHelper.NonExistentFieldFilter; } return(result); }
private static string GetSortingField(SortingField sortingField, IList <Field> availableFields) { string result = null; var availableField = availableFields.Get(sortingField.FieldName); if (availableField != null) { var geoSorting = sortingField as GeoDistanceSortingField; var fieldName = geoSorting == null ? availableField.Name : AzureSearchHelper.GetGeoDistanceExpression(availableField.Name, geoSorting.Location); result = string.Join(" ", fieldName, sortingField.IsDescending ? "desc" : "asc"); } else if (sortingField.FieldName == "score") { result = string.Join(" ", "search.score()", sortingField.IsDescending ? "desc" : "asc"); } return(result); }