I have a list of content with different categories and also with creation time and possibly expiration time which is changing over time (new items are added to it), I also have many users with different preferences. Now what i want to do is showing this users new content each time they ask one, without duplication but also with some degree of randomness. Obviously I can not store all of the shown contents to a user and each time check the whole set. One possible solution is to use some clusters and assign each user to a cluster, and store some data for each cluster, but I think there is a better way.I have a list of content with different categor