记一次生产Slor分组的bug
Facet种类
Solr的Facet有多种形式,它们的参数不尽相同。
Filed-Value Facet
可以用于Text或者String类型的字段。
参数 | 说明 |
---|---|
facet.field | 需要做facet查询的字段,必须指定,否则其他参数无效 |
facet.sort | 排序规则,可以是count(默认值,由大到小)或index(字典顺序) |
facet.limit | 控制返回的数量,默认100 |
facet.missing | 控制是否考虑没有facet字段,默认false |
由于当时用到分组的时候,也是在网上找的博客,没有仔细的研究,结果当分组条数过多的时候就出现问题了,发现返回的结果少了,但是总数没有变。
而且返回的条数总是100条,因为之前要对分组后的数据还要截取去重,所以也没有发现这个问题。
解决:条数改的多一些
SolrQuery query = new SolrQuery();// 建立一个新的查询 query.setQuery(keywords); query.setFacet(true);// 设置facet=on query.addFacetField(new String[] {"v1_groupId"});// 设置需要facet的字段 query.setFacetLimit(10000);// 限制facet返回的数量
如果是group分组的话
SolrQuery query = new SolrQuery();// 建立一个新的查询 query.setQuery(keywords); query.setParam(GroupParams.GROUP,true);//是否分组 query.setParam(GroupParams.GROUP_FIELD,"v1_teacherId");//分组的域 query.setParam(GroupParams.GROUP_LIMIT,"100");//每组显示的个数,默认为1 query.setStart(1); //起始索引值 query.setRows(10000);//显示几条数据