I should have also included one more bit of information. If I configure the top-level (sharding) request handler to use just the suggest component as such:
<requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchHandler"> <!-- default values for query parameters --> <lst name="defaults"> <str name="echoParams">explicit</str> <str name="shards.qt">suggest-core</str> <str name="shards">localhost:8080/solr/core0/,localhost:8080/solr/core1/</str> </lst> <arr name="components"> <str>suggest</str> </arr> </requestHandler> Then I don't get a NPE, but I also get a response with no results. <response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">0</int> <lst name="params"> <str name="q">r</str> </lst> </lst> </response> For completeness, here are the other pieces to the solrconfig.xml puzzle: <requestHandler class="org.apache.solr.handler.component.SearchHandler" name="suggest-core"> <lst name="defaults"> <str name="spellcheck">true</str> <str name="spellcheck.dictionary">suggest-one</str> <str name="spellcheck.count">10</str> </lst> <arr name="components"> <str>suggest</str> </arr> </requestHandler> <searchComponent class="solr.SpellCheckComponent" name="suggest"> <lst name="spellchecker"> <str name="name">suggest-one</str> <str name="classname">org.apache.solr.spelling.suggest.Suggester</str> <str name="lookupImpl">org.apache.solr.spelling.suggest.fst.FSTLookup</str> <str name="field">name</str> <!-- the indexed field to derive suggestions from --> <float name="threshold">0.05</float> <str name="buildOnCommit">true</str> </lst> <lst name="spellchecker"> <str name="name">suggest-two</str> <str name="classname">org.apache.solr.spelling.suggest.Suggester</str> <str name="lookupImpl">org.apache.solr.spelling.suggest.fst.FSTLookup</str> <str name="field">content</str> <!-- the indexed field to derive suggestions from --> <float name="threshold">0.0</float> <str name="buildOnCommit">true</str> </lst> </searchComponent> Thanks, -- Ken On May 1, 2012, at 3:48pm, Ken Krugler wrote: > Hi list, > > Does anybody know if the Suggester component is designed to work with shards? > > I'm asking because the documentation implies that it should (since > ...Suggester reuses much of the SpellCheckComponent infrastructure…, and the > SpellCheckComponent is documented as supporting a distributed setup). > > But when I make a request, I get an exception: > > java.lang.NullPointerException > at > org.apache.solr.handler.component.QueryComponent.mergeIds(QueryComponent.java:493) > at > org.apache.solr.handler.component.QueryComponent.handleResponses(QueryComponent.java:390) > at > org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:289) > at > org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129) > at org.apache.solr.core.SolrCore.execute(SolrCore.java:1368) > at > org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:81) > at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:132) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) > 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:765) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) > 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:923) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > at > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) > at > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) > Looking at the QueryComponent.java:493 code, I see: > > SolrDocumentList docs = > (SolrDocumentList)srsp.getSolrResponse().getResponse().get("response"); > > // calculate global maxScore and numDocsFound > if (docs.getMaxScore() != null) { <<<< This is line 493 > > So I'm assuming the "docs" variable is null, which would happen if there is > no "response" element in the Solr response. > > If I make a direct request to the request handler in one core (e.g. > http://hostname:8080/solr/core0/select?qt=suggest-core&q=rad), the query > works. > > But I see that there's no element named "response", unlike a regular query. > > <response> > <lst name="responseHeader"> > <int name="status">0</int> > <int name="QTime">1</int> > </lst> > <lst name="spellcheck"> > <lst name="suggestions"> > <lst name="rad"> > <int name="numFound">10</int> > <int name="startOffset">0</int> > <int name="endOffset">3</int> > <arr name="suggestion"> > <str>radair</str> > <str>radar</str> > </arr> > </lst> > </lst> > </lst> > </response> > > So I'm wondering if my configuration is just borked and this should work, or > the fact that the Suggester doesn't return a response field means that it > just doesn't work with shards. > Thanks, > -- Ken > -------------------------------------------- > http://about.me/kkrugler > +1 530-210-6378 > > > > > > > -------------------------- > Ken Krugler > http://www.scaleunlimited.com > custom big data solutions & training > Hadoop, Cascading, Mahout & Solr > > > > -------------------------- Ken Krugler http://www.scaleunlimited.com custom big data solutions & training Hadoop, Cascading, Mahout & Solr