SolrTemplate query 返回结果封装为map集合
时间: 2023-05-27 10:01:48 浏览: 93
查询返回Map
SolrTemplate中的query方法返回的结果是List<T>类型,可以通过遍历List来获取每个Document对象,然后再把每个Document对象的字段封装到Map集合中。
以下是一个示例代码:
```java
List<Map<String, Object>> resultList = new ArrayList<>();
String keyword = "apple";
Query query = new SimpleQuery(new Criteria("title").contains(keyword));
query.setRows(10); // 设置返回结果的最大数量为10
query.setSort(Sort.by("price").ascending()); // 设置按照价格升序排序
query.setFields("id", "title", "price"); // 设置要返回的字段
QueryResponse response = solrTemplate.query(query);
for (SolrDocument document : response.getResults()) {
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("id", document.get("id"));
resultMap.put("title", document.get("title"));
resultMap.put("price", document.get("price"));
resultList.add(resultMap);
}
```
在上面的代码中,我们先定义了一个List<Map<String, Object>>类型的结果集,然后创建了一个Query对象,设置了查询条件、返回结果数量、排序方式和返回字段等参数。通过调用solrTemplate.query方法执行查询操作,得到QueryResponse对象。然后遍历QueryResponse中的SolrDocument对象,将每个Document对象的id、title、price字段封装到Map集合中,最终将Map集合添加到结果集中。
需要注意的是,SolrDocument中的字段值类型可能是Object类型,需要根据实际情况进行类型转换。如果有多个Document对象需要封装,建议使用Java8的Stream API来简化代码。
阅读全文