RavenDB SpatialSearch SpatialGenerate IgnoredLuceueField

У меня возникли проблемы с генерацией SpatialIndex.

Я хочу получить ближайшее событие из заданного места.

Когда я запрашиваю, мои координаты имеют значение IgnoredLuceueField, я думаю, что они имеют в виду LuceneField, но в нем говорится Luceue, так что это не опечатка от меня.

У меня есть следующий индекс

 public class ClosestEvent : AbstractIndexCreationTask<Event,ClosestEvent.ReduceResult>
{
    public ClosestEvent()
    {
        Map = events=> from myEvent in events
            select new
            {
                Id = myEvent .Id.ToString(),
                Coordinates = SpatialGenerate("Coordinates",myEvent.eventLocation.Latitude, myEvent.eventLocation.Longitude)

            };
        Reduce = results => from result in results
                            group result by result.Id
                                into g
                                select new ReduceResult
                                {
                                   Coordinates = g.Select(x=>x.Coordinates).First(),
                                    Id = g.Key
                                };
    }

    public class ReduceResult
    {
        public string Id { get; set; }
        public object Coordinates { get; set; }
    }
}

И у меня есть следующий запрос для этого:

       public ClosestEvent.ReduceResult GetClosestEvent(GeolocationFilter filter)
    {

        using (var session = Store.OpenSession())
        {
            var query = session.Query<ClosestEvent.ReduceResult, ClosestEvent>().Customize(x => x.SortByDistance(
                lat: filter.lat,
                lng: filter.lng,
                fieldName: "Coordinates"
                )).Take(1).ToList();

            return query.First();

        }
    }

Это возвращает:

Id: Guid как строка

Координаты: "IgnoredLuceueField"

Дополнительная информация: моя база данных размещена на ravenHQ

1 ответ

Вот мой индекс и запрос

 Map = docs =>
                from doc in docs
                select new
                {
                    doc.Id,                   
                    _ = SpatialIndex.Generate(doc.Latitude, doc.Longitude)
                };

  var results = session
                    .Advanced
                    .LuceneQuery<Class>("IndexName")
                    .WithinRadiusOf(query.SearchRadius, query.Latitude, query.Longitude, SpatialUnits.Miles)                        
                    .SortByDistance()
Другие вопросы по тегам