Enrico,
You want your user to search on any fields and combinations.
Agreed, but I don't see any logical way you can search for any combination of fields in a filter without reading all the records for at least some of the combinations.
I think the point is, that some filters will be optimized if there is a useful index. And this is better than no optimization ever--which was the old way.
You also have to consider probability. There are a few combinations of fields that users will search often, and some that they will never search. Think of the 80/20 rule-- 20% of the combinations will be searched 80% of the time. You could log the searches for awhile, then make sure you have indexes that will help in those 20% of the cases. Hmm, now if you wanted to get really sophisticated, you could build a routine that automatically tracks the searches and then designs indexes to speed them up. I like it.