java - 我可以在 Google App Engine 上使用 Tika 进行内容提取吗?

标签 java google-app-engine solr apache-tika

我正在开发一项网络服务,该服务需要从上传的文档(PDF、PowerPoint、Word 等)中提取内容,我希望将其托管在 Google App Engine 上以降低成本。如果没有运行 Google Compute VM 来运行 Solr/Tika 作为服务器,我有什么选择?我可以使用 App Engine 的 Java 托管来包装 Tika 并返回内容吗?

应用程序流程如下所示:

  1. 用户上传文档。 Worker 任务被放入队列中。
  2. 工作任务被消耗,触发将文件名发送到 Solr 以进行 Tika 提取。假设这个过程可能是一个 Java 应用程序读取文件内容并将其发送给 Tika。
  3. 内容存储在全文搜索引擎和数据库中。

使用任务队列执行 Tika 命令行应用程序似乎不可能。

最佳答案

简短回答:

不,它的大部分功能并不是开箱即用的。

太多代码依赖于 File 对象并创建 GAE 中不存在的临时 File 对象。

长答案:

它是开源的,您可以破解代码并更改调用采用 File 对象的方法的内容以采用 InputStream 对象,然后您可以处理事物位于 BlobstoreGCS 中。

这是我现在正在破解的一个示例:

@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/

相关文章:

java - 如何根据名称、大小和上次修改时间对目录列表进行排序?

python - python + Google 应用引擎中的自动完成文本框示例

python - Appengine 数据存储 - 属性和复合索引之间的关系

docker - 如何从Docker撰写文件为Solr服务器设置自定义IP?

java - 根据通知操作点击打开不同的 Activity

java - 使用 Kotlin Gradle DSL 向 Kotlin 项目添加集成测试

java - Solr 仅在子查询匹配时返回父文档

mysql - Solr 4.10.2 MySQL 导入失败并出现 java.io.EOFException

java - 在 Quarkus 中使用 @Inject 和接口(interface)进行依赖注入(inject)

javascript - 为什么成功的 jQuery 跨域发布请求没有触发成功处理程序?