Есть ли способ интегрировать spring-data-solr с Tika?

Есть ли способ через конфигурацию использовать spring-data-solr с Tika? В противном случае, есть ли альтернатива ContentStreamUpdateRequest+addfile solrj для spring-data-solr?

В настоящее время я использую 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?


person Osy    schedule 14.02.2014    source источник


Ответы (1)


Прямой поддержки ContentStreamUpdateRequest нет. Запасным вариантом было бы сделать это внутри SolrCallback, выполненного 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);
  }

});

Если вам нужно такое поведение в большем количестве репозиториев, возможно, этот пост о может помочь добавление пользовательских методов ко всем репозиториям.

person Christoph Strobl    schedule 17.02.2014
comment
Спасибо @Chistoph, но мне нужно избегать использования ContentStreamUpdateRequest (solrj) - person Osy; 20.02.2014