精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-24
各位好:在javaeye好长时间了,一直在各大网站学习各位的经验很感谢各位,目前我遇到一个关于lucene索引的问题,在国内和国外的网站上找了很久也没找到一个比较满意的解决办法,所以在这里想问问大家,希望有过这方面的经验的朋友给些帮助,最好能有些比较好的代码或可行性建议,我的代码大概如下 import com.messagesolution.message.viewer.util.HtmlDocument; import java.io.*;
public static boolean convertPDF(String fromfile, String tofile) try { return true; public static boolean convertDOC(String fromfile, String tofile) try //now write this string to a file return true; public static boolean convertHTML(String fromfile, String tofile) return true; public static boolean convertPPT(String fromfile, String tofile) public static boolean convertXLS(String fromfile, String tofile) try int numSheets = wb.getNumberOfSheets(); String s = sb.toString(); return true;
public static void main(String[] args) long start = System.currentTimeMillis(); end = System.currentTimeMillis(); } main方法主要是输入三个参数 第一个是转换文档的格式,第二个是文档存放的路径,第三个是要输出的文档存放的位置, 然后对输出的文档进行索引, 平均每个文档在1M-5M之间, 问题: 在进行文档转换的时候pdf,word,xls 都非常慢,本来想写一个threadpool来进行文档的转换,可是测试数据表明多线程转换还不如单线程的快,而且也容易出现outofmemory, 后来我又想了一个办法,把大的pdf ,word xls 进行切分,可是写了一个java的切分成小文档的方法,只能对txt文档进行转换,word 和pdf 因为里面有很多格式和样式的东西都是二进制的,在合成一个大的文档就合并不回去了(c++ 或.net 到时有办法切分),所以希望有过索引大量pdf ,word,xls 文档的朋友给写帮助,能快速处理, 目前的数据量大概是1T(大概是100G),服务器配置大概是4个cpu ,4G内存,虚拟机开到了1.2个G用的是jdk1.4在大也开不了了,谢谢帮助 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-07-24
你先用Profier这种东东看一下大致的资源开销分布
是内存不足,频繁回收,或者是解析文件太慢 又或者是因为merge的次数太频繁 你还可以尝试一下将文件读入内存,使用RamDirectory来进行索引,再将结果写入FSDirectory,性能肯定会高很多 |
|
返回顶楼 | |
发表时间:2007-07-24
感谢你的帮助, 使用RamDirectory来进行索引,再将结果写入FSDirectory,性能肯定会高很多,我目前已经是在lucene indexwriter 的时候用了,应该不是这的问题,merge的基数大概是2000左右,所以问题也不是这里,感觉是开源的jar在处理pdf word ,xls等文件的时候转换的太慢,profier我会试试看,不过其他服务程序还是可以运行的不错的,所以内存上感觉问题也不大, |
|
返回顶楼 | |
发表时间:2007-07-24
POI处理Excel的速度不快
你最好用其它的方法 如果你是在Windows下 而且速度要求比较高 可以考虑用Jacob将Excel先转成Html 然后做索引 PDF和Word也是这样处理 特别是PDF,如果用iText处理,非常的慢 我测试过iText输出PDF,400页的文件,约400M内存,而且和用WPS输出PDF的性能有2-3个数量级的差距 |
|
返回顶楼 | |
发表时间:2007-07-30
我遇到和你一样的问题,,期待好的解决方案。
|
|
返回顶楼 | |
发表时间:2007-07-31
我的解决了,就是用我io 效率那个blog的办法,原来是一个10word 文档要16秒左右,现在只需要二秒就够了
|
|
返回顶楼 | |
发表时间:2008-07-13
roger51 写道
各位好:在javaeye好长时间了,一直在各大网站学习各位的经验很感谢各位,目前我遇到一个关于lucene索引的问题,在国内和国外的网站上找了很久也没找到一个比较满意的解决办法,所以在这里想问问大家,希望有过这方面的经验的朋友给些帮助,最好能有些比较好的代码或可行性建议,我的代码大概如下 import com.messagesolution.message.viewer.util.HtmlDocument; import java.io.*;
public static boolean convertPDF(String fromfile, String tofile) try { return true; public static boolean convertDOC(String fromfile, String tofile) try //now write this string to a file return true; public static boolean convertHTML(String fromfile, String tofile) return true; public static boolean convertPPT(String fromfile, String tofile) public static boolean convertXLS(String fromfile, String tofile) try int numSheets = wb.getNumberOfSheets(); String s = sb.toString(); return true;
public static void main(String[] args) long start = System.currentTimeMillis(); end = System.currentTimeMillis(); } main方法主要是输入三个参数 第一个是转换文档的格式,第二个是文档存放的路径,第三个是要输出的文档存放的位置, 然后对输出的文档进行索引, 平均每个文档在1M-5M之间, 问题: 在进行文档转换的时候pdf,word,xls 都非常慢,本来想写一个threadpool来进行文档的转换,可是测试数据表明多线程转换还不如单线程的快,而且也容易出现outofmemory, 后来我又想了一个办法,把大的pdf ,word xls 进行切分,可是写了一个java的切分成小文档的方法,只能对txt文档进行转换,word 和pdf 因为里面有很多格式和样式的东西都是二进制的,在合成一个大的文档就合并不回去了(c++ 或.net 到时有办法切分),所以希望有过索引大量pdf ,word,xls 文档的朋友给写帮助,能快速处理, 目前的数据量大概是1T(大概是100G),服务器配置大概是4个cpu ,4G内存,虚拟机开到了1.2个G用的是jdk1.4在大也开不了了,谢谢帮助
|
|
返回顶楼 | |
浏览 7082 次