public static void queryDataTemp() { List<Map<String, Object>> returnList = new ArrayList<Map<String, Object>>(); SolrQuery query = new SolrQuery("哈哈"); query.setParam("qf", "residence_addr owner_name"); query.setParam("defType", "edismax");//查询handler的类型,即查询解析器,如果要使用权重排序,至少要用dismax解析器,edismax还可以使用bf,即函数 query.setParam("q.op", "OR"); //默认是OR //查出的结果按照native_addr分组,并且得到分组后的数量 //setFacetMinCount(1):数量至少大于1才显示 //setFacetLimit(3):只显示3条记录 query.setFacet(true).setFacetMinCount(1).setFacetLimit(3).addFacetField("native_addr"); try { QueryResponse resp = solrServer.query(query); SolrDocumentList docList = resp.getResults(); List<FacetField> facets = resp.getFacetFields(); for(FacetField facet : facets) { System.out.println(facet.getName() + ":" + facet.getValueCount()); List<Count> values = facet.getValues(); for(Count c : values) { System.out.println(c.getName() + ":" + c.getCount()); } } for(SolrDocument doc : docList) { Collection<String> fieldNameList = doc.getFieldNames(); TreeMap<String, Object> result = new TreeMap<String, Object>(); for(String fieldName : fieldNameList) { result.put(fieldName, doc.get(fieldName)); } returnList.add(result); } } catch (SolrServerException e) { e.printStackTrace(); } finally { query.clear(); } for(Map<String, Object> map : returnList) { Iterator<Entry<String, Object>> it = map.entrySet().iterator(); while(it.hasNext()) { Entry<String, Object> e = it.next(); System.out.println(e.getKey() + ":" + e.getValue()); } } }
时间: 2024-08-30 14:51:33