2014-02-14 91 views
0

有沒有辦法通過配置使用Tika的spring-data-solr?否則,對於spring-data-solr,solrj的ContentStreamUpdateRequest+addfile有沒有其他選擇?有沒有辦法將Tik的spring-data-solr整合起來?

目前我以這種方式使用Solrj +提卡:

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 4.3.0,可以通過spring-data-solr獲得相同的結果,而不必直接調用Solrj?

回答

1

沒有直接支持ContentStreamUpdateRequest。後退將在內執行,由SolrTemplate執行。

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

相關問題