/** * */ package querqy.solr.contrib; import java.io.IOException; import org.apache.lucene.analysis.Analyzer; 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 org.apache.solr.schema.IndexSchema; import com.google.common.base.Preconditions; import querqy.lucene.contrib.parser.AnalyzingQuerqyParser; import querqy.parser.QuerqyParser; import querqy.solr.SolrQuerqyParserFactory; /** * @author René Kriegler, @renekrie * */ public class AnalyzingQuerqyParserFactory implements SolrQuerqyParserFactory { protected String synonymsfieldType = null; protected String queryParsingFieldType = null; /* * (non-Javadoc) * * @see querqy.solr.SolrQuerqyParserFactory#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 { synonymsfieldType = (String) parserConfig.get("synonymFieldType"); queryParsingFieldType = (String) parserConfig .get("queryParsingFieldType"); Preconditions.checkNotNull(queryParsingFieldType, "queryParsingFieldType configuration missing"); } /* * (non-Javadoc) * * @see querqy.solr.SolrQuerqyParserFactory#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) { IndexSchema schema = req.getSchema(); Analyzer rewriteAnalyzer = schema.getFieldTypeByName( queryParsingFieldType).getQueryAnalyzer(); Analyzer synonymAnalyzer = (synonymsfieldType != null) ? schema.getFieldTypeByName(synonymsfieldType) .getQueryAnalyzer() : null; return new AnalyzingQuerqyParser(rewriteAnalyzer, synonymAnalyzer); } }