package org.apache.solr.search; import org.apache.lucene.queryparser.flexible.aqp.AqpQueryParser; import org.apache.lucene.queryparser.flexible.aqp.parser.AqpExtendedLuceneParser; import org.apache.lucene.queryparser.flexible.core.QueryNodeParseException; 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; /** * An instance of ANTLR query parser. Implements the * standard lucene grammar together with support for * span queries. */ public class AqpLuceneQParserPlugin extends QParserPlugin { public static String NAME = "lucene2"; private String defaultField = "all"; @SuppressWarnings("rawtypes") public void init(NamedList args) { NamedList defaults = (NamedList) args.get("defaults"); if (defaults != null) { if (defaults.get("defaultField") != null) { defaultField = (String) defaults.get("defaultField"); } } } public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) { try { AqpQueryParser parser = AqpExtendedLuceneParser.init(); parser.setDefaultField(defaultField); return new AqpLuceneQParser(parser, qstr, localParams, params, req); } catch (QueryNodeParseException e) { throw new SolrException(SolrException.ErrorCode.SERVICE_UNAVAILABLE, e.getLocalizedMessage()); } catch (Exception e) { throw new SolrException(SolrException.ErrorCode.SERVICE_UNAVAILABLE, e.getLocalizedMessage()); } } }