2014-12-23 6 views
1

이 문제로 인해 문제가 발생합니다. 사용자 정의 UpdateRequestProcessorFactory를 작성했습니다. 코드는 다음과 같습니다 나는 CLASS-PATH: ../../dist/solr-solrj-4.10.1 ../../dist/solr-core-4.10.1.jar
으로 클래스 경로를 설정하고 컴파일하여 컴파일Solr 사용자 지정 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); 
    } 
} 

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>` 

은 내가 어떤 도움이 크게 감사합니다

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

오류가

java -jar start.jar 

을 실행할 때.

+0

solr-solrj-4.10.1은 오타였다. Manifest.txt 파일에 solr-solrj-4.10.1.jar가 있습니다. – Mike

답변

0

는 같은 레벨의 lib 디렉토리에 mira.jar를 넣어보십시오 solr.xml 참조하시기 바랍니다 숀의 응답 : http://find.searchhub.org/document/a280909a7286e1c8#73b177718d3e9959

+0

고마워요.하지만 그건 효과가 없습니다. 나는 모든 종류의 것을 시도했다. solr 폴더 아래에 lib를 생성하고 거기에 mira.jar를 넣고 solrconfig.xml에 lib 폴더를 넣습니다. 또한 solrconfig.xml에 넣지 않으려 고 시도했습니다. 아무 것도 작동하지 않았습니다. 다른 일이 일어나고 있습니다. 탄력이 그것에 손가락을 넣어. – Mike

1

당신이 SOLR 시작, 당신이 mira.jar로드 말합니다 메시지를 기록 보는가? jar로드 여부는 로그를보고 확인할 수 있습니다.

또한 jar를 생성하기 위해 maven을 사용합니다. jar cfmv 명령에 익숙하지 않습니다. 개미 (ant) 나 메이븐 (maven)과 같은 자동화 도구로 최종 항아리를 생성하려고합니다.

그게 내 두 센트.

+0

예 mira.jar가로드되었습니다. 처리 중 명령 줄에서 확인할 수 있습니다. 나는 maven에 익숙하지 않다. 아마 나는 그것을 시도 할 수있다.jar cfmv 명령은 create-file-manifest-verify입니다. Maven을 사용하여 jar 파일을 생성하라는 명령이 있습니까? 감사. – Mike

+0

문제는 항아리 때문입니다. Maven은 매우 쉽고, mvm 패키지는 jar 파일을 생성하고 즉시 사용할 수 있습니다. 많은 IDE가 maven을 지원합니다. 다음은 샘플 솔라 - 플러그인 프로젝트 템플릿입니다 : https://issues.apache.org/jira/secure/attachment/12634690/ComplexPhrase-4.7.zip –

0

이것이 마침내 해결되는지 모르지만 라이브러리를 코어 폴더에 넣으려고 했습니까?

{core_folder}/lib/mira.jar

0

당신은 Solrconfig에 항아리의 이름을 언급하지 않아도, 오히려는 자동으로로드 된 경우가 solr.home.home에 lib 디렉토리 또는 AUT-로드되는 모든 SOLR 경로/인, SOLR에 의해 ~에 의해 solr.

이제 자동으로 jar가로드되므로 class="com.augmentsys.HelloWorld"과 같은 전체 패키지로 클래스 이름을 언급해야하며 원하는 경우 나중에 사용할 수 있도록 이름 태그를 사용할 수도 있습니다.

그래서이

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

같은 그것을 시도주십시오.