What is the best way to add semantics in ES? I have read this: Semantic search with NLP and elasticsearch ,but there are lot of manual things here and on top of that this is quite old. For eg: Knowing list of topics and what topic a document belongs before hand is not possible in an unsupervised task. Also, this problem is not similar to clustering of documents. Since through clustering, you could say what all documents are similar. But is there a way for us to say a query must these similar documents.
For example: "Machine Learning" query should get me "Data Science" or "Data mining" or "Pattern Recognition" documents rather than "Machine Operator" documents with weights. Here clustering (may be LDA) might be helpful but it is not exactly clustering documents that will give documents for a query, it probably is an extension of that (which I don't know). Or do we only reduce search space when clustering documents and use TF based algos. on the cluster.
I tried using LSA for this problem. LSA would give me reduced matrix (through SVD), but how would I use this result in ES? Even if we do this, how will it scale?
Is there any better approach?