使用 ORderBydistance 进行 Ravendb 空间搜索

Ravendb Spatial search with ORderBydistance

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

Cannot execute query method 'OrderByDistance'. Field 'spatial.point(Latitude, Longitude)' cannot be used when static index 'SupplierCoordinatesLookup' is queried. Dynamic spatial fields can only be used with dynamic queries, for static index queries please use valid spatial fields defined in index definition.

这是我的查询

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

您的索引已包含点,因此您只需将索引 ("Coordinates") 中的一个字段提供给您的查询