Multi field search with wild cards and query performance

We need to search for “john*” when the user has typed only “john”. Sometimes we also need to search like 'oh' which can find matching words like John.

Also need to search like 'John' 'Toyo' match criteria like John, Toyota, John Toyota, Johnson etc.

These criterias can be matched in different fields simultaneously.

It could be a performance intensive operation. How can we handle the performance impact or any suggestions?