跳转到主要内容

使用portal transforms对Apache Tika进行集成的Plone。

项目描述

ftw.tika

本产品集成了Apache Tika,通过提供对Tika支持的多种文档格式的text/plain门户转换,来实现与Plone的全文索引。

兼容性

ftw.tika 兼容Plone 4.x以及以下列出的Tika版本(Plone和Tika版本可以混合搭配)。

Tika 1.6

Plone 4.2

Tika 1.7

Plone 4.3

Tika 1.8

Plone 5.1

Tika 1.9

Tika 1.10

Tika 1.11

支持格式

输入格式

  • Microsoft Office格式(Office Open XML)

    • *.docx Word文档

    • *.dotx Word模板

    • *.xlsx Excel电子表格

    • *.xltx Excel模板

    • *.pptx PowerPoint演示文稿

    • *.potx PowerPoint模板

    • *.ppsx PowerPoint演示文稿

  • 旧的Microsoft Office(97)格式

  • 富文本格式

  • OpenOffice ODF格式

  • OpenOffice 1.x格式

  • 常见的Adobe格式(InDesign、Illustrator、Photoshop)

  • PDF文档

  • WordPerfect文档

  • 电子邮件消息

有关这些格式的MIME类型详细信息,请参阅mimetypes模块。

Tika支持但尚未连接的格式

  • 电子出版物格式

  • 压缩和打包格式

  • 音频格式

  • 图像格式

  • 视频格式

  • Java类文件和归档

  • mbox格式

有关详细信息,请参阅Apache Tika Wiki上的支持的文档格式页面。

输出格式

  • text/plain

安装

作为守护进程运行Tika JAX-RS服务器的首选方法。虽然可以在每次文件转换时启动Tika而无需守护进程(通过为每次转换启动它),但守护进程速度更快。

两种方法都需要下载tika-app.jar并为ftw.tika进行一些ZCML配置。守护进程方法还需要下载JAX-RS tika-server.app

以下是一些配置示例。

守护进程构建示例

请参阅包含的tika.cfg文件,以获取必要的守护进程示例,您可以根据需要调整,将其复制到您的构建中并扩展

[buildout]
parts +=
    tika-app-download
    tika-server-download
    tika-server

[tika]
server-port = 9998
zcml =
    <configure xmlns:tika="http://namespaces.plone.org/tika">
        <tika:config path="${tika-app-download:destination}/${tika-app-download:filename}"
                     port="${tika:server-port}" />
    </configure>

[tika-app-download]
recipe = hexagonit.recipe.download
url = http://repo1.maven.org/maven2/org/apache/tika/tika-app/1.11/tika-app-1.11.jar
md5sum = c292fbb0b28fbe44f915229afb839db8
download-only = true
filename = tika-app.jar

[tika-server-download]
recipe = hexagonit.recipe.download
url = http://repo1.maven.org/maven2/org/apache/tika/tika-server/1.11/tika-server-1.11.jar
md5sum = 3c8fb21140213a2f3fbac770358034ab
download-only = true
filename = tika-server.jar

[tika-server]
recipe = collective.recipe.scriptgen
cmd = java
arguments = -jar ${tika-server-download:destination}/${tika-server-download:filename} --port ${tika:server-port} -includeStack

[instance]
zcml-additional = ${tika:zcml}
eggs += ftw.tika

如果您的部署构建基于包含在ftw-buildouts仓库中的部署构建,您可以简单地扩展tika-jaxrs-server.cfg,您就可以完成所有配置

[buildout]
extends =
    https://raw.github.com/4teamwork/ftw-buildouts/master/production.cfg
    https://raw.github.com/4teamwork/ftw-buildouts/master/zeoclients/4.cfg
    https://raw.github.com/4teamwork/ftw-buildouts/master/tika-jaxrs-server.cfg

deployment-number = 05

filestorage-parts =
    www.mywebsite.com

instance-eggs =
    mywebsite

非守护进程构建示例

请注意,以非守护进程模式运行Tika非常、非常慢!

当您不想使用Tika作为守护进程时,只需在ftw.tika ZCML配置中配置到tika-app.jar的路径,它就会在每次需要转换时启动tika-app.jar(在新的JVM中)。

以下是一个如何下载tika-app.jar并使用buildout配置ftw.tika的简短示例

[buildout]
parts +=
    tika-app

[tika-app]
recipe = hexagonit.recipe.download
url = http://repo1.maven.org/maven2/org/apache/tika/tika-app/1.11/tika-app-1.11.jar
md5sum = c292fbb0b28fbe44f915229afb839db8
download-only = true
filename = tika-app.jar

[instance]
eggs += ftw.tika
zcml-additional =
    <configure xmlns:tika="http://namespaces.plone.org/tika">
        <tika:config path="${tika-app:destination}/${tika-app:filename}" />
    </configure>

不同主机buildout示例

如果您已经有一个tika服务器(例如docker),您可以在不将其安装到plone实例中的情况下连接到它。不幸的是,如果系统遇到超时,它仍然会尝试使用本地的一个作为备份。(并在日志文件中产生错误)

[buildout]

[tika]
server-port = 9998
server-host = myhost
server-timeout = 10
zcml =
    <configure xmlns:tika="http://namespaces.plone.org/tika">
        <tika:config host="${tika:server-host}"
                     port="${tika:server-port}"
                     timeout="${tika:server-timeout}" />
    </configure>

[instance]
zcml-additional = ${tika:zcml}
eggs += ftw.tika

您有以下配置选项

  • host:tika运行的主机

  • port:tika服务器的端口

  • timeout:您可以定义服务器连接超时时间(以秒为单位)

