Search form - Passing only field params that are not empty or selected
That's just the way forms work in html. If you don't want to use a POST method, (because that would make the results not URL-addressable at all), I'd recommend using an intermediary Twig template to perform a redirect based on what parameters exist - i.e., set your form action to search/process and in that template write a load of conditional statements to build up a query string to pass into a {% redirect %} tag which loads search/results.
If you don't want two templates, you could instead set your form method to POST and then in your search/results template you could conditionally perform a redirect to the same template appended with your custom query string, and use craft.app.request.method to distinguish between the request types to avoid an inifinte redirect loop.