which machine learning technique can be used?
I think these are the methods that you can try out (Please feel free to add more to this list):


Highly precise with a little low recall is to use a dictionary with almost all possibilities (manual effort, but must be worth it.).
Using Word2Vec. Mikolov has already trained text data and created word vectors. Using this vector space, you can figure out which words are similar. You can try out and find a threshold above which you can say which words are similar (for example, yoga and exercise would have decent similarity.)
Train custom W2V, if you have enough data(This is an unsupervised model, so you don't need to worry about tagging the data but finding huge amounts of data relevant to the working domain.)
You can use an RNN to find the most similar words in a corpus and use it for queries. This gives a bit more flexibility than W2V.