1. A method for matching a user profile with desired data, the method comprising: building a profile index, wherein the profile index includes a collection of user profiles including predicates; identifying predicates shared by user profiles; and evaluating the predicates, wherein each predicate is evaluated once and the evaluation includes matching each predicate of the profile collection against data items.