Search phases are the simplest and first thing to try.
Otherwise, sometimes it is possible to decompose the problem, define several solving steps, and use the solution of one step to define the model (or just the starting point) of the following step.
If you have a precise solving strategy that cannot be expressed with such simple approaches and which is expected to work very well for your problem, you may need to use custom goals, available only in C++ API. Nevertheless, note that the use of custom goals is quite rare today as it is generally hard to beat the solver default search.