This patch is straight forward and includes tests (thank you so much for the tests).
The meat of the change is that getHighlightQuery is overridden to attempt query rewriting, which gives me two concerns...
1) at a minimum i'm pretty sure super.getHighlightQuery still needs to be called.
2) is this rewriting of hte query done in the SurroundQParser going to cause any problems or unexpected behavior in conjunction with the highlighter component logic that already decides if/when to rewrite the query?
If the crux of the problem is that HighlightComponent rewrites the query automatically except when using the phrase highlighter with the multi-term option (assuming i'm reading the code correctly) then shouldn't that code path of the highlighter be modified to do something sane with any type of Query object? ... why isn't it responsible for calling rewrite on any sub-query of a type it doesn't understanding?
(Highlighting is one of the areas of Lucene/Solr that frequently makes my head hurt, so forgive me if these are silly questions)