private static QueryContainer CreateGeoDistanceFilter(GeoDistanceFilter geoDistanceFilter) { return(new GeoDistanceQuery { Field = ElasticSearchHelper.ToElasticFieldName(geoDistanceFilter.FieldName), Location = geoDistanceFilter.Location.ToGeoLocation(), Distance = new Distance(geoDistanceFilter.Distance, DistanceUnit.Kilometers), }); }
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 Filter CreateGeoDistanceFilter(GeoDistanceFilter geoDistanceFilter) { Filter result = null; if (geoDistanceFilter?.FieldName != null && geoDistanceFilter.Location != null) { var spatialContext = SpatialContext.GEO; var distance = DistanceUtils.Dist2Degrees(geoDistanceFilter.Distance, DistanceUtils.EARTH_MEAN_RADIUS_KM); var searchArea = spatialContext.MakeCircle(geoDistanceFilter.Location.Longitude, geoDistanceFilter.Location.Latitude, distance); var spatialArgs = new SpatialArgs(SpatialOperation.Intersects, searchArea); var fieldName = LuceneSearchHelper.ToLuceneFieldName(geoDistanceFilter.FieldName); var strategy = new PointVectorStrategy(spatialContext, fieldName); result = strategy.MakeFilter(spatialArgs); } return(result); }