Reading through the code for Solr SpellCheckComponent.java for 4.1, it looks
like it neither complains nor defaults reasonably if more than on
QueryConverter class is present in the Solr lib directories:
Map<String, QueryConverter> queryConverters = new HashMap<String,
QueryConverter>();
core.initPlugins(queryConverters,QueryConverter.class);
//ensure that there is at least one query converter defined
if (queryConverters.size() == 0) {
LOG.info("No queryConverter defined, using default converter");
queryConverters.put("queryConverter", new SpellingQueryConverter());
}
//there should only be one
if (queryConverters.size() == 1) {
queryConverter = queryConverters.values().iterator().next();
IndexSchema schema = core.getSchema();
String fieldTypeName = (String) initParams.get("queryAnalyzerFieldType");
FieldType fieldType = schema.getFieldTypes().get(fieldTypeName);
Analyzer analyzer = fieldType == null ? new
WhitespaceAnalyzer(core.getSolrConfig().luceneMatchVersion)
: fieldType.getQueryAnalyzer();
//TODO: There's got to be a better way! Where's Spring when you need it?
queryConverter.setAnalyzer(analyzer);
}
No else! And queryConverter is not initialized, except for that code path where
there was zero or one QueryConverter class.
-- Jack Krupansky