1

私はこの問題に困惑しています。カスタム 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);
  }
}

クラスパスを次のように設定し、次のよう CLASS-PATH: ../../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" />

最後のディレクティブとして

  <requestHandler name="/update" class="solr.UpdateRequestHandler"> 
   <lst name="defaults">
   <str name="update.chain">concatfld</str>
   </lst>      
   </requestHandler>

  <updateRequestProcessorChain name="concatfld">
      <processor class="mira.MaProcessorFactory" />
      <processor class="solr.LogUpdateProcessorFactory" />
     <processor class="solr.RunUpdateProcessorFactory" />
   </updateRequestProcessorChain>`

私が走るとき

   java -jar start.jar

エラーが発生する

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

どんな助けでも大歓迎です。

4

4 に答える 4

1

solr を起動すると、mira.jar がロードされたことを示すログ メッセージが表示されますか? ログを見て、jar がロードされたかどうかを確認するのは簡単です。

また、maven を使用して jar を生成します。jar cfmv コマンドに慣れていません。ant や maven などの自動化ツールを使用して、最終的な jar を生成しようとします。

それは私の2セントです。

于 2014-12-25T12:41:55.093 に答える
0

これが最終的に解決したかどうかはわかりませんが、ライブラリをコア フォルダに入れてみましたか?

{core_folder}/lib/mira.jar

于 2016-10-11T12:27:01.503 に答える