I am assuming you are using ngram filter for your queries as it is able to match both the full and the partial matches.
If so, you can always have two fields.
- Non Ngramed field with higher boost - text
- NGramed field with normal boost - text_ngram
e.g. For dismax - text^2 text_ngram
would result in prefect matches having higher boost then the partial matches.
Remember if there is a full match, there would be a partial match as well so its a cumulative boost.