There's a difference between q={!myparser f=field}value and 
q=field:value&defType=myparser in that the latter requires that your parser do 
the splitting of "field" at the colon.  Does your parser do this?   The former 
allows for a local param to specify the f(ield) through a params construct 
automatically.

        Erik

On Oct 6, 2012, at 10:44 , Prithu Banerjee wrote:

> Hi,
> 
> I have developed a payload queryparser similar to:
> https://issues.apache.org/jira/browse/SOLR-1485?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel
> registered the parser in my solrconfig.xml as:      <queryParser
> name="myparser" class="plugin.PayloadTermQueryPlugin"/>
> Now when I am using it as a q parameter it's working fine e.g.:
> http://localhost:8983/solr/select?q={!myparser%20f=tag}hi&debugQuery=true
> 
> But if I specify it in search handler using defType, it is throwing errors:
> http://localhost:8983/solr/select?q=tag:Legend&debugQuery=on&defType=myparser
> 
> java.lang.NullPointerException
>       at plugin.PayloadTermQueryPlugin$1.parse(PayloadTermQueryPlugin.java:25)
>       at org.apache.solr.search.QParser.getQuery(QParser.java:143)
>       at 
> org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:105)
>       at 
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:172)
>       at 
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
>       at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
>       at 
> org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365)
>       at 
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260)
>       at 
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
>       at 
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
>       at 
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>       at 
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
>       at 
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
>       at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
>       at 
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
>       at 
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
>       at 
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
>       at org.mortbay.jetty.Server.handle(Server.java:326)
>       at 
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
>       at 
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
>       at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
>       at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
>       at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
>       at 
> org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
>       at 
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> 
> cannot figure out the reason. Please help.

Reply via email to