Search with exact match comes first?

Are you suggesting that I am storing all of the things into one document? Or stop using querystring?

No. I'm suggesting that you either run your query on a big dataset and not on few documents or/and that you use only one shard for your index.

Btw, just curious , is there a query builder that suits for both short text matches as well as phrases/paragraphs?

No. You can use a bool query with multiple should clauses. One would be a match_phrase query, the other one a match query.