/**
*author:ahuaxuan
*2009-10-22
*/
在上一篇文章中,我们讲到为什么要优化jackrabbit中的文档提取,同时也分析了进程模型和线程模型在分布式文档提取中的优劣。
在本文中,ahuaxuan将会介绍分布式文档提取的架构模型,以及它在整个非结构化数据库中的地位。 第二部分ahuaxuan将介绍几个用来提取文本的工具,然后将这些工具用在分布式文档提取中,以减轻jackrabbit的负担, 从这个角度看,本文是对上文的补充,这样从原因,到解决方案,以及所用到的技术工具基本上都涉及到了。
一, 分布式文档提取系统的结构模型。
首先来看一张文档提取系统部署的结构模型:
从上面一张图中可以看出每台lighttpd下面都挂着很多的flup, 之前我们讲过,文档提取系统是cpu密集型应用,而非io密集型应用,所以这里不用担心client->lighttpd->fastcgi这部分流程会出现瓶颈。
从进程模型上,我们可以得到另外一张图:
这个图表示,当一个提取任务发过来的时候, lighttpd会把请求交给flup处理,而flup会将这个任务分给一个子进程。这个子进程中有一些其他的字符串,比如catdoc, catppt等等,在文章的后半部分会介绍这些工具的作用。
而上面这张图是分布式文档提取系统在整个系统层次上的位置,其实它的主要功能就是分离计算,在下面这张图中,我们可以看到,index, extraction这样的高消耗cpu和内存的操作都从jackrabbit群组中分离出去了,将这些高消耗性能的非数值计算分离出去可以有效的提高主应用程序的稳定性和扩展性。
看过这三幅图之后,相信大家对分布式文档提取的在整套系统中的地位已经有了一定的了解。下面我们来看看一些常见的文档提取工具。
Xpdf(GNU General Public License (GPL), version2)
Xpdf是用来提取pdf中text的工具
pyPdf(modified BSD license)
pyPdf用来提取pdf中text的工具
Htmllib
用来提取html中的文本
UnRtf(GNU)
用来其他RTF文件中的文本
pyRtf(GPL & LGPL)
pyRTF目前只支持生成rtf文件
Catdoc(GNU Public License)
用来提取word2003的文本
Catppt(GNU Public License)
用来提取ppt2003中的文本
Xls2csv(GNU Public License)
将xls转成csv, 而csv其实就是纯文本,对于做索引来说csv和纯文本基本没有区别
others for 2003
还有就是一些收费的,就不帮他们做广告了
openxmllib(lxml)
GNU General Public License, Version 2.0 (GPL).
Openxmllib是用来提取office2007中word, excel, ppt中的纯文本的,不过需要注意的是它有一个缺陷,它提取出来的文本是无序的,也就是句子的顺序会被打乱,如果你只是做索引,那么这个特性对你来说没有影响,但是如果你想把提取之后的文档保存起来,以后作高亮只用,那么就必须扩展一下openxmllib,还好它比较简单,ahuxuan只用了个把小时就完成了改造。
说到这里分布式文档提取也就基本结束了,当然ahuaxuan并没有把一些细节全盘托出,因为考虑到在完成这项改造之前,同学们必须了解jackrabbit已有的文档提取逻辑,而如果已经了解了那些逻辑,那么我也没有必要将这些细节全盘托出了。阿弥陀佛。
TO BE CONTINUE
- 大小: 34.5 KB
- 大小: 19.8 KB
- 大小: 21.3 KB
分享到:
相关推荐
《深入浅出 Jackrabbit 1》 Jackrabbit 是一个开源的、实现了 Java Content Repository (JCR) API 的内容管理系统,它允许程序通过统一的方式访问、存储和管理各种数据,包括文本、图像、视频等多媒体信息。这篇...
通过使用URule,开发者能够以声明式的方式定义业务规则,无需深入编写代码,降低了业务规则变更带来的系统影响。 URule提供了多种规则设计工具,包括规则集、决策表、交叉决策表(决策矩阵)、决策树、评分卡、复杂...
在Jackrabbit项目中,"org"下的子文件夹会按照项目模块和类的功能进行划分,例如"org.apache.jackrabbit.webdav"可能是WebDAV相关的主模块,而"org.apache.jackrabbit.webdav.client"可能是客户端实现的代码,"org....
杰克兔(Jackrabbit)是Apache软件基金会的一个开源项目,它是Java Content Repository(JCR)规范的一个实现。JCR是一种标准接口,定义了如何在内容管理系统中存储、检索和管理结构化和非结构化数据。这个...
在给定的压缩包"jackrabbit-jcr-commons-2.5.0.zip"中,我们可以看到一个名为"streamresource.zip"的子文件,这通常暗示着它包含了与流资源(StreamResource)相关的代码或文档。 StreamResource是Jackrabbit框架中...
JackRabbit学习参考资料总汇涉及了深入浅出的JackRabbit内容仓库API的学习,内容涉及多个专题,整个学习资料是PDF文档格式。从标签来看,这份资料主要涉及JackRabbit以及JCR(Java Content Repository)的内容仓库...
jackrabbit-standalone-1.6.5.jar是webDav的支持jar包。
jackrabbit-webdav-2.1.0.jar 具体用法可以网上查找
jackrabbit-core-1.5.5.jar
jackrabbit-webdav-1.5.5.jar
jackrabbit 1.5.6 jar
jackrabbit-jcr-servlet-1.5.2.jar
标题中的"jackrabbit-webdav-2.7.1.zip"指的是Apache Jackrabbit的一个特定版本——2.7.1的WebDAV模块的压缩包。Apache Jackrabbit是Java内容存储库(Content Repository)的一个实现,它遵循JCR(Java Content ...
jackrabbit-jcr-server-1.5.2.jar
2. **Apache Jackrabbit**:作为JCR的实现,Jackrabbit提供了全面的功能,包括版本控制、工作流支持和强大的查询机制。它是企业级应用开发的理想选择,特别是在内容管理和文档存储方面。 3. **类路径管理**:在Java...
【标题】"jackrabbit-core-2.7.2.zip" 是一个包含Apache Jackrabbit Core库的压缩文件。Apache Jackrabbit是基于Java的内容管理系统(CMS)实现,它专注于内容存储和检索,符合Java Content Repository(JCR)API...
jackrabbit-api-1.5.0.jar