/** * */ package querqy.solr; import java.io.IOException; import org.apache.lucene.analysis.util.ResourceLoader; import org.apache.solr.common.SolrException; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.NamedList; import org.apache.solr.request.SolrQueryRequest; import querqy.parser.QuerqyParser; /** * This is a generic {@link SolrQuerqyParserFactory} which creates {@link QuerqyParser} objects for * the configured class name (the fully specified class name is expected as the value of configuration * parameter "class". * * @author René Kriegler, @renekrie * */ public class SimpleQuerqyQParserFactory implements SolrQuerqyParserFactory { protected Class<? extends QuerqyParser> querqyParserClass; /* * (non-Javadoc) * * @see * querqy.solr.QuerqyQParserFactory#init(org.apache.solr.common.util.NamedList * , org.apache.lucene.analysis.util.ResourceLoader) */ @Override public void init(@SuppressWarnings("rawtypes") NamedList parserConfig, ResourceLoader loader) throws IOException, SolrException { String className = (String) parserConfig.get("class"); if (className == null) { throw new IOException("Missing attribute 'class' in querqy parser configuration"); } querqyParserClass = loader.findClass(className, QuerqyParser.class); } /* * (non-Javadoc) * * @see querqy.solr.QuerqyQParserFactory#createParser(java.lang.String, * org.apache.solr.common.params.SolrParams, * org.apache.solr.common.params.SolrParams, * org.apache.solr.request.SolrQueryRequest) */ @Override public QuerqyParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) { try { return querqyParserClass.newInstance(); } catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException(e); } } }