[
https://issues.apache.org/jira/browse/SOLR-7559?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jeroen Steggink updated SOLR-7559:
----------------------------------
Attachment: SOLR-7559.patch
Incorrect parameters where chosen
> 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
> Attachments: SOLR-7559.patch
>
> Original Estimate: 10m
> Remaining Estimate: 10m
>
> 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}
> 228 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 }
> {quote}
> 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]