有没有办法通过配置将spring-data-solr与Tika一起使用?否则,对于spring-data-solr,有没有替代solrj的ContentStreamUpdateRequest+addfile
?
目前我正在以这种方式使用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?
答案 0 :(得分: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);
}
});
如果您需要在更多存储库中使用此类行为,那么这篇关于adding custom methods to all repositories的帖子可能会有所帮助。