I have a different situation that needs a similar approach.
I'm trying to find partial matches to a particular place name, restricted to a particular country (in my case, Australia). For example, I'd like to be able to query for towns in Australia beginning with "Mel" and get (for example) Melbourne as a match. Using something like places$and(.q('Mel%2A','au'),.type(7)) does not work as Neil discovered, as results from outside Australia are still returned. The other reasonable approach, places$and(.q('Mel%2A,au'),.type(7)), seems apparently to be misinterpreted and returns no results.
Being able to filter out results belonging to a particular country or WOEID would be very useful in this case, and I can't imagine it's much more difficult (if at all) in a technical sense than simply promoting them.
The startswith feature (appending "*" to the query string) only works if the "*" is at the end of the query string, and not in the middle as in your example.
Now that GeoPlanet is supported by YQL (visit
http://developer.yahoo.com/yql for more information), it is possible to use YQL to return only results in the desired country. For example, the following YQL query string returns all the towns in Australia that start with the text "mel":
CODE
select name,woeid from geo.places where text="mel*" and country.code="AU"
This query string would be embedded into a YQL web service request like
http://query.yahooapis.com/v1/public/yql?q...&appid=test. Note that the response format for YQL is slightly different from the response format for GeoPlanet.
Eddie Babcock
Yahoo! Geo Technologies