Solr - 多边形搜索 - 按距离从多边形中心排序结果

Solr - Polygon Search - Sort results from center of the polygon by distance

我们之前使用的是 Lucene 4 内核 api,最近迁移到 SolrCloud v 7.7.X。

我有以下用于对多边形进行空间查询的字段定义 -

 <fieldType name="location_rpt"   class="solr.SpatialRecursivePrefixTreeFieldType"
               spatialContextFactory="JTS"
               autoIndex="true"
               validationRule="repairBuffer0"
               distErrPct="0.025"
               maxDistErr="0.001"
               geo="true" 
               distanceUnits="kilometers" /> 

这是我的字段定义 -

 <field name="LATLON" multiValued="true" type="location_rpt" indexed="true"/>

这是我的示例查询 -

q=*:*&fq={!field f=LATLON}Intersects(POLYGON(( -74.31737 40.61442, -73.48103 40.61442, -73.48103 41.24627, -74.31737 41.24627, -74.31737 40.61442)))&fq=TYPE:HOTEL&cache=true&fl=*,score&debug=false&rows=2000

结果不按任何特定顺序返回,但我希望它们始终基于多边形中心的距离返回。

我们缺少什么?

你可以像这样使用 geofilt 方法

fq= "{!geofilt pt=" + latLng + " sfield=geoBoundary d=" + distance.get + " sort=geodist(geoBoundary," + latLng + ") asc}")
  • latlng = your location point
  • geoBoundary = your polygon