深入浅出jackrabbit之十五 文档提取优化2.docx
*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已有的文档提取逻辑,而如果已经了解了那些逻辑,那么我也没有必要将这些细节全盘托出了。阿弥陀佛。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Hbase shell 常用命令1
下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', '列名称1','列名称2','列名称N' 添加记录 put '表名称', '行名称', '列名称:', '值' 查看记录 get '表名称', '行名称' 查看表中的记录总数 count '表名称' 删除记录 delete '表名' ,'行名称' , '列名称' 删除一张表 先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称' 查看所有记录 scan "表名称" 查看某个表某个列中所有数据 scan "表名称" , ['列名称:'] 更新记录 就是重写一遍进行覆盖 下面是一些常见命令的说明,在hbaseshell中输入help的帮助信息,在本文中,我们先介绍前3个,后面2个,将在下一篇博文中介绍。 点击(此处)折叠或打开 输入help,查看命令帮助 hbase(main):001:0> help HBase Shell, version 1.2.0, r25b281972d...
- 下一篇
Linux du命令
同df命令一样,du命令也是Linux中磁盘管理常用的三个命令之一,它的主要作用就是对指定文件或目录磁盘使用的空间的查看,如果没有指定,则默认为对当前路径磁盘使用的空间的查看。这一点还是同df命令有一定区别的。 作用:对指定文件或目录磁盘使用的空间的查看 语法 du [-ahsSkm] 文件或目录名称 示例 当前路径为/opt/storm/examples 执行du命令 du命令显示的是当前路径下个目录磁盘使用情况,.表示当前路径占用磁盘总大小。 参数解释: -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。 -h :以人们较易读的容量格式 (G/M) 显示; -s :列出总量而已,而不列出每个各别的目录占用容量; -S :不包括子目录下的总计,与 -s 有点差别。 -k :以 KBytes 列出容量显示; -m :以 MBytes 列出容量显示。 示例 du -a du -h du -sh ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS关闭SELinux安全模块
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Hadoop3单机部署,实现最简伪集群