Price range: алго для генерации

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 29 июня 2013 в 16:36

Вообщем задача сделать список диапазонов фильтра по цене, как в амазоне например

то есть

до 10$
10$ - 100$
100$ - 300$
300$ - 500$

в пхп есть функция получения диапазонов (range()) имея минимальное, максимальное значение общего диапазона и величина шага. Так вот, проблема в интелектуальном определении последнего (шага)

Не хотелось бы фиксированно определять на сколько частей разбивать разницу между максимальной и минимальной ценой, так как допустим такая ситуация: всего 2 товара в категории, товар 1 - 10баксов, товар 2 - 100 баксов. У нас стоит жёсткое значение шага, который разбивает на 3 диапазона цен, но товаров то 2! Это явный ляп, здесь будет уместно показывать "от 10 до 100 баксов" либо даже вообще убрать диапазон

Здесь нужно математическое алго для динамического определения шага разбивки или подскажите, на чём базировать лучше жёсткие настройки шага (я пока додумался максимум до процентного значения от разницы между максимом и минимумом)

Комментарии

Аватар пользователя Crea Crea 29 июня 2013 в 19:53

Когда я смотрел последний раз решения по фасетам, там вроде было нормальной практикой скрывать пустые фасеты.
Итого, если товара 2, а диапазона 3, и товары попали в разные диапазоны, нет смысла определять "шаг разбивки", как вы говорите - просто лишний фасет не нужно показывать. Имхо динамические разбиения это перебор и оверинжениринг.

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 29 июня 2013 в 20:02

"Crea" wrote:
Когда я смотрел последний раз решения по фасетам, там вроде было нормальной практикой скрывать пустые фасеты.

Да, это так, но чтобы скрывать фасеты, надо бы чтобы они были Smile А solr сейчас не возвращает расчитанные фасеты по диапазонам из базовой инсталляции, есть вроде компоненты, но сырые...