You can map a wildcard url to your search action, but you will have to perform the parsing of the parameters yourself:
UrlMappings.groovy:
"/user/search/$query**" {
controller = 'user'
action = 'search'
}
This would give you everything after the static portion of the url as a single string.
i.e. www.mysite.com/user/search/sex/male/to_age/19/location/chicago
would give you params.query = 'sex/male/to_age/19/location/chicago'
However, these kind of urls don't participate in dynamic url rewriting, so you would have to build the urls yourself when attempting to link to it.
quick unsafe (unescaped) example of transforming a paramMap into that style of query string:
def queryStr = params.collect({ n,v -> "$n/$v" }).join('/')
g.createLinkTo(controller: 'user', action: 'search', params: [query: queryStr])