Hi Nicola,
Without a lot of familiarity of SearchQuery, in particular, it looks like a bug to me. SearchQuery defines its own operators to work around the limitation in Combinable, but fails to take into account that when two SearchQuery instances are combined, you're returned a CombinedExpression (containing SearchQueries). SearchVector *does* take this into consideration though, and provides it's own Combinable Mixin, so I wonder if the limitations for SearchQuery aren't on purpose.
Marc Tamlyn would probably have a good idea if this was an oversight or deliberate.
The fix would be to define a SearchQueryCombinable Mixin that looks very similar to SearchVectorCombinable, and override the various __or__ and __and__ methods, as the SearchQuery type does itself. Hope that helps?
Regards,