Java Solr自定义更新请求处理器工厂

Java Solr自定义更新请求处理器工厂,java,solr,requesthandler,Java,Solr,Requesthandler,我被这个问题难住了。我已经编写了一个定制的UpdateRequestProcessorFactory。代码是: package mira; import java.io.IOException; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.response.SolrQueryResponse;

我被这个问题难住了。我已经编写了一个定制的UpdateRequestProcessorFactory。代码是:

package mira;
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 MaProcessorFactory extends UpdateRequestProcessorFactory
  {
    @Override
    public UpdateRequestProcessor getInstance(SolrQueryRequest req, SolrQueryResponse  rsp,      UpdateRequestProcessor next)
   {
     return new MaProcessor(next);
    }
  }

 class MaProcessor extends UpdateRequestProcessor
  {
    public MaProcessor( UpdateRequestProcessor next) {
      super( next );
    }

  @Override
  public void processAdd(AddUpdateCommand cmd) throws IOException {
    SolrInputDocument doc = cmd.getSolrInputDocument();

    Object vid = doc.getFieldValue( "id" );
    Object vcontent = doc.getFieldValue( "content" );

    doc.setField( "fileurl", vid );

    // pass it up the chain
    super.processAdd(cmd);
  }
}
我通过将类路径设置为
类路径:../../dist/solr-solrj-4.10.1.././dist/solr-core-4.10.1.jar

和编译为

jar cfmv mira.jar Manifest.txt MaProcessor.class MaProcessorFactory.class
Manifest.txt是

CLASS-PATH: ../../solr-solrj-4.10.1 ../../solr-core-4.10.1.jar
我的Solrconfig.xml

<lib dir="../../" regex="mira.jar" />
我犯了一个错误

  Error creating core [divine-c]: Error loading class 'mira.MaProcessorFactory'
    org.apache.solr.common.SolrException: Error loading class 'mira.MaProcessorFactory'

任何帮助都将不胜感激

尝试将mira.jar放入与solr.xml相同级别的lib目录中
请参阅Shawn的回复:

当您启动solr时,是否看到日志消息中显示mira.jar已加载?通过查看日志很容易验证jar是否已加载

另外,我使用maven生成jar,我不熟悉jarcfmv命令。我将尝试使用自动化工具(如ant或maven)生成最终的jar


这是我的两分钱。

我不知道这是否最终解决了,但您是否尝试将您的库放在核心文件夹中


{core\u folder}/lib/mira.jar

您不必在Solrconfig中提及jar名称,而是由solr自动加载,如果它位于solr.home.home/lib或solr自动加载的任何solr路径中

现在自动加载jar后,您需要在完整的包中提到类名,如
class=“com.augmentsys.HelloWorld”
,如果您愿意,还可以使用name标记进一步使用

像这样的

class="com.augmentsys.HelloWorld" name="mytest" 

试试看。

solr-solrj-4.10.1是一个打字错误。我确实在Manifest.txt文件中有solr-solrj-4.10.1.jar。谢谢Ahmet,但这不起作用。我试过各种各样的东西。在solr文件夹下创建了一个lib,并将mira.jar放在其中,将lib文件夹放在solrconfig.xml中。还尝试不将其放在solrconfig.xml中,但都不起作用。还有别的事情。一根手指也插不上。是的,mira.jar已加载。在处理过程中,我可以在命令行中看到这一点。我对马文不熟悉。也许我可以试试。jar cfmv命令是创建文件清单验证。您有使用maven生成jar的命令吗?谢谢。所以问题出在罐子上。Maven非常简单,mvm包生成一个jar,您可以立即使用它。许多IDE也支持maven。下面是一个示例模板solr插件项目:
  Error creating core [divine-c]: Error loading class 'mira.MaProcessorFactory'
    org.apache.solr.common.SolrException: Error loading class 'mira.MaProcessorFactory'
class="com.augmentsys.HelloWorld" name="mytest"