Dynamic segment(s) means a new route, which means a different “page” more or less. This is preferable if your UI is nested or if you want separate routes and fits a “resource” based page better. The problems start to crop up if you have more than a couple dynamic segments or you want “dynamic” data like in a search form.
I’d say query params are much more conventional and a better fit for a search type UI. You can have any number of query params bound to a single page and the ordering/values can be arbitrary and they’re really just passed straight through the router.
There are still some choices you have to make… do you want a separate page for a new search vs search results, etc but I would definitely use query params for persisting search params to the results page URL.