Solr faceting:计算“其他”类别

我的SOLR应用程序在“ descendant_path”字段上具有刻面特征。构面的数量可以很大(例如100),但我认为它没有用。因此,我最好有X个(例如2个)构面和一个标记为“其他”的构面。

到目前为止,我有:

 - set an unlimited number of facets (with facet.limit = -1),- sorted them in decreasing count (with facet.sort = count),- taken the first X (eg 2) elements
 - added the counts of the next elements together to form the "others" count

因为我找不到可以做到这一点的Solr构面参数。

因此,不要重新发明轮子,我需要知道是否已经有一个Solr参数,该参数可以返回facet.limit中未返回的所有构面计数之和?

例如,如果Solr使用facet.limit = -1返回5个构面
A(34) B(30) C(28) D(10张) E(4)

如果现在我设置facet.limit = 2,它将返回 A(34) B(30)

是否有一个参数返回不包含的方面的所有计数的总和(即C,D和E的计数)=>其他(42)?

请注意:facet.missing不能解决问题,因为它处理的是缺少类别的文档,而不是缺少构面的文档。

真的没有参数可以实现我的目标吗?或者我只是错过了目标?

任何帮助表示赞赏

crazy2079 回答:Solr faceting:计算“其他”类别

没有内置属性other可以进行此计算。

但是,使用以下公式很容易计算:

(numFound - sum(facet_counts)) - missing

在以下结果集中:

{ 
   "responseHeader":{ 
      "zkConnected":true,"status":0,"QTime":39,"params":{ 
         "q":"post_content:term","facet.field":"my_terms","facet.missing":"true","fq":"date:[2018-12-11T00:00:00Z TO 2019-12-10T23:59:59Z]","facet.mincount":"3","rows":"0","facet":"true","wt":"json"
      }
   },"response":{ 
      "numFound":3883,"start":0,"maxScore":10.545702,"docs":[ ..
      ]
   },"facet_counts":{ 
      "facet_fields":{ 
         "my_terms":{ 
            "someterm":59,"anotherterm":43,"yetanotherterm":55,"":323
         }
      },}
}

所以我们有:

(3883 - (59 + 43 + 55)) - 323 = 3403

其他= 3403

本文链接:https://www.f2er.com/2912487.html

大家都在问