如何使用countDistinct获取由...分组的不同值,而不使用json.facet

时间:2015-10-26 02:43:44

标签: solr banana silk

使用solr 5.2.1我试图在sql中做一些事情:

SELECT COUNT(DISTINCT(SESSION_ID)), COUNTRY FROM LOG
GROUP BY COUNTRY

following答案可行,但使用json.facet,我想为此查询创建一个banan面板,而无需重新编写查询和过滤服务。

这是我到目前为止所得到的:

stats.countDistinct=true stats.distinctValues=true/false

JSON回复:

  "responseHeader":{
    "status":0,
    "QTime":3,
    "params":{
      "q":"*:*",
      "stats.countDistinct":"true",
      "indent":"true",
      "stats":"true",
      "stats.facet":"country_s",
      "fq":"serverUtc_dt:[2015-09-01T07:59:00.000Z TO 2015-09-01T07:59:01.000Z]",
      "rows":"0",
      "wt":"json",
      "stats.distinctValues":"false",
      "stats.field":"sessionid_s"}},

如果distinctValues为true或false,则无效,结果中不提供countDistinct值。

以下内容:

stats.calcdistinct=true

JSON回复:

  "responseHeader":{
    "status":0,
    "QTime":7,
    "params":{
      "q":"*:*",
      "stats.calcdistinct":"true",
      "indent":"true",
      "stats":"true",
      "stats.facet":"country_s",
      "fq":"serverUtc_dt:[2015-09-01T07:59:00.000Z TO 2015-09-01T07:59:01.000Z]",
      "rows":"0",
      "wt":"json",
      "stats.distinctValues":"false",
      "stats.field":"sessionid_s"}},

这似乎正在做我想要的,但却为结果添加了数百个不同的值。

根据documentation calcdistinct将countDistinct和distinctValues设置为true,但用countDistinct替换calcdistinct并且distinctValues为true不会做同样的事情。

有没有办法让计数分明,而不会得到数十万个不同的值?

这可以在不使用facet.json的情况下完成吗?

1 个答案:

答案 0 :(得分:0)

你必须使用stats.field参数来解决这个问题,不能直接使用distinctValues或countDistinct。

在我的问题中,我只需要主要域的不同计数。

"params":{
      "q":"*:*",
      "stats.calcdistinct":"true",
      "indent":"true",
      "stats":"true",
      "rows":"0",
      "wt":"json",
      "stats.field":["{!key=c_primary_domain}c_primary_domain",
        "{!distinctValues=false}c_primary_domain"]}},