Searching over encrypted data Is there any library/tool available which can allow me to search over encrypted data? 
I would like to encrypt data on client side, send it to cloud and perform search in cloud. 

I've been reading about homomorphic encryption and though there is CryptDb available which makes it possible to run encrypted DB in cloud, but my use case is slightly different- in my case I want to let users send me encrypted data and I want to be able to do a keyword search (as opposed to user performing search).
I don't think there is an existing library that can satisfy your needs.
Homomorphic encryption is powerful and requires lots of computations. However, in your case which allows user-defined keywords, I suggest you to take a look at Searchable Encryption. 
Searchable Encryption is the algorithm that should be of interest. It allows cloud server to search 'blindly' on client's encrypted data, based on a 'trapdoor' - a token that contains keywords to be searched for - sent by the client. Of course, client must also encrypt the keywords along the encrypted data before uploading them, which will surely increase the overhead. For 'blindly' it means the cloud server doesn't acquire any unnecessary knowledge about the searched keywords and the encrypted data, during the entire query process. 
Some of the searchable encryption algorithms are based on pairing-based cryptography. In that case, you can build your application based on PBC library.