1. A method comprising: preprocessing documents to determine a fingerprint for each document, the determining of a fingerprint for each document including: determining a document vector based on features of the respective document, the document vector including keyword and relevance pairs with regard to keywords appearing in the respective document, the relevance indicating a degree of relevance of a respective keyword within the respective document, the relevance determined by dividing a number of occurrences of the respective keyword within the respective document by a total number of keywords appearing in the respective document, and the document vector including a number N-dimensions equal to the number of keywords in the respective document; and applying a hash function on the document vector to obtain a hash value for each of N-dimensions, each hash value equal to a frequency of a keyword of a respective dimension; determining a dynamic user profile for a user, the dynamic user profile being based on one or more fingerprints of viewed documents by the user and a set of relevant keywords collected from documents in a browsing history of the user; determining one or more relevant documents, using a processor, based on the dynamic user profile in view of the determined document fingerprints; wherein the determining the one or more relevant documents comprises performing a cosine product approximation between a user fingerprint associated with the dynamic user profile and fingerprints of all available documents; and providing a list of the one or more relevant documents.