They still would. Once for each filter or ‘hidden group’ to be the conditions for populating the group with data related to the filter choices. It is simply changing out conditions on the RG for conditions on workflows to set the data.
Best way is to use the search constraints in a do a search as previously suggested by @artemzheg
@tech16 you will want to think about the data structure related to the type of data that is being searched and filter with the filter choices and the way that Bubble search constraints work.
You would want to decide if you will use URL parameters or custom states to hold onto the user selections of filters and whether or not you want the filters to work in tandem with eachother. Obviously, ALL is all so it is not applied against other filters, but a FREE show could be ONLINE or INPERSON. Normally these types of filters would utilize a data field of type yes/no for the determination of is an event ONLINE or INPERSON, however, there are other ways to achieve knowing an event is ONLINE or INPERSON without using multiple yes/no fields, such as an option set of filter choices.
In your situation I would suggest using an option set, which has 4 values, ALL, ONLINE, INPERSON, FREE
On the data type add a field that is related to the Option set and make it a list.
When creating data entries of the type, you will populate the field of the Option set with ALL EVERYTIME, so that ALL events in the database have at least one value in the list field, ALL. Then if the user is creating an ONLINE event and it is FREE you will add those two option values into the database, so the single event will have 3 option values in the data field, ALL, ONLINE and FREE.
Then on your search page, you can have a repeating group for the filters and the data source will be the Option set All options.
Then your choice of url parameter or custom state for holding the selected values.
Then, for your search you Do a Search for events with a filtered operator using an Advanced search of events option field list intersects with selected value list count is selected value list count.
This method does of course use the advanced filter which is not recommended but could be tested against your current implementation to see if there is a comparable difference with one approach more performant than the other.
I personally, do not care at all about taking a few extra steps to add more conditionals to do something like change a datasource if, one it is more performant than other approaches or two is overall a little bit simpler to implement.