【问题标题】:How to use Tika in server mode如何在服务器模式下使用 Tika
【发布时间】:2012-09-01 21:39:18
【问题描述】:

在 Tika 的网站上,它说(关于 tika-app-1.2.jar)它可以在服务器模式下使用。有谁知道一旦该服务器运行后如何发送文档和接收解析的文本?

【问题讨论】:

    标签: apache-tika


    【解决方案1】:

    Tika 支持两种“服务器”模式。更简单和原始的是 Tika-App 的--server 标志。 JAX-RS JSR-311 server component 功能更强大,但也更新,它是一个额外的 jar。

    Tika-App 网络服务器使用起来非常简单。只需使用--server 标志和--port ### 标志启动Tika-App,告诉它要监听哪个端口。然后,连接到该端口并发送一个文件。您将获得 html 版本。 NetCat 可以很好地解决这个问题,像 java -jar tika-app.jar --server --port 12345 后跟 nc 127.0.0.1 12345 < MyFileToExtract 这样的东西会让你回到 html

    JAX-RS JSR-311 server component 支持几个不同的 url,用于元数据、纯文本等。你用java -jar tika-server.jar 启动服务器,然后用你的输入文档对适当的 url 进行 HTTP 调用,你会得到资源回来。 wiki page 上有大量细节和示例(包括使用 curl 进行测试)

    Tika App Network Server 相当简单,仅支持一种模式(提取到 HTML),通常用于测试/演示/原型设计/等。Tika JAXRS Server 是一个完全 RESTful 服务,它与 HTTP 通信,并暴露各种 Tika 的模式。这是目前通过网络和/或非 Java 堆栈与 Tika 交互的普遍推荐方式。

    【讨论】:

    • 这个答案对我帮助很大。事实上,服务器不仅返回 HTML。例如,使用“-j”等其他选项,服务器将返回 JSON 元数据。
    • 您可能想使用 curl 代替。 curl -s http://localhost:9998/tika --header "Accept: text/plain" -T filename.xls
    • 线程“main”java.lang.IllegalArgumentException 中的异常:从 Tika 2.0 开始,tika-app 不再支持服务器选项。如该错误中所述,已删除 Tika 应用服务器选项,唯一的方法是运行专用的 Tika 服务器。
    【解决方案2】:

    只是添加到@Gagravarr 的好答案。

    在服务器模式下谈论 Tika 时,区分两个版本很重要,否则会引起混淆:

    • tika-app.jar 有 --server --port 9998 选项来启动一个简单的服务器
    • tika-server.jar 是使用 JAX-RS 的独立组件

    第一个选项仅提供文本提取并将内容作为 HTML 返回。最有可能的是,您真正想要的是第二个选项,它是一个 RESTful 服务,它公开了 Tika 的更多功能。

    您可以在 Tika 项目网站上简单地 download the tika-server.jar。使用

    启动服务器
    java -jar tika-server-x.x.jar -h 0.0.0.0
    

    -h 0.0.0.0 (host) 选项让服务器监听任何传入的请求,否则它只会监听来自本地主机的请求。也可以加上-p选项改变端口,否则默认为9998。

    然后,一旦服务器启动,您就可以使用浏览器访问它。它将列出所有可用的端点。

    最后,要从文件中提取元数据,您可以像这样使用 cURL:

    curl -T testWORD.doc http://example.com:9998/meta
    

    将元数据作为键/值对返回,每行一个。您还可以通过添加正确的接受标头让 Tika 以 JSON 格式返回结果:

    curl -H "Accept: application/json" -T testWORD.doc http://example.com:9998/meta
    

    [2015-01-19 更新] 之前的评论说 tika-server.jar 无法下载。修复了这个问题,因为它确实以二进制下载的形式存在。

    【讨论】:

    • Tika 服务器作为标准构建和分发已有一段时间了!你可以在离你最近的 Apache 镜像上找到它,或者点击download page中的链接
    • 我建议您编辑您的答案以指导人们从镜像下载 tika-app 和 tika-server jar,而不是 tika-src,因为它会更快更容易他们!
    • 我更喜欢这个答案,它更深入
    • 是否可以使用 tika-server 从 URL 中提取内容?当我尝试使用此 curl 时,它正在返回 HTML - curl stackoverflow.com/questions/12231630/… localhost:8000/tika/main
    • 感谢您提到运行服务器的 -h 选项
    【解决方案3】:

    增强 Gagravarr 完美答案:

    • 如果您的文档是从 WEB 服务器获取的 => curl -u "http://myserver-domain/*path-to-doc*/doc-name.extension" |数控 127.0.0.1 12345
    • 如果文档有密码保护就更好了 => curl -u 登录:*密码* "http://myserver-domain/*path-to-doc*/doc-name.extension" |数控 127.0.0.1 12345

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 2013-01-24
      • 2010-10-12
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      相关资源
      最近更新 更多