我想检查一下,在搜索中使用group.ngroups(包括匹配查询的组数)的结果分组会影响Solr的性能吗?我发现在添加group.ngroups参数后,搜索速度已经显着放缓。
我需要与查询匹配的组数量的值。除此之外,还有其他方法可以检索该值吗?
我有超过1000万份文档,索引大小超过500GB,我使用的是Solr 5.4.0。
的问候,
埃德
答案 0 :(得分:4)
是的,它会影响性能。需要对结果集执行的所有操作(例如分组)都会以某种方式影响性能。多少取决于太多因素确切地说多少(但你已经观察到了)。
您可以通过多种方式获取字段的唯一值的数量(应该与该字段的分组相同并计算组的数量),Yonik在his Count Distinct Values博文中显示了这些值。
独特的facet函数是Solr最快的实现,用于计算不同值的数量。
impl<T, L> Observer<L> for SumObserver<T>
where
for<'a> &'a L: IntoIterator<Item = &'a T>,
{
fn update(&self, observable: &Observable<L>) {
let mut sum: i64 = 0;
for item in observable.get() {
sum += (self.get_value)(item);
}
*self.current_sum.borrow_mut() = sum;
}
}