That would still make it necessary to define all possible language analyzers in the entity. Why not just add a strategy where the entity is passed and an Analyzer is returned, so each entity can have it's own analyzer.