/** * */ package querqy.solr; import java.io.IOException; import java.io.InputStreamReader; import org.apache.lucene.analysis.util.ResourceLoader; import org.apache.solr.common.util.NamedList; import querqy.parser.QuerqyParserFactory; import querqy.rewrite.RewriterFactory; /** * @author René Kriegler, @renekrie * */ public class SimpleCommonRulesRewriterFactory implements RewriterFactoryAdapter { /* * (non-Javadoc) * * @see * querqy.solr.RewriterFactoryAdapter#createRewriterFactory(org.apache.solr * .common.util.NamedList, org.apache.lucene.analysis.util.ResourceLoader) */ @Override public RewriterFactory createRewriterFactory(NamedList<?> args, ResourceLoader resourceLoader) throws IOException { String rulesResourceName = (String) args.get("rules"); if (rulesResourceName == null) { throw new IllegalArgumentException("Property 'rules' not configured"); } Boolean ignoreCase = args.getBooleanArg("ignoreCase"); // querqy parser for queries that are part of the instructions in the // rules String rulesQuerqyParser = (String) args.get("querqyParser"); QuerqyParserFactory querqyParser = null; if (rulesQuerqyParser != null) { rulesQuerqyParser = rulesQuerqyParser.trim(); if (rulesQuerqyParser.length() > 0) { querqyParser = resourceLoader.newInstance(rulesQuerqyParser, QuerqyParserFactory.class); } } return new querqy.rewrite.commonrules.SimpleCommonRulesRewriterFactory( new InputStreamReader(resourceLoader.openResource(rulesResourceName), "UTF-8"), querqyParser, ignoreCase != null && ignoreCase); } }