【问题标题】:SOLR group by different date rangesSOLR 按不同日期范围分组
【发布时间】:2018-11-22 19:06:13
【问题描述】:

我在 solr 中有很多这样的数据:

{
    id: some_id
    date: 2008-01-01T00:00:00Z
    price: 34.20
    currency: "CAD"
    weight: 39.9
    etc
}

我想对其执行搜索以找到唯一的 id 集,并按时间对它们进行分组。所以有时我想找到满足每天、每周或每月搜索的项目。

我尝试执行此操作的第一种方法是将fq(字段查询)设置为我想要的日期范围,并设置facet.field=id 以获取该范围的唯一ID,但如果我想这样做每天我必须进行 365(+0/+1) 次查询,这非常痛苦而且非常缓慢。

对此的解决方案是使用facet.pivot=date,id 将其分解为每一天,然后为每一天提供一组 ID。这非常适合日常使用!但是,我们如何每周实现相同的目标?还是每月一次?

我想要的是第一个facet.pivot,即日期,是一个值范围。所以不要得到这个:

{
  "responseHeader":{
    ...
  },
  "facet_counts":{
    ...
    "facet_pivot":{
      "date,id":[{
          "field":"date",
          "value":"2008-01-01T00:00:00Z",
          "count":923,
          "pivot":[{
              "field":"id",
              "value":18,
              "count":1},
            {
              "field":"id",
              "value":66,
              "count":1},
            {
              "field":"id",
              "value":70,
              "count":1},
        ]
      }
      ...]
    }
}

我们得到这样的结果:

{
  "responseHeader":{
    ...
  },
  "facet_counts":{
    ...
    "facet_pivot":{
      "date,id":[{
          "field":"date",
          "value":"2008-01-01T00:00:00Z TO 2008-01-31T00:00:00Z",
          "count":923,
          "pivot":[...similar to above]
      }
      ...]
    }
}

换句话说,它不是根据date 的值进行分组,而是根据范围/间隔/等进行分组。我玩弄了 SOLR 的间隔、范围等,但似乎无法得到有效的东西。

【问题讨论】:

    标签: search solr


    【解决方案1】:

    请尝试像下面这样来获得每周间隔的月度范围。

    facet.range={!tag=rdt}date&facet.range.start=NOW/DAY&facet.range.gap=+7DAY&facet.range.end=NOW/DAY +30DAY&facet=true&facet.pivot={!range=rdt}date,id

    我希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2013-11-04
      • 2021-11-16
      • 2013-05-19
      • 2010-10-31
      • 2016-09-22
      • 2019-02-19
      • 2019-02-14
      相关资源
      最近更新 更多