摘要: Solr对结果的分组处理除了facet还能够使用group。Solr的group是根据某一字段对结果分组,将每一组内知足查询的结果按顺序返回。算法
Group和Facet的概念很像,都是用来分组。Facet返回全部相关的结果并容许用户基于facet的目录从新定义结果集。Facet能够对分组数量进行过滤,以及排序,和日期范围,时间范围分组,可是若是你想获得具体的数据,还得须要查询一次或屡次。group能够获得分组的组数量,一次请求,能够拿到全部的数据。
Group和Facet能够结合起来使用,但只能使用facet.field
和facet.range
,还不支持日期date和维度统计pivot faceting.缓存
参数 | 类型 | 说明 |
---|---|---|
group | 布尔值 | 设为true,表示结果须要分组 |
group.field | 字符串 | 须要分组的字段,字段类型须要时是StrField或TextField,若是须要对多个字段进行group by,那么该参数能够声明屡次 |
group.func | 查询语句 | 能够指定查询函数 |
group.query | 查询语句 | 能够指定查询语句,能够对任意条件进行分组统计查询 |
rows | 整数 | 返回多少组结果,默认10 |
start | 整数 | 指定结果开始位置/偏移量 |
group.limit | 整数 | 每组返回多数条结果,默认1 |
group.offset | 整数 | 指定每组结果开始位置/偏移量,跟上面的group.limit一块儿能够达到分页的效果 |
sort | 排序算法 | 控制各个组的返回顺序 |
group.sort | 排序算法 | 控制每一分组内部的顺序 |
group.format | grouped/simple | 设置为simple能够使得结果以单一列表形式返回 |
group.main | 布尔值 | (true/false)等于true,将只返回最后一个group.query查询的分组数据,必定是最后一个group.query,若是最后的条件是group.field,也没有效果,同时其余分组统计条件都会失去做用 |
group.ngroups | 布尔值 | 设为true时,Solr将返回分组数量,默认fasle |
group.truncate | 布尔值 | 设为true时,facet数量将基于group分组中匹相关性高的文档,默认fasle |
group.cache.percent | 整数0-100 | 设为大于0时,表示缓存结果,默认为0。该项对于布尔查询,通配符查询,模糊查询有改善,却会减慢普通词查询。 |