a) It depends entirely on what QueryParser you are using. If your input is "from a human" i would suggest using dismax or edismax and not escaping anything - unless you get some type of error, and then maybe give the user a "there was a problem with your query, would you like to try ____" where you suggest a new query with all meta-characters striped out.
b) URL escaping is really a completley independent issue... : * Should we use + or %20 and what cases make sense: : > * "Dr. Phil Smith" or "Dr.+Phil+Smith" or "Dr.%20Phil%20Smith" - also what is ...solr doesn't know of car wether you use "+" or "%20" when building up a URL. by the time Solr sees your input, the servlet container has already url-decoded the query params. in general: if you are even *thinking* about how params are getting URL encoded, you are probably doing something wrong. writing custom code to construct Solr query strings is one thing, writting custom code to construct/escape values in URLs is something else -- i don't know what client langauge you are using, but i garuntee you it has an HTTp/CGI API that completely eliminates any need for you to even think about such issues. -Hoss