/** * Create and return an {@link IStemmer} adapter for a * {@link SnowballProgram} for a given language code. An identity stemmer is * returned for unknown languages. */ public static IStemmer createStemmer(LanguageCode language) { final Class<? extends SnowballProgram> stemmerClazz = snowballStemmerClasses .get(language); if (stemmerClazz == null) { log.warn("No Snowball stemmer class for: " + language.name() + ". Quality of clustering may be degraded."); return IdentityStemmer.INSTANCE; } try { return new SnowballStemmerAdapter(stemmerClazz.newInstance()); } catch (Exception e) { log.warn("Could not instantiate snowball stemmer" + " for language: " + language.name() + ". Quality of clustering may be degraded.", e); return IdentityStemmer.INSTANCE; } } }