在Solr中的查询搜索期间使用group.ngroups

时间:2016-03-11 08:04:18

标签: solr

我想检查一下,在搜索中使用group.ngroups(包括匹配查询的组数)的结果分组会影响Solr的性能吗?我发现在添加group.ngroups参数后,搜索速度已经显着放缓。

我需要与查询匹配的组数量的值。除此之外,还有其他方法可以检索该值吗?

我有超过1000万份文档,索引大小超过500GB,我使用的是Solr 5.4.0。

的问候,
埃德

1 个答案:

答案 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;
    }
}