У нас есть ситуация, когда мы выполняем поиск, и пользователь может предоставить список элементов в качестве фильтра для поиска.
Например, допустим, мы искали рецепты, в которых были конкретные продукты. У нас может быть список возможных продуктов, например:
- говядина
- курица
- рыба
- морковь
- горох
- лук
- рис
- бобы
Но мы также хотим, чтобы пользователь мог искать «любое мясо» или «любой овощ» и заставить его возвращать все, что соответствует всем мясным возможностям или всем овощным возможностям.
Мы могли бы просто сделать так, чтобы клиент делал разбор, и когда пользователь выбирает «мясо», отправляет все варианты мяса. Но есть другая логика, которую мы должны сделать, когда пользователь выбирает более высокую категорию, как эта. Например, если они выбирают «любое мясо», мы можем искать дополнительную базу данных, в которой есть рецепты, помеченные как «мясо», а не по отдельному мясу.
(я создаю этот пример, основываясь на наших реальных бизнес-требованиях, которые гораздо скучнее, но по сути это идея.)
Существует несколько возможных решений, которые могут быть оттенками одного и того же:
- Имейте два разных списка в критериях поиска, один для перечисления
отдельные элементы и один для перечисления групп, а затем объединить два
при фильтрации запросов.
- иметь один список в критериях поиска с перечислением, которое включает
как отдельные предметы, так и группы предметов.
Но я чувствую, что мне не хватает решения, которое могло бы быть немного более элегантным в представлении групповых / индивидуальных отношений. Есть шаблон, который обращается к этой ситуации?
(PS: это на Java, но я не думаю, что это особенно важно.)