如何使用Spring Data Solr做空间检索并排序

本文介绍了四种使用Spring Data Solr进行空间检索并排序的方法。通过设置查询参数、利用SolrCallback、DistanceField以及自定义Score属性,详细阐述了如何在Spring Data Solr中获取并排序地理位置数据。
摘要由CSDN通过智能技术生成

解决方法一

To set fl you have to use query.addProjectionOnField(String fieldname).

    SimpleQuery query = new SimpleQuery(conditions);
    query.addProjectionOnField("*");
    query.addProjectionOnField("score");

For mapping score into EventDocument you’ll have to add the property as follows.

    @Indexed(value = "score", readonly = true)
    private Float score;

Unfortunately there seems to be an issue with geodist() that might be caused by the way spring data solr creates spatial query. Opended DATASOLR-130 for that.

Distance can be requested using SolrCallback along with SolrTemplate by setting spatial paramters yourself.

 SimpleQuery query = new SimpleQuery(conditions);
    query.addProjectionOnField("*");
    query.addProjectionOnField("distance:geodist()");

    DefaultQueryParser qp = new DefaultQueryParser();
    final SolrQuery solrQuery = qp.constructSolrQuery(query);
    solrQuery.add("sfield", "store");
    solrQuery.add("pt", GeoConverters.GeoLocationToStringConverter.INSTANCE.convert(new GeoLocation(45.15, -93.85)));
    solrQuery.add("d", GeoConverters.DistanceToStringConverter.INSTANCE.convert(new Distance(5)));

    List<EventDocument> result = template.execute(new SolrCallback<List<EventDocument>>() {
   

      @Override
      public List
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值