Solr динамические ценовые диапазоны и группы - PullRequest
5 голосов
/ 31 августа 2011

Отслеживание вопросов

если я правильно понимаю, чтобы получить количество совпадений на ценовые интервалы в Solr, можно использовать следующие способы:

  • на статические ценовые интервалы:
    • facet.range
    • facet.query
  • за динамические ценовые интервалы

Чтобы получить только минимальную цену и максимальную цену:

  • для поля «цена» навесь индекс: StatsComponent

Теперь мой вопрос: я могу получить работу по группировке результатов, но как получить минимальную и максимальную цену для каждой группы (& group = true).Есть ли с ним связанный Solr JIRA?

Lucene JIRA 3097: фасетирование постгруппы представляет результаты в глобальных фасетах, а не в результатах "на группу".

1 Ответ

0 голосов
/ 08 июля 2016

Версия Solr: 5.4 и выше.

У меня есть решение для этого, и я реализовал в своем проекте.

Вы должны использовать фасет json для достижения максимального и минимального значения на основе результата фасета.

    json.facet={
   tags_group:{
      type:terms,
      field:tags,
      limit:-1,
      facet:{
         pricemin:{
            type:terms,
            field:price,
            limit:1,
            sort:{
               x:asc
            },
            facet:{
               x:"min(price)"
            }
         },
         pricemax:{
            type:terms,
            field:price,
            limit:1,
            sort:{
               y:desc
            },
            facet:{
               y:"max(price)"
            }
         }
      }
   }
}

В приведенном выше аспекте Json я использовал теги как поля (многозначные), и это создаст контейнер, подобный этому

<str name="val">Letter Holder</str>
<int name="count">2</int>
<lst name="pricemin">
    <arr name="buckets">
        <lst>
            <double name="val">899.0</double>
            <int name="count">1</int>
            <double name="x">899.0</double>
        </lst>
    </arr>
</lst>
<lst name="pricemax">
    <arr name="buckets">
        <lst>
            <double name="val">1299.0</double>
            <int name="count">1</int>
            <double name="y">1299.0</double>
        </lst>
    </arr>
</lst>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...