[ https://issues.apache.org/jira/browse/SOLR-839?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13537767#comment-13537767 ]
Daniel Collins edited comment on SOLR-839 at 12/21/12 9:21 AM: --------------------------------------------------------------- We have a version of this we have built with Solr 4.0, it is still WIP, but this is what we have. {code} import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.NamedList; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.search.*; import org.apache.lucene.search.Query; import org.apache.lucene.queryparser.classic.ParseException; import org.apache.lucene.queryparser.xml.*; import java.io.ByteArrayInputStream; import java.io.UnsupportedEncodingException; public class XmlQParserPlugin extends QParserPlugin { private String contentEncoding = "UTF8"; public void init(NamedList args) { } public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) { return new XmlQParser(qstr, localParams, params, req); } class XmlQParser extends QParser { public XmlQParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) { super(qstr, localParams, params, req); } public Query parse() throws ParseException { SolrQueryParser lparser; String qstr = getString(); if (qstr == null || qstr.length() == 0) return null; String defaultField = getParam(CommonParams.DF); if (defaultField == null) { defaultField = getReq().getSchema().getDefaultSearchFieldName(); } lparser = new SolrQueryParser(this, defaultField); lparser.setDefaultOperator(QueryParsing .getQueryParserDefaultOperator(getReq().getSchema(), getParam(QueryParsing.OP))); CoreParser parser = new CoreParser(getReq().getSchema().getQueryAnalyzer(), lparser); // CorePlusExtensions parser requires lucene sandbox, which isn't bundled with Solr (yet). // CorePlusExtensionsParser parser = new CorePlusExtensionsParser( // getReq().getSchema().getQueryAnalyzer(), lparser); try { return parser.parse(new ByteArrayInputStream(getString() .getBytes(contentEncoding))); } catch (UnsupportedEncodingException e) { throw new ParseException(e.getMessage()); } catch (ParserException e) { throw new ParseException(e.getMessage()); } } } } {code} As the comment mentions, we can't use the CorePlusExtensionsParser as it requires the lucene-sandbox.jar which isn't currently bundled with Solr 4.0? was (Author: dancollins): We have a version of this we have built with Solr 4.0, it is still WIP, but this is what we have. {code} import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.NamedList; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.search.*; import org.apache.lucene.search.Query; import org.apache.lucene.queryparser.classic.ParseException; import org.apache.lucene.queryparser.xml.*; import java.io.ByteArrayInputStream; import java.io.UnsupportedEncodingException; public class XmlQParserPlugin extends QParserPlugin { private String contentEncoding = "UTF8"; public void init(NamedList args) { } public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) { return new XmlQParser(qstr, localParams, params, req); } class XmlQParser extends QParser { public XmlQParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) { super(qstr, localParams, params, req); } public Query parse() throws ParseException { SolrQueryParser lparser; String qstr = getString(); if (qstr == null || qstr.length() == 0) return null; String defaultField = getParam(CommonParams.DF); if (defaultField == null) { defaultField = getReq().getSchema().getDefaultSearchFieldName(); } lparser = new SolrQueryParser(this, defaultField); lparser.setDefaultOperator(QueryParsing .getQueryParserDefaultOperator(getReq().getSchema(), getParam(QueryParsing.OP))); CoreParser parser = new CoreParser(getReq().getSchema().getQueryAnalyzer(), lparser); // CorePlusExtensions parser requires lucene sandbox, which isn't bundled with Solr (yet). // CorePlusExtensionsParser parser = new CorePlusExtensionsParser( // getReq().getSchema().getQueryAnalyzer(), lparser); try { return parser.parse(new ByteArrayInputStream(getString() .getBytes(contentEncoding))); } catch (UnsupportedEncodingException e) { throw new ParseException(e.getMessage()); } catch (ParserException e) { throw new ParseException(e.getMessage()); } } } } {code} As the comment mentions, we can't use the CorePlusExtensionsParser as it requires the lucene-sandbox.jar which is currently bundled with Solr 4.0? > XML Query Parser support > ------------------------ > > Key: SOLR-839 > URL: https://issues.apache.org/jira/browse/SOLR-839 > Project: Solr > Issue Type: New Feature > Components: query parsers > Affects Versions: 1.3 > Reporter: Erik Hatcher > Assignee: Erik Hatcher > Fix For: 4.1, 5.0 > > Attachments: lucene-xml-query-parser-2.4-dev.jar, SOLR-839.patch > > > Lucene contrib includes a query parser that is able to create the > full-spectrum of Lucene queries, using an XML data structure. > This patch adds "xml" query parser support to Solr. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org