Solr: фильтрация с использованием диапазонов фасетов с опорой - PullRequest
1 голос
/ 14 марта 2019

Я выполняю запрос Solr, чтобы получить фасеты в поле даты. У меня начальный диапазон настроен на 1/1/2019, а мой конец на 01.04.2009. Различные пробелы, которые я использую: +7 дней, +1 месяц, +1 год. В моем примере ниже приведены результаты, когда я использую +7 дней.

"facet_counts":{
  "facet_ranges":{
    "published_date":{
      "counts":[
        "2019-01-01T00:00:00Z",14,
        "2019-01-15T00:00:00Z",5,
        "2019-01-29T00:00:00Z",6,
        "2019-02-05T00:00:00Z",11,
        "2019-02-12T00:00:00Z",24,
        "2019-02-19T00:00:00Z",31,
        "2019-03-05T00:00:00Z",4,
        "2019-03-12T00:00:00Z",5,
        "2019-03-19T00:00:00Z",11,
        "2019-03-26T00:00:00Z",35],
      "gap":"+7DAYS",
      "start":"2019-01-01T00:00:00Z",
      "end":"2019-04-02T00:00:00Z"
    }
  }
}

Мне нужна указанная выше информация о фасете, чтобы я мог классифицировать документы, которые я собираюсь использовать для графика, в эти группы. Таким образом, 14 документов для диапазона «2019-01-01T00: 00: 00Z» должны отображаться для этой группы и так далее. Это будут те грани, на которых будут представлены остальные мои данные.

Теперь я хочу развернуть другое поле available_inventory, поскольку оно будет использоваться для отображения другой части для диапазона.
Вот мои результаты для этой оси.

"facet_pivot":{
  "available_inventory":[{
      "field":"available_inventory",
      "value":"12",
      "count":64},
    {
      "field":"available_inventory",
      "value":"1",
      "count":57},
    {
      "field":"available_inventory",
      "value":"5",
      "count":57},
    {
      "field":"available_inventory",
      "value":"9",
      "count":56},
    {
      "field":"available_inventory",
      "value":"4",
      "count":52},
    {
      "field":"available_inventory",
      "value":"6",
      "count":52},
    {
      "field":"available_inventory",
      "value":"7",
      "count":51},
    {
      "field":"available_inventory",
      "value":"15",
      "count":50},
    {
      "field":"available_inventory",
      "value":"16",
      "count":50},
    {
      "field":"available_inventory",
      "value":"18",
      "count":50},
    {
      "field":"available_inventory",
      "value":"19",
      "count":50},
    {
      "field":"available_inventory",
      "value":"0",
      "count":49},
    {
      "field":"available_inventory",
      "value":"17",
      "count":49},
    {
      "field":"available_inventory",
      "value":"14",
      "count":48},
    {
      "field":"available_inventory",
      "value":"2",
      "count":48},
    {
      "field":"available_inventory",
      "value":"13",
      "count":47},
    {
      "field":"available_inventory",
      "value":"10",
      "count":46},
    {
      "field":"available_inventory",
      "value":"11",
      "count":43},
    {
      "field":"available_inventory",
      "value":"3",
      "count":43},
    {
      "field":"available_inventory",
      "value":"8",
      "count":36}]
    }
  }
}

Пока все хорошо. Но эти значения не являются репрезентативными для диапазонов, возвращаемых в разделе facet_ranges. Есть ли способ, которым я могу получить две сетки? Я попытался использовать facet.field вместо pivot.field, но, опять же, нет контекста (или даже фильтрации) для того, что возвращается как часть диапазонов.

Это тот случай, когда мне нужно что-то сделать с этими данными facet_ranges с точки зрения получения документов, соответствующих этому диапазону (например, 14 документов для "2019-01-01T00: 00: 00Z"), мне нужно представить последующий запрос, в котором ключ публикации_даты документа имеет значение для каждого из этих диапазонов, а затем агрегирует значения available_inventory. Если это так, то есть ли смысл пытаться использовать дополнительные аргументы facet.field? Или используя эти поля в качестве опорных точек? Мне интересно, есть ли способ сделать это с помощью одного запроса. Если нет способа, как я могу отправить запрос таким образом, чтобы были возвращены все документы для определенного диапазона (например, «2019-01-01T00: 00: 00Z»)? Учитывая тот факт, что все, к чему я собираюсь иметь доступ после факта, это дата начала?

Надеюсь, я достаточно хорошо объясняю себя ...

Thnx
Christoph

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...