@deeky666 in an ideal world, generating the explanation query would be moved to the DBAL platform. But this would require abstracting the return value as well (while the bundle currently does not care, and will display the data returned by the database).
Abstracting the explanation is probably a bad idea though, as it would probbly require loosing some info given that the format of explanations is not consistent accross platforms.

I'm not sure having several classes and then a factory to create the right one is really worth it (it could be worth it if the platform was creating the right one itself, like for keyword lists in DBAL).
However, I agree that we should probably move this out of the controller itself (it can be done separately though)