You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Tim Hearn (JIRA)" <ji...@apache.org> on 2015/05/18 23:41:00 UTC

[jira] [Created] (SOLR-7559) Cannot use Faceting Feature while using/mlt handler

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: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org