【发布时间】:2019-10-06 17:36:03
【问题描述】:
我需要从一个点获取最近的 15 个位置。我首先创建了一个空间索引,然后我尝试通过调用 OrderByDistance 方法按距离对结果进行排序,但我得到了这个异常
无法执行查询方法“OrderByDistance”。查询静态索引“SupplierCoordinatesLookup”时,不能使用字段“spatial.point(Latitude, Longitude)”。 动态空间字段只能用于动态查询,静态索引查询请使用索引定义中定义的有效空间字段。
这是我的查询
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);
【问题讨论】: