使用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 栈跟踪),从而为您提供更多有关转换失败原因的信息。
链接
版权
本软件包版权由 4teamwork 所有。
ftw.tika 基于 GNU 通用公共许可证,版本 2。
变更日志
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]