Reputation: 2296
I've trying to calculate the length of a field (like title
). I'm using Nutch for crawling the webpages. I've created a fieldProcessor.jar
file with the following code:
FieldProcessorFactory.java
package ved;
import java.io.IOException;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.update.AddUpdateCommand;
import org.apache.solr.update.processor.UpdateRequestProcessor;
import org.apache.solr.update.processor.UpdateRequestProcessorFactory;
public class FieldProcessorFactory extends UpdateRequestProcessorFactory
{
@Override
public UpdateRequestProcessor getInstance(SolrQueryRequest req, SolrQueryResponse rsp, UpdateRequestProcessor next)
{
return new FieldProcessor(next);
}
}
FieldProcessor.java
package ved;
import java.io.IOException;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.update.AddUpdateCommand;
import org.apache.solr.update.processor.UpdateRequestProcessor;
import org.apache.solr.update.processor.UpdateRequestProcessorFactory;
class FieldProcessor extends UpdateRequestProcessor
{
public FieldProcessor( UpdateRequestProcessor next) {
super( next );
}
@Override
public void processAdd(AddUpdateCommand cmd) throws IOException {
String title = (String) cmd.getSolrInputDocument().get("title").getValue();
cmd.getSolrInputDocument().addField("title_length_i", title.split(" ").length);
super.processAdd(cmd);
}
}
I've added the following lines in solrconfig.xml
:
<lib dir="${solr.install.dir:../../../..}/plugins/" regex="fieldProcessor.jar" />
<updateRequestProcessorChain name="process-articles" lib="custom-libs" version="1">
<processor class="ved.FieldProcessor"/>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.DistributedUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
<initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
<lst name="defaults">
<str name="df">text</str>
<str name="update.chain">process-articles</str>
</lst>
</initParams>
After this I'm reindexing using Nutch. But upon reloading the core I'm getting following error:
nutch: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Error Instantiating UpdateRequestProcessorFactory, ved.FieldProcessor failed to instantiate org.apache.solr.update.processor.UpdateRequestProcessorFactory
Why am I getting this error ?
EDIT Here is the Solr log:
2020-02-21 14:19:51.172 ERROR (qtp1282788025-21) [ x:nutch] o.a.s.s.HttpSolrCall null:org.apache.solr.common.SolrException: Error handling 'reload' action
at org.apache.solr.handler.admin.CoreAdminOperation.lambda$static$2(CoreAdminOperation.java:113)
at org.apache.solr.handler.admin.CoreAdminOperation.execute(CoreAdminOperation.java:384)
at org.apache.solr.handler.admin.CoreAdminHandler$CallInfo.call(CoreAdminHandler.java:388)
at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:174)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:173)
at org.apache.solr.servlet.HttpSolrCall.handleAdmin(HttpSolrCall.java:748)
at org.apache.solr.servlet.HttpSolrCall.handleAdminRequest(HttpSolrCall.java:729)
at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:510)
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)
Caused by: org.apache.solr.common.SolrException: Unable to reload core [nutch]
at org.apache.solr.core.CoreContainer.reload(CoreContainer.java:1189)
at org.apache.solr.handler.admin.CoreAdminOperation.lambda$static$2(CoreAdminOperation.java:111)
... 36 more
Caused by: org.apache.solr.common.SolrException: Error Instantiating UpdateRequestProcessorFactory, ved.FieldProcessor failed to instantiate org.apache.solr.update.processor.UpdateRequestProcessorFactory
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:977)
at org.apache.solr.core.SolrCore.reload(SolrCore.java:640)
at org.apache.solr.core.CoreContainer.reload(CoreContainer.java:1183)
... 37 more
Caused by: org.apache.solr.common.SolrException: Error Instantiating UpdateRequestProcessorFactory, ved.FieldProcessor failed to instantiate org.apache.solr.update.processor.UpdateRequestProcessorFactory
at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:774)
at org.apache.solr.core.SolrCore.createInitInstance(SolrCore.java:809)
at org.apache.solr.core.SolrCore.initPlugins(SolrCore.java:2717)
at org.apache.solr.update.processor.UpdateRequestProcessorChain.init(UpdateRequestProcessorChain.java:127)
at org.apache.solr.core.SolrCore.createInitInstance(SolrCore.java:811)
at org.apache.solr.core.SolrCore.initPlugins(SolrCore.java:2698)
at org.apache.solr.core.SolrCore.initPlugins(SolrCore.java:2692)
at org.apache.solr.core.SolrCore.loadUpdateProcessorChains(SolrCore.java:1401)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:933)
... 39 more
Caused by: java.lang.ClassCastException: class ved.FieldProcessor
at java.lang.Class.asSubclass(Class.java:3404)
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:539)
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:486)
at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:753)
... 47 more
2020-02-21 14:19:52.209 INFO (qtp1282788025-12) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/cores params={indexInfo=false&wt=json&_=1581436974406} status=0 QTime=0
2020-02-21 14:19:52.227 INFO (qtp1282788025-15) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/cores params={wt=json&_=1581436974406} status=0 QTime=2
2020-02-21 14:19:52.256 INFO (qtp1282788025-16) [ ] o.a.s.s.HttpSolrCall [admin] webapp=null path=/admin/info/system params={wt=json&_=1581436974407} status=0 QTime=40
Upvotes: 0
Views: 257
Reputation: 52792
The actual error is:
Caused by: java.lang.ClassCastException: class ved.FieldProcessor
This happens when the class you've given in your config isn't of the type expected. Since all the other classes end with Factory, you want to give it the FieldProcessorFactory
instead, and not the FieldProcessor
directly.
Upvotes: 1