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)
Ken Krugler
http://www.scaleunlimited.comcustom big data solutions & training
Hadoop, Cascading, Mahout & Solr