Hi, the way I set this up on my app (www.tiplister.com) is the following:

A datatype: Categories
Categories may even have a parent (this is a field type category within Category)
And a list of children ( a field type list of children within category)

So you can have categories: sports and music
sports can have as its list of children: football, tennis, soccer etc. Music can have classical, jazz, techno etc. (Technos parent is music etc)

Then I have a datatype called Filters.
Each Category has a list of Filters (so a field type list of filters underneath category)
E.g. Music has as its filters: Length of piece, interpreter, composer
and Football has: player, coach, championship.

And then the filters can also have a list of children ( a list of filters, field underneath filter) e.g. length of piece less than 10 more than 20, more than 60 minutes.

This allows you in different groups to show:
A repeating group with: Do a search for categories. to show all categories.
Then if you click a category, display its list of children
and also its list of filters or its first filter and that first filters list of children.

hope that makes sense.