Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ public class MCRSolrRemoteTikaAccumulator implements MCRSolrFileIndexAccumulator

public static final String TIKA_MAPPER_MAX_FILE_SIZE = SOLR_CONFIG_PREFIX + "Tika.MaxFileSize";

public static final String TIKA_EXTRACT_TEXT_ENDPOINT_PROPERTY = SOLR_CONFIG_PREFIX + "Tika.ExtractTextEndpoint";

private static final Logger LOGGER = LogManager.getLogger();

private final Set<MCRTikaHttpClient> tikaClients;
Expand All @@ -88,7 +90,8 @@ public MCRSolrRemoteTikaAccumulator() {
() -> MCRConfiguration2.createConfigurationException(TIKA_MAPPER_MAX_FILE_SIZE));

this.tikaClients = MCRConfiguration2.splitValue(serverList.orElse(""))
.map(MCRTikaHttpClient::new)
.map(baseUrl -> new MCRTikaHttpClient(baseUrl.trim(),
MCRConfiguration2.getString(TIKA_EXTRACT_TEXT_ENDPOINT_PROPERTY).orElseThrow().trim()))
.collect(Collectors.toSet());
enabled = !tikaClients.isEmpty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,23 @@ public class MCRTikaHttpClient {

private final String url;

// default endpoint for Tika v2 and v3 / for v4 use 'tika/json/text'
private String extractTextEndpoint = "tika/text";

public MCRTikaHttpClient(String url) {
this.url = url.endsWith("/") ? url : url + "/";
}

public MCRTikaHttpClient(String url, String extractTextEndpoint) {
this(url);
this.extractTextEndpoint = extractTextEndpoint.startsWith("/")
? extractTextEndpoint.replaceFirst("^\\/+", "") : extractTextEndpoint;
}

public <T extends Throwable> void extractText(InputStream is, ThrowingConsumer<TreeNode, T> responseConsumer)
throws IOException, T {
HttpRequest httpPut = MCRSolrUtils.getRequestBuilder()
.uri(URI.create(url + "tika/text"))
.uri(URI.create(url + extractTextEndpoint))
.setHeader("Accept", "application/json")
.PUT(HttpRequest.BodyPublishers.ofInputStream(() -> is))
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ MCR.Solr.Tika.Mapper.x_tika_content.MultiValueField=true

MCR.Solr.Tika.IgnoredFiles=/alto/.*[.]xml,/mets[.]xml

#ExtractTextEndpoint in Tika 4: tika/json/text
MCR.Solr.Tika.ExtractTextEndpoint=tika/text

# 1GB
MCR.Solr.Tika.MaxFileSize=1073741824

Expand Down
Loading