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

NPE on spellcheck.count=0 for DirectSolrSpellChecker

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Cannot Reproduce
    • 4.0
    • None
    • spellchecker
    • None

    Description

      An NPE occurs if the spellcheck.count=0 parameter is specified when the spellcheck component is enabled with a DirectSolrSpellChecker spellchecker and a query term that has non-zero suggestions.

      Repro:

      1. Start with Solr 4.0 example.

      2. Add these sample documents:

      curl http://localhost:8983/solr/update?commit=true -H 'Content-type:application/csv' -d '
      id,name
      spel-1,aardvark abacus ball bill cat cello
      spel-2,abate accord band bell cattle check
      spel-3,adorn border clean clock'
      

      3. Perform this spellcheck request:

      curl "http://localhost:8983/solr/spell/?q=catl&spellcheck.count=0&indent=true"
      

      4. See the NPE at org.apache.lucene.search.spell.DirectSpellChecker.suggestSimilar line 409.

      Response:

      <?xml version="1.0" encoding="UTF-8"?>
      <response>
      
      <lst name="responseHeader">
        <int name="status">500</int>
        <int name="QTime">45</int>
      </lst>
      <result name="response" numFound="0" start="0">
      </result>
      <lst name="error">
        <str name="trace">java.lang.NullPointerException
              at org.apache.lucene.search.spell.DirectSpellChecker.suggestSimilar(DirectSpellChecker.java:409)
              at org.apache.lucene.search.spell.DirectSpellChecker.suggestSimilar(DirectSpellChecker.java:355)
              at org.apache.solr.spelling.DirectSolrSpellChecker.getSuggestions(DirectSolrSpellChecker.java:189)
              at org.apache.solr.spelling.ConjunctionSolrSpellChecker.getSuggestions(ConjunctionSolrSpellChecker.java:120)
              at org.apache.solr.handler.component.SpellCheckComponent.process(SpellCheckComponent.java:172)
              at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:206)
              at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
              at org.apache.solr.core.RequestHandlers$LazyRequestHandlerWrapper.handleRequest(RequestHandlers.java:240)
              at org.apache.solr.core.SolrCore.execute(SolrCore.java:1699)
              at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:455)
              at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:276)
              at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1337)
              at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:484)
              at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
              at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
              at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
              at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065)
              at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413)
              at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
              at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999)
              at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
              at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
              at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
              at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
              at org.eclipse.jetty.server.Server.handle(Server.java:351)
              at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454)
              at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:47)
              at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890)
              at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944)
              at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:634)
              at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)
              at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:66)
              at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:254)
              at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599)
              at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534)
              at java.lang.Thread.run(Unknown Source)
      </str>
        <int name="code">500</int>
      </lst>
      </response>
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            jkrupan Jack Krupansky
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: