solr facet java分组统计

  • Post author:
  • Post category:java


使用:

SolrQuery query = new SolrQuery();
		if (StringUtils.isNotBlank(name)) {
			for (String s : name.split(",")) {
				if (com.qhwl.common.utils.StringUtils.isChinese(s)) {
					sb.append(s);
				} else {
					sb.append("*" + s + "* ");
				}
			}
			query.setQuery(sb.toString());// 从查全部
		} else {
			query.setQuery("*:*");// 无参数,就查全部
		}
query.addFacetField("datasource_copy");
		QueryResponse res = SolrUtil.queryByGroup(query);
		for (FacetField f : res.getFacetFields()) {
			System.out.println("name1:" + f.getName() + "value1:" + f.getValueCount());
			for (Count count : f.getValues()) {
				if (count.getCount() > 0) {
					for (int i = 0; i < orgList.size(); i++) {
						if (orgList.get(i).getName().equalsIgnoreCase(count.getName())) {
							orgList.get(i).setCount((int) count.getCount());
						}
					}
				}
				System.out.println("name:" + count.getName() + "value:" + count.getCount());
			}
		}

java分组方法:

	/**
	 * solr facet 分组统计
	 * 
	 * @param query
	 *            需传入查询条件 设置分组字段可设置多个
	 * @return query.setQuery(sb.toString());//设置查询条件
	 *         query.addFacetField(“modified_l”);//增加分组字段 q
	 *         rsp.getFacetFields()//获取统计信息
	 */
	public static QueryResponse queryByGroup(SolrQuery query) {
		try {
			HttpSolrClient server = new HttpSolrClient.Builder(SOLR_URL + Global.getConfig("solr_core_all"))
					.withConnectionTimeout(10000).withSocketTimeout(60000).build();
			query.setIncludeScore(false);// 是否按每组数量高低排序
			query.setFacet(true);// 是否分组查询
			query.setRows(0);// 设置返回结果条数,如果你时分组查询,你就设置为0
			// query.setFacetSort(true);//分组是否排序
			query.setFacetLimit(-1);// 限制每次返回结果数
			QueryResponse rsp = server.query(query);
			return rsp;
			// List<Count> returnList =
			// rsp.getFacetField(groupField).getValues();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}





分组时经常会统计分词字段这时候就会出现字段拆分统计,这种统计并没意义,所有创建一个相应的String类型的copy字段


<field name=”datasource” type=”string” indexed=”true” stored=”true”/>


<field name=”datasource_copy” type=”string” indexed=”true” stored=”true” />


<copyField source=”datasource” dest=”datasource_copy” />



版权声明:本文为weixin_30512027原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。