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。

那是我的两分钱。

于 2014-12-25T12:41:55.093 回答
0

尝试将 mira.jar 放入与 solr.xml 相同级别的 lib 目录请参阅 Shawn 的回复:http ://find.searchhub.org/document/a280909a7286e1c8#73b177718d3e9959

于 2014-12-24T09:00:28.370 回答
0

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

{core_folder}/lib/mira.jar

于 2016-10-11T12:27:01.503 回答
0

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

现在自动加载 jar,您需要提及带有完整包的类名class="com.augmentsys.HelloWorld",如果您愿意,还可以使用名称标签以供进一步使用。

所以像这样

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

试试看。

于 2017-07-20T03:06:58.927 回答