2014-02-14 10 views
0

구성을 통해 Tika에서 spring-data-solr을 사용하는 방법이 있습니까? 그렇지 않으면 spring-data-solr에 대한 solrj의 ContentStreamUpdateRequest+addfile에 대한 대안이 있습니까? 현재 나는이 방식으로 Solrj + 티카를 사용하고spring-data-solr과 Tika를 통합하는 방법이 있습니까?

는 :

SolrServer server = new HttpSolrServer(URL); 
... 
Tika tika = new Tika(); 
... 
String fileType = tika.detect(path.toFile()); 
up = new ContentStreamUpdateRequest("/update/extract"); 
up.addFile(path.toFile(), fileType); 
up.setParam("literal.id", idField); 
... 
up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true); 
NamedList<Object> request = server.request(up); 

나는 성공적으로 ExtractingRequestHandler 가이드에 따라이 방법에 도착했다.

solr을 직접 호출하지 않고 spring-data-solr을 통해 같은 결과를 얻을 수 있습니까?

답변

1

ContentStreamUpdateRequest에 대한 직접적인 지원은 없습니다. 대체는 에 의해 실행되는 SolrCallback 이내에 수행해야합니다.

NamedList<Object> result = solrTemplate.execute(new SolrCallback<NamedList<Object>>() { 

    @Override 
    public NamedList<Object> doInSolr(SolrServer solrServer) throws SolrServerException, IOException { 
    Tika tika = new Tika(); 
    // ... 
    String fileType = tika.detect(path.toFile()); 
    ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract"); 
    up.addFile(path.toFile(), fileType); 
    up.setParam("literal.id", idField); 
    // ... 
    up.setAction(org.apache.solr.client.solrj.request.AbstractUpdateRequest.ACTION.COMMIT, true, true); 
    NamedList<Object> request = solrServer.request(up); 
    } 

}); 

이 경우 당신은 아마이 게시물에 대한 adding custom methods to all repositories 도움이 될 수 있습니다 더 저장소에서 행동의이 종류가 필요합니다.

+0

감사합니다. @Chistoph하지만 ContentStreamUpdateRequest (solrj)를 사용하지 않아야합니다. – Osy