На мой взгляд, вместо того чтобы вводить другие типы групп, надо ввести свойства отдельных словарей. То есть:
- У нас есть пользовательская группировка. Это то, что уже есть сейчас. Пользователь создает любые группы и кидает туда любые словари.
- У каждого словаря есть языковая пара. Рус-Англ, Англ-Рус, и тп. Если эта информация отсутстсвует, или определилась неправильно, должен существовать экран, где это можно отредактировать. Также у каждого словаря есть его тип (stardict,bgl,dsl и тп) и другие свойства.
- При поиске слов пользователь может выбирать словари следующим образом:
- Выбор группы. Это то, что уже есть.
- Выбор языковых направлений. Можно выбрать как определенную языковую пару, например. Рус-Англ, так и только одно направление, например Рус-Все, или Все-Рус.
- И то, и другое можно задавать одновременно. Группа задает список словарей, а пара выбирает из этого списка только те, которые этой паре соответствуют.
- При создании групп сейчас пользователь видит общий несортированный список всех словарей, из которых может выбирать. Сюда можно добавить фильтры -- показывать только те словари, которые соответствуют заданной языковой паре, или формату, или другому свойству (например, содержат в своем имени подстроку, имеют статей не менее n, и все что угодно).
То есть, резюмируя. На мой взгляд, пользователю не нужно создавать никаких других групп, кроме тех, что уже есть. То есть, он просто может создать любое количество произвольных групп, содержащих любые словари в любом порядке. Однако к самим словарям надо добавить атрибуты (как минимум, языковую пару) и дать возможность использовать эти атрибуты в качестве фильтра при: 1) создании групп, и 2) при поиске слов. Мне кажется, что при поиске слов пользователю надо иметь только лишь: 1) выбор языковой пары, и 2) выбор группы. Пользователь может использовать как и только выбор по языковой паре, без группы, так и выбор группы, без языковой пары, так и одновременно выбор группы и фильтрующей эту группу языковой пары.
Пример:
У пользователя есть следующие словари:
- [En-Ru] Мюллер,
- [En-Ru] Апресян,
- [Ru-En] Смирницкая,
- [En-Ru]Slownik,
- [Ru-En]Freedict.
Он создает следующие группы:
- "Хорошие словари"
- [En-Ru] Мюллер,
- [En-Ru] Апресян,
- [Ru-En] Смирницкая
- "Неполные словари"
- [En-Ru]Slownik,
- [Ru-En]Freedict.
Теперь, при поиске он может задать следующие типы поиска:
- Искать по всем словарям (не выбрано ни группы, ни языковой пары)
- Искать в направлении Ru-En в "Хороших словарях"
- Искать в любых направлениях в "Неполных словарях"
- Любые другие комбинации групп и направлений.
Примеров можно придумать много. Например, группы пользователь может создать по тематикам: Общая лексика, Финансы, Право, Политехнические и так далее. Каждая группа может содержать словари всех языковых направлений. Например, в каждой из них могут быть одновременно Ru-En, En-Ru, De-Ru, De-En, Ru-De, En-De. Теперь мы можем выбирать: хотим De-Ru в Финансовом направлении. И вуаля.
Я не думаю, что пользователю надо иметь возможность искать по другим параметрам. Например, странно было бы искать слова только в Bgl-словарях. Такие фильтры полезны при создании групп, но мне кажется, что при поиске выбора готовой группы и языковых направлений полностью достаточно.