我正在开发一项网络服务,该服务需要从上传的文档(PDF、PowerPoint、Word 等)中提取内容,我希望将其托管在 Google App Engine 上以降低成本。如果没有运行 Google Compute VM 来运行 Solr/Tika 作为服务器,我有什么选择?我可以使用 App Engine 的 Java 托管来包装 Tika 并返回内容吗?
应用程序流程如下所示:
- 用户上传文档。 Worker 任务被放入队列中。
- 工作任务被消耗,触发将文件名发送到 Solr 以进行 Tika 提取。假设这个过程可能是一个 Java 应用程序读取文件内容并将其发送给 Tika。
- 内容存储在全文搜索引擎和数据库中。
使用任务队列执行 Tika 命令行应用程序似乎不可能。
最佳答案
简短回答:
不,它的大部分功能并不是开箱即用的。
太多代码依赖于 File
对象并创建 GAE 中不存在的临时 File
对象。
长答案:
它是开源的,您可以破解代码并更改调用采用 File
对象的方法的内容以采用 InputStream
对象,然后您可以处理事物位于 Blobstore
或 GCS
中。
这是我现在正在破解的一个示例:
@NotNull
public static Metadata readMetadata(@NotNull File file) throws JpegProcessingException, IOException
{
JpegSegmentReader segmentReader = new JpegSegmentReader(file);
return extractMetadataFromJpegSegmentReader(segmentReader.getSegmentData());
}
哪里有这个完美的调用,不依赖于 File
对象:
@NotNull
public static Metadata readMetadata(@NotNull InputStream inputStream, final boolean waitForBytes) throws JpegProcessingException
{
JpegSegmentReader segmentReader = new JpegSegmentReader(inputStream, waitForBytes);
return extractMetadataFromJpegSegmentReader(segmentReader.getSegmentData());
}
关于java - 我可以在 Google App Engine 上使用 Tika 进行内容提取吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20361934/