我正在使用Solr 6.5.1

LatLonType现在已弃用(https://lucene.apache.org/solr/guide/6_6/spatial-search.html)
并且我正在尝试使用LatLonPointSpatialField。我还需要它具有多值性。

我的字段定义如下:
<fieldType name="location" class="solr.LatLonPointSpatialField" docValues="true"/>
我以前曾在LatLonType字段上进行过这样的增强:
boost=recip(geodist(sfield,45.15,-93.12),3 ,10000,3000)(我正在使用eDisMax)。

更改空间数据类型后,出现此错误:

我不懂的A ValueSource isn't directly available from this field. Instead try a query using the distance as the score.

该文档没有说明将geodist函数与edismax一起在boost=参数中使用。相反,它只是建议使用函数值进行排序:
https://lucene.apache.org/solr/guide/6_6/spatial-search.html#SpatialSearch-geodist

但是,这对我不起作用,我不需要按距离排序,我想将geodist()函数与score乘以更改结果分数。

最佳答案

对我有用的解决方案:

之前(LatLonType):
boost=recip(geodist(coordinates_ll,49.175,-123.003),1,10,1)
之后(LatLonPointSpatialField):
boost=recip(geodist(),1,10,1)&pt=49.175,-123.003&sfield=coordinates_ll

10-06 15:21