Disclaimer: As someone new to PW, I wouldn't consider this an answer but a little help on moving forward.
Check out the selector section of docs: Using selectors in ProcessWire CMS
An example find - would get items that match River on the "parent" and items that match Dinner-Plated on the child.
$results = $pages->find('template=venue-area|function-type, (function=River), (type=Dinner-Plated)');
There are endless possibilities with the selectors so that's just one way. Each result (say you're looping $result as $item) would have things like $item->parent, or $item->children. For example, you can do $item->parent->title.
I don't know if you're using repeaters, page refs or any of the fields so the selectors could vary wildly. Either way, that selector page has a lot of great details.
As for unwieldly results, hopefully a more seasoned person can add some guidance. It may be best to do more than one selector depending on the structure and complexity of searches. How many sections, search criteria and results are you expecting?
As a parting note, I would strongly suggest you have Tracy Debugger installed > Tracy Debugger (TracyDebugger) - ProcessWire Module. The page dumps alone are lifesavers.