我正在使用 Solr 7.4.0 和 spring-boot-starter-data-solr 2.1.2 版本
以前,我使用的是Solr 5.3.1,并使用下面的代码来获取geofilt()结果
Point point = new Point(42.9254,-78.8696)
Criteria criteria = new Criteria('latLong')
criteria.within(point, new Distance(100, Metrics.MILES))
SimpleQuery query = new SimpleQuery(criteria)
.addProjectionOnFields(new SimpleField('score'))
.addSort(new Sort(Sort.Direction.ASC, 'score'))
.setRows(100)
SolrQuery由SolrTemplate内部形成
q={!geofilt+pt=42.9254,-78.8696+sfield=latLong+d=160.9344}&rows=100&fl=score&sort=score+asc
升级到Solr 7.4.0后,上面的查询对我所有的结果返回的分数均为1。
Solr 7.4文档建议在geofilt()中添加局部参数得分以获得正确的结果。
参考:https://lucene.apache.org/solr/guide/7_4/spatial-search.html#searching-with-query-parsers
当我在geofilt()中手动添加score = km / miles时,查询会在score中给出正确的结果
q={!geofilt+pt=42.9254,-78.8696+sfield=latLong+d=160.9344%20score=kilometers}&rows=100&fl=score&sort=score+asc
但是如何使用spring-boot-data-solr在geodist查询中添加 score =公里或 score =英里?