it would sound like none of the docs in your index has the "class" field,
in your case Tags, whereas classification needs some bootstrapping (add
some examples of correctly classified docs to the index beforehand).
On the other hand the naive bayes implementation has definitely a bug as
the MultiFields.getTerms(indexReader, classFieldName) call may return  null
(this is handled in SimpleNaiveBayesClassifier but not in
SImpleNaiveBayesDocumentClassifier).

Hope this helps,
Tommaso

Il giorno mer 30 ago 2017 alle ore 22:15 Adriano <adriano.rube...@gmail.com>
ha scritto:

> Hello,
>
> I'm trying to use the knn classifier by following this link:
> https://wiki.apache.org/solr/SolrClassification
>
> I use this config :
>
> <requestHandler name="/update" class="solr.UpdateRequestHandler">
>     <lst name="defaults">
>       <str name="update.chain">classification</str>
>     </lst>
>   </requestHandler>
>
> and
>
>   <updateRequestProcessorChain name="classification">
>         <processor class="solr.ClassificationUpdateProcessorFactory">
>                 <str name="inputFields">Title,Body</str>
>                 <str name="classField">Tags</str>
>                 <str name="predictedClassField">Tags</str>
>                 <str name="algorithm">knn</str>
>                 <str name="knn.k">20</str>
>                 <str name="knn.minTf">1</str>
>                 <str name="knn.minDf">5</str>
>         </processor>
>
>         <processor class="solr.LogUpdateProcessorFactory"/>
>         <processor class="solr.RunUpdateProcessorFactory" />
>   </updateRequestProcessorChain>
>
> For the schema.xml :
>
>   <field name="Title" type="text_en" indexed="true" stored="true"
> termVectors="true"/>
>   <field name="Body" type="text_en" indexed="true" stored="true"
> termVectors="true"/>
>   <field name="Tags" type="strings" indexed="true" stored="true"
> multiValued="true"/>
>
> There's no error, even in the log.
>
> It's like the updateRequestProcessorChain is not called. So I try with the
> bayes and this error occurs :
>
> java.lang.NullPointerException
>         at
>
> org.apache.lucene.classification.document.SimpleNaiveBayesDocumentClassifier.assignNormClasses(SimpleNaiveBayesDocumentClassifier.java:116)
>         at
>
> org.apache.lucene.classification.document.SimpleNaiveBayesDocumentClassifier.getClasses(SimpleNaiveBayesDocumentClassifier.java:106)
>         at
>
> org.apache.solr.update.processor.ClassificationUpdateProcessor.processAdd(ClassificationUpdateProcessor.java:107)
>         at
>
> org.apache.solr.handler.loader.JavabinLoader$1.update(JavabinLoader.java:98)
>         at
>
> org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$1.readOuterMostDocIterator(JavaBinUpdateRequestCodec.java:180)
>         at
>
> org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$1.readIterator(JavaBinUpdateRequestCodec.java:136)
>         at
> org.apache.solr.common.util.JavaBinCodec.readObject(JavaBinCodec.java:306)
>         at
> org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:251)
>         at
>
> org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$1.readNamedList(JavaBinUpdateRequestCodec.java:122)
>         at
> org.apache.solr.common.util.JavaBinCodec.readObject(JavaBinCodec.java:271)
>         at
> org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:251)
>         at
> org.apache.solr.common.util.JavaBinCodec.unmarshal(JavaBinCodec.java:173)
>         at
>
> org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec.unmarshal(JavaBinUpdateRequestCodec.java:187)
>         at
>
> org.apache.solr.handler.loader.JavabinLoader.parseAndLoadDocs(JavabinLoader.java:108)
>         at
> org.apache.solr.handler.loader.JavabinLoader.load(JavabinLoader.java:55)
>         at
>
> org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:97)
>         at
>
> org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:68)
>         at
>
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:173)
>         at org.apache.solr.core.SolrCore.execute(SolrCore.java:2477)
>         at
> org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:723)
>         at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:529)
>         at
>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:361)
>         at
>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:305)
>         at
>
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1691)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)
>         at
>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
>         at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
>         at
>
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
>         at
>
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
>         at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
>         at
>
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
>         at
>
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
>         at
>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
>         at
>
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)
>         at
>
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:119)
>         at
>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
>         at
>
> org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
>         at
>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
>         at org.eclipse.jetty.server.Server.handle(Server.java:534)
>         at
> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
>         at
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
>         at
> org.eclipse.jetty.io
> .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
>         at org.eclipse.jetty.io
> .FillInterest.fillable(FillInterest.java:95)
>         at
> org.eclipse.jetty.io
> .SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
>         at
>
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
>         at
>
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
>         at
>
> org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
>         at
>
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
>         at
>
> org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
>         at java.lang.Thread.run(Thread.java:748)
>
> What am I doing wrong ? Did I miss something ?
>
>
>
>
>
> --
> Sent from: http://lucene.472066.n3.nabble.com/Solr-User-f472068.html
>

Reply via email to