要设置
fl您必须使用
query.addProjectionOnField(String fieldname)。
SimpleQuery query = new SimpleQuery(conditions); query.addProjectionOnField("*"); query.addProjectionOnField("score");为了映射
score到其中,
Eventdocument您必须按如下所示添加属性。
@Indexed(value = "score", readonly = true) private Float score;
不幸的是,似乎有一个问题
geodist()可能是由Spring数据Solr创建空间查询的方式引起的。为此打开了DATASOLR-130。
距离可以使用要求
SolrCallback沿着
SolrTemplate自己设定的空间paramters。
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<Eventdocument> doInSolr(SolrServer solrServer) throws SolrServerException, IOException { return template.getConverter().read(solrServer.query(solrQuery).getResults(), Eventdocument.class); } });稍微容易一点就是为提供所需的参数
geodist()。
SimpleQuery query = new SimpleQuery(conditions); query.addProjectionOnField("*"); query.addProjectionOnField("distance:geodist(store," + GeoConverters.GeoLocationToStringConverter.INSTANCE.convert(new GeoLocation(45.15, -93.85)) + ")"); Page<Eventdocument> result = template.queryForPage(query, Eventdocument.class);希望有帮助!



