This question has been asked many times. After spending some time reading the answers, I did some quick profiling to try out the various methods mentioned previously...
what about a text indexing solution ?
I would use Lucene in the Java world but there is a python engine called Whoosh
https://bitbucket.org/mchaput/whoosh/wiki/Home