Beispiel #1
0
 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);
        }
Beispiel #3
0
        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);
        }