有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在开发一个web服务,它需要从上传的文档(PDF、PowerPoint、Word等)中提取内容,我想在Google App Engine上运行这个服务,以降低成本。除了运行GoogleComputeVM来运行Solr/Tika作为服务器之外,我还有什么选择?我可以使用AppEngine的Java托管来包装Tika并返回内容吗

应用程序流程如下所示:

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

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


共 (1) 个答案

  1. # 1 楼答案

    简短回答:

    不,它的许多功能都不是现成的

    太多的代码依赖于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());
    }