Tim Hearn created SOLR-7559:
-------------------------------

             Summary: Cannot use Faceting Feature while using/mlt handler
                 Key: SOLR-7559
                 URL: https://issues.apache.org/jira/browse/SOLR-7559
             Project: Solr
          Issue Type: Bug
          Components: MoreLikeThis
    Affects Versions: 5.1
         Environment: windows 7 OS, Eclipse JDK 7
            Reporter: Tim Hearn


When sending a query using the /mlt handler with faceting enabled, Solr returns 
an NPE.  The exception is as follows:

{quote}
at
org.apache.solr.request.SimpleFacets.getHeatmapCounts(SimpleFacets.java:1555)
at
org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:284)
at
org.apache.solr.handler.MoreLikeThisHandler.handleRequestBody(MoreLikeThisHandler.java:233)
at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1984)
at
org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:829)
at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:446)
at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:220)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:368)
at
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at
org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
at
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
at
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at
org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
at
org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:745)
{quote}

The issue appears to start in the MoreLikeThisHandler.java class, line 233:

{quote}
if (params.getBool(FacetParams.FACET, false)) {
  229           if (mltDocs.docSet == null) {
  230             rsp.add("facet_counts", null);
  231           } else {
  232             SimpleFacets f = new SimpleFacets(req, mltDocs.docSet, 
params);
  233             rsp.add("facet_counts", f.getFacetCounts());
  234           }
  235         }
{qupte}

When the above constructor is used in the SimpleFacets class it sets the 
ResponseBuilder object in that class to null, which is what causes the NPE to 
be thrown when getHeatMapFacets() is called from getFacetCounts()

{quote}
  129   public SimpleFacets(SolrQueryRequest req,
  130                       DocSet docs,
  131                       SolrParams params) {
  132     this(req,docs,params,null);
  133   }
  134 
  135   public SimpleFacets(SolrQueryRequest req,
  136                       DocSet docs,
  137                       SolrParams params,
  138                       ResponseBuilder rb) {
  139     this.req = req;
  140     this.searcher = req.getSearcher();
  141     this.docs = this.docsOrig = docs;
  142     this.params = orig = params;
  143     this.required = new RequiredSolrParams(params);
  144     this.rb = rb;
  145   }
  146 
{quote}

{quote}
  129   public SimpleFacets(SolrQueryRequest req,
  130                       DocSet docs,
  131                       SolrParams params) {
  132     this(req,docs,params,null);
  133   }
  134 
  135   public SimpleFacets(SolrQueryRequest req,
  136                       DocSet docs,
  137                       SolrParams params,
  138                       ResponseBuilder rb) {
  139     this.req = req;
  140     this.searcher = req.getSearcher();
  141     this.docs = this.docsOrig = docs;
  142     this.params = orig = params;
  143     this.required = new RequiredSolrParams(params);
  144     this.rb = rb;
  145   }
  146 
{quote}





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to