Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-7559

Cannot use Faceting Feature while using/mlt handler

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 5.1
    • None
    • MoreLikeThis
    • None
    • windows 7 OS, Eclipse JDK 7

    Description

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

      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)

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

      228 if (params.getBool(FacetParams.FACET, false)) {
      229 if (mltDocs.docSet == null)

      Unknown macro: { 230 rsp.add("facet_counts", null); 231 }

      else

      Unknown macro: { 232 SimpleFacets f = new SimpleFacets(req, mltDocs.docSet, params); 233 rsp.add("facet_counts", f.getFacetCounts()); 234 }

      235 }

      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()

      129 public SimpleFacets(SolrQueryRequest req,
      130 DocSet docs,
      131 SolrParams params)

      Unknown macro: { 132 this(req,docs,params,null); 133 }

      134
      135 public SimpleFacets(SolrQueryRequest req,
      136 DocSet docs,
      137 SolrParams params,
      138 ResponseBuilder rb)

      Unknown macro: { 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

      129 public SimpleFacets(SolrQueryRequest req,
      130 DocSet docs,
      131 SolrParams params)

      Unknown macro: { 132 this(req,docs,params,null); 133 }

      134
      135 public SimpleFacets(SolrQueryRequest req,
      136 DocSet docs,
      137 SolrParams params,
      138 ResponseBuilder rb)

      Unknown macro: { 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

      Attachments

        1. SOLR-7559.patch
          0.7 kB
          Jeroen Steggink

        Activity

          People

            Unassigned Unassigned
            timh98 Tim Hearn
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:

              Time Tracking

                Estimated:
                Original Estimate - 10m
                10m
                Remaining:
                Remaining Estimate - 10m
                10m
                Logged:
                Time Spent - Not Specified
                Not Specified