Фасеты: ИЛИ внутри · И между
Значения внутри одного фасета — по ИЛИ,
разные фасеты — по И (строки на пересечении).
Число активных фасетов — счётчиком у контрола.
Поиск ∩ фильтры — один запрос
q и активные фасеты идут в одном вызове по
И, не двумя запросами. В полёте только последний: новый
ввод отменяет устаревший (защита от гонки).
Страница и сортировка — в том же запросе
Номер страницы, её размер и сортировка едут в том же
вызове, что q и фасеты. Любое изменение запроса —
новый текст, фасет, сортировка — сбрасывает на 1-ю
страницу: иначе можно остаться на странице, которой в новом
наборе нет.
Состояние — в адресе страницы
Поиск, фасеты, страница и сортировка — в query-параметрах
URL: refresh и ссылка сохраняют выборку. Адрес — единственный
носитель этого состояния.