加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Solr中的多个字段上执行嵌套聚合?

发布时间:2020-12-14 04:55:16 所属栏目:百科 来源:网络整理
导读:我试图以嵌套的方式执行几个字段的搜索结果聚合(计数和求和)分组. 例如,使用本文末尾显示的模式,我希望能够得到“大
我试图以嵌套的方式执行几个字段的搜索结果聚合(计数和求和)分组.

例如,使用本文末尾显示的模式,我希望能够得到“大小”的总和按“类别”分组,并进一步按“子类别”进行分组,得到如下内容:

<category name="X">
  <subcategory name="X_A">
    <size sum="..." />
  </subcategory>
  <subcategory name="X_B">
    <size sum="..." />
  </subcategory>
</category>
....

我一直在寻找Solr的Stats组件,据我所知,它不允许嵌套聚合.

如果有人知道某种方式来实现这一点,无论是否有Stats组件,我都会感激不尽.

以下是目标模式的简化版本:

<types>
  <fieldType name="string" class="solr.StrField" />
  <fieldType name="text" class="solr.TextField">
    <analyzer><tokenizer class="solr.StandardTokenizerFactory" /></analyzer>
  </fieldType>
  <fieldType name="date" class="solr.DateField" />
  <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0" />
</types>

<fields>
  <field name="id" type="string" indexed="true" stored="true" />
  <field name="category" type="text" indexed="true" stored="true" />
  <field name="subcategory" type="text" indexed="true" stored="true" />
  <field name="pdate" type="date" indexed="true" stored="true" />
  <field name="size" type="int" indexed="true" stored="true" />
</fields>

解决方法

Solr 5.1中的新分面模块可以执行此操作,它在 https://issues.apache.org/jira/browse/SOLR-7214中添加

以下是如何将sum(size)添加到每个facet bucket,并按该统计信息降序排序.

json.facet={
  categories:{terms:{
    field:category,sort:"total_size desc",// this will sort the facet buckets by your stat 
    facet:{
      total_size:"sum(size)"  // this calculates the stat per bucket
    }
  }}
}

这就是你要在子类别的子面上添加的方法:

json.facet={
  categories:{terms:{
    field:category,facet:{
      total_size:"sum(size)",subcat:{terms:{ // this will facet on the subcategory field for each bucket
        field:subcategory,facet:{
         sz:"sum(size)"  // this calculates the sum per sub-cat bucket          
      }}
    }
  }}
}

因此,上面将给出类别和子类别级别的总和(大小).新facet模块的文档目前为http://yonik.com/json-facet-api/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读