Sorting Solr Spatial:是否可以按一个地理位置字段进行过滤并按另一个进行排序?

Sorting Solr Spatial:是否可以按一个地理位置字段进行过滤并按另一个进行排序?,sorting,solr,geospatial,distance,spatial,Sorting,Solr,Geospatial,Distance,Spatial,我们希望在一个地理场上执行空间搜索,但根据第二个地理场对结果进行距离排序。Solr似乎对LatLonType支持这一点。在这里,我们只需向geodist函数添加参数 geodist(param1、param2、param3)函数支持(可选)参数: 参数1:斯菲尔德 参数2:纬度(pt) 参数3:经度(pt) 不幸的是,这似乎不适用于SpatialRecursivePrefixTreeFieldType。但是,我们必须使用SpatialRecursivePrefixTreeFieldType,因为

我们希望在一个地理场上执行空间搜索,但根据第二个地理场对结果进行距离排序。Solr似乎对LatLonType支持这一点。在这里,我们只需向geodist函数添加参数

geodist(param1、param2、param3)函数支持(可选)参数:

参数1:斯菲尔德 参数2:纬度(pt) 参数3:经度(pt)


不幸的是,这似乎不适用于SpatialRecursivePrefixTreeFieldType。但是,我们必须使用SpatialRecursivePrefixTreeFieldType,因为每个文档都有多个位置,LatLonType不支持这一点。除了编写我们自己的字段类型,还有其他解决方案吗?

我终于找到了答案。然而,解决方案有点像黑客。我现在创建了一个插件jar,其中包含GeoDistValueSourceParser类的修改版本。在这个类中,我修改了parseSfield方法,只使用常量sfield,它应该用于排序。然后,我通过添加行来连接这个类

到solrconfig.xml。到目前为止,我不明白为什么GeoDistValueSourceParser是不可配置的?以一种可以指定不同地理字段进行排序的方式编写它应该不会太困难