If it were me, I'd just cache the user's library, list info, ratings, etc., and last query results in their session data so you can filter on any user data without hitting the database with a complex query on each search pageview. That's not computationally- or storage-expensive, and it lets you...