记一次生产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);//显示几条数据
posted @ 2020-01-02 22:31  天宇轩-王  阅读(204)  评论(1编辑  收藏  举报