Thanks for the additional info.
For my simple case, when they click my "Apply Filter" button, then in the Javascript click handler, I build the ?filter string as variable newFilterStr from the pieces the user had entered in some custom fields, and then apply the resulting filter by using: window.location.search = newFilterStr .
When they click my "Clear Filter" button, I just use: window.location.search = "" , and this clears the filter from the URL.
(Note that setting window.location.search also clears any other options such as custom sort orders and stuff, but I don't worry about that. If you cared, you could read the existing value of window.location.search and modify it, but it is easier to just replace it.)
Also, setting window.location.search causes a page reload, which resets the custom fields that the user used to enter their desired filter back to default values. This makes it annoying to edit a filter you've applied, as the values you previously entered are gone. So, I use a jquery "$( document ).ready" function, which is called at page load, to parse the filter string (if any) and reset my fields to the id values that generated it.
(Again, all my fancy filtering depends on the fact that we use specific character positions in our data file names as fields with specific meanings, so we can filter on these character positions to show particular subsets of our data files. None of this would be any use for general file upload/download service.)
In any case, I'm all set on this topic.