EAV es una opción válida:puede ser complejo e incómodo con lo que efectivamente se convierte en datos sin tipo.
XML con XPath también sería una opción: http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html
Creo que la mayoría de los casos requerirán que genere SQL dinámico si los campos para buscar pueden variar.