@fermin@macarty de momento, como solución rápida, en el orden by puedes meter, como primer valor si el comienzo del tema es igual a lo que ha introducido el usuario como comparación booleana y después el orden normal. Te paso un ejemplo de stack Overflow pero que abría que adaptar al motor que usamos.
order by
case when animal_name like 'cat%' then 0 else 1 end, animal_name asc
order by
case when animal_name like 'cat%' then 0 else 1 end, animal_name asc