Ravendb Spatial search with ORderBydistance



我需要从一个点获取最近的 15 个位置。我首先创建了一个空间索引,然后我试图通过调用 OrderByDistance 方法按距离对结果进行排序,但我收到此异常

无法执行查询方法"按距离排序"。查询静态索引"供应商坐标查找"时,不能使用字段"空间点(纬度,经度("。 动态空间字段只能与动态查询一起使用,对于静态索引查询,请使用索引定义中定义的有效空间字段。

这是我的查询

List<SupplierCoordinates> suplierCoordinates = _documentSession
.Query<SupplierCoordinates, SupplierCoordinatesLookup>()
.Spatial(
"Coordinates",
criteria => criteria.WithinRadius(0, supplierCoordinates.Latitude, supplierCoordinates.Longitude))
.OrderByDistance(factory => factory.Point(x => x.Latitude, x => x.Longitude), supplierCoordinates.Latitude, supplierCoordinates.Longitude)
.Take(15)
.ToList();

这是我索引的代码

Map = collection => from doc in collection
select new
{
Coordinates = CreateSpatialField(doc.Latitude, doc.Longitude)
};
Store(x => x.Id, FieldStorage.Yes);

尝试使用:

_documentSession
.Query<SupplierCoordinates, SupplierCoordinatesLookup>()
.OrderByDistance("Coordinates", supplierCoordinates.Latitude, supplierCoordinates.Longitude)
.Take(15)
.ToList();

您的索引已包含点,因此您只需向查询提供索引中的字段("坐标"(

最新更新