The solution to the primary system is to hold every state’s primary on the same day. Make the candidates campaign like they will for the general election.
I would prefer a system of five or six regional primaries, beginning no earlier than January of an election year, and ending in May or June. And *no* debates until the nominations are sewn up and conventions held. That way, the candidates can save travel time and expenses by avoiding multiple cross-country trips, and as used to be the case before the current mess, people would have a chance to get to know the candidates in a more meaningful way over a period of months, rather than in a few weeks of frenzied primaries, moronic media coverage, and stultifyingly stupid 12-party debates.
Weaknesses of that include the candidates must campaign nationally (and have the FUNDS to campaign nationally), and that it does not allow an opportunity for the weakest candidates to drop out.
In a 6-person field, we might find the winner to be somebody who got a plurality of 20% but who is HATED by 80% of Republicans, while the next guy who got 18% would have been accepted by everybody.