This would deffiately be possible, but you would need to set up your predicate over a few different options.
So i am now thinking in the sense of core data as that is how i have done searches previously. The predicate that is used when fetching in Core Data is literally just a string made up of the requirements of the search. This string then gets formatted into a predicate that can be used to search. All i would di in your position is to have a few different options on the screen, text box, document selector etc and then based on the selections/entries that the user make i would create the predicate then search.
Enter Data
Make predicate string
format predicate
perform fetch
display results.
This may not be what you are looking for, but hopefully it will help push you in the right direction. If you want any more info then please ask and ill do my best to answer