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()