0

有没有办法通过配置将 spring-data-solr 与 Tika 一起使用?ContentStreamUpdateRequest+addfile否则,对于 spring-data-solr的 solrj 是否有一些替代方案?

目前我以这种方式使用 Solrj + 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 4.3.0,是否可以通过 获得相同的结果spring-data-solr,而不必直接调用 Solrj?

4

1 回答 1

1

没有直接支持ContentStreamUpdateRequest. 后备方案是在SolrCallback执行的 by中执行此操作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);
  }

});

如果您在更多存储库中需要这种行为,那么这篇关于向所有存储库添加自定义方法的帖子可能会有所帮助。

于 2014-02-17T04:43:46.280 回答