timeout默认为10秒,可以根据您的需要配置。0表示没有超时。

在Plone中安装ftw.tika

  • 通过将ftw.tika添加到您的buildout的eggs列表中来安装ftw.tika。(上面的buildout示例包括将ftw.tika添加到eggs中)。

[instance]
eggs +=
    ftw.tika
  • 运行buildout并启动您的实例

  • 转到您的Plone站点的网站设置,并激活ftw.tika插件,或从您的包的metadata.xml中依赖ftw.tika:default配置文件。

卸载ftw.tika

ftw.tika有一个卸载配置文件。要卸载ftw.tika,使用portal_setup工具导入ftw.tika:uninstall配置文件。

配置

ftw.tika期望提供一个指向已安装的tika-app.jar的路径。这可以通过ZCML完成,因此也可以通过buildout完成。

ZCML配置

必须配置ZCML中tika-app.jar文件的路径。

如果您已经使用上面描述的提供的tika.cfg,您可以直接从buildout中使用${tika:destination}/${tika:filename}来引用下载位置。

[instance]
zcml-additional =
    <configure xmlns:tika="http://namespaces.plone.org/tika">
        <tika:config path="${tika:destination}/${tika:filename}" />
    </configure>

如果您自己安装了Tika,只需设置path="/path/to/tika"即可。

用法

要使用ftw.tika,只需向portal_transforms工具请求从ftw.tika支持的一种输入格式转换到text/plain的转换

namedfile = self.context.file
transform_tool = getToolByName(self.context, 'portal_transforms')

stream = transform_tool.convertTo(
    'text/plain',
    namedfile.data,
    mimetype=namedfile.contentType)
plain_text = stream and stream.getData() or ''

缓存

如果您想要转换的结果被缓存,您需要传递一个持久的ZODB对象给transform_tool.convertTo(),以便将缓存的转换结果存储在它上面。

例如,对于用CMFEditions版本化的NamedBlobFile版本,您可以使用namedfile.data来访问当前工作副本的数据,并将namedfile._blob作为存储缓存的对象传递(对于任何版本,namedfile始终是相同的实例,只有_blob会变化)

stream = transform_tool.convertTo(
    'text/plain',
    namedfile.data,
    mimetype=namedfile.contentType,
    object=namedfile._blob)

独立转换器

调用Tika的代码封装在其自己的类中,因此,如果出于某种原因您不想使用portal_transforms工具,您也可以通过实例化它来直接使用转换器

from ftw.tika.converter import TikaConverter

data = StringIO('foo')
converter = TikaConverter(path="/path/to/tika-app.jar")
plain_text = converter.convert(data)

《convert()` 方法接受数据字符串或文件流对象。如果没有提供 path 关键字参数,转换器会尝试从 ZCML 配置中获取 tika-app.jar 的路径。

错误日志

为了在使用 Tika JAXRS 服务器时获得更详细的错误日志,您可以使用 -includeStack 命令行选项启动它,并将环境变量 FTW_TIKA_VERBOSE_LOGGING 设置为真值。

ftw.tika 将在转换失败的情况下,额外记录 Tika 的输出(应包含 Java 栈跟踪),从而为您提供更多有关转换失败原因的信息。

变更日志

2.10.0 (2019-09-04)

  • 移植到 Plone 5.1

2.9.0 (2017-12-19)

  • 当服务器失败时删除本地回退。[jone]

2.8.0 (2017-12-18)

  • 停止支持 Plone 4.1。[jone]

2.7.0 (2016-03-15)

  • 使用 requests session。[jone]

  • 使连接超时可配置。[dready]

2.6.0 (2015-10-27)

  • 添加对 Tika 1.11 的支持。[lgraf]

2.5.0 (2015-10-27)

  • 添加对 Tika 1.10 的支持。[lgraf]

2.4.0 (2015-10-27)

  • 添加对 Tika 1.9 的支持。[lgraf]

2.3.0 (2015-10-27)

  • 在发生任何 RequestException(而不仅仅是超时)时回退到本地 Tika。[lgraf]

  • 利用 Tika JAXRS 服务器现在可以在响应体中返回 Java 栈跟踪的事实,允许 ftw.tika 在转换失败的情况下提供更好的错误日志(例如,检测到转换失败是因为文档受密码保护)。[lgraf]

  • 添加对 Tika 1.8 的支持。[lgraf]

2.2.0 (2015-10-25)

  • 添加对 Tika 1.7 的支持。[lgraf]

2.1.0 (2015-10-25)

  • 添加对 Tika 1.6 的支持。[lgraf]

2.0.1 (2014-12-08)

  • 为请求 Tika JAXRS 服务器设置默认连接超时为 10 秒。[lgraf]

2.0 (2014-11-24)

  • 切换到 Tika JAXRS 服务器组件(tika-server)。[lgraf]

1.1.2 (2014-09-01)

  • 更改 tika 源为 archive.apache.org。[lknoepfel]

  • 扩展集成测试以测试我们声称支持的所有常见格式的转换。[lgraf]

  • 更新 tika 到版本 1.5。更新受保护办公文件的检测。[lknoepfel]

1.1.1 (2014-04-01)

  • 仅对受保护的 PDF/MS Office 文档记录警告。[jone]

1.1.0 (2014-03-14)

  • 添加以守护进程运行 tika 的支持。守护进程将每个文档的转换时间从大约 1.1 秒缩短到 0.06 秒。[jone]

1.0 (2013-11-29)

  • 首次实现。[lgraf]

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

ftw.tika-2.10.0.tar.gz (175.3 kB 查看散列)

上传时间