Lucene对pdf、word、html等文件的处理
来源:互联网 发布:王者荣耀 世界观 知乎 编辑:程序博客网 时间:2024/04/29 14:33
Lucene在创建索引的过程中,原生只支持纯文本格式(但是你扫描的过程中,如果你不设定文件格式,会发现不管啥文件,他都会去啃两口)
用到的库:PDFBox / XPdf
PDFBox是一个在java环境中对pdf文件进行解析处理的开源软件,同时它也提供了一个丰富的类库支持对pdf文件的操作。PDFBox为使 用Lucene的开发者专门提供了LucenePDFDocument类,它的static方法getDocument(ps:该方法被重载三次)能够直 接返回一个Lucene的Document类型结果。所以在为一个pdf文件(例子中为File类型实例pdfFile)创建索引时只要写下如下语句就可 以了:
Document document = LucenePDFDocument.getDocument(file);
该方法传入参数file是一个pdf文件,返回一个lucene的document对象。
PDFBox 提供的下载包是0.7.3版本,这个版本里面有上面那个函数的所在的jar。最新的pdfbox在apache的官网下载,里面已经没有上面所要用到的jar包。
=====WORD
用到的库:tm-extractors-0.4
主要用到了WordExtractor类的成员方法extractor,该方法用来抽取word文件的内容,并返回。
需要自己构建getDocument函数,来构建lucene的document对象。
参考如下代码:
public class LuceneDOCDocument { public static Document getDocument(File doc) { String docPath = doc.getAbsolutePath(); String title = doc.getName(); InputStream inputStream = null ; Reader contents = null ; Document document = new Document(); try { inputStream = new FileInputStream(doc); } catch (FileNotFoundException e) { e.printStackTrace(); } WordExtractor extractor = new WordExtractor(); try { contents = new StringReader(extractor.extractText(inputStream)); } catch (Exception e) { e.printStackTrace(); } document.add( new Field( " title " , title, Field.Store.YES, Field.Index.TOKENIZED)); document.add( new Field( " contents " , contents)); document.add( new Field( " path " , docPath, Field.Store.YES, Field.Index.NO)); return document; } }
=====HMTL/XML等文件
HTML,XML等文件虽然是纯文本形式存在,但是由于其内部是有一些标签的,而lucene在读取这些文件的时候,会将标签也当做内容读取,所以在处理这些文件的时候需要对其进行一个去标签操作。
用到的库:htmlparser
参考如下代码:
public class LuceneHTMLDocument { public static Document getDocument(File html) { String htmlPath = html.getAbsolutePath(); String text = "" ; Parser parser = null ; try { parser = new Parser(htmlPath); } catch (ParserException e) { e.printStackTrace(); } try { parser.setEncoding( " UTF-8 " ); } catch (ParserException e) { e.printStackTrace(); } HtmlPage visitor = new HtmlPage(parser); try { parser.visitAllNodesWith(visitor); } catch (ParserException e) { e.printStackTrace(); } NodeList nodes = visitor.getBody(); int size = nodes.size(); for ( int i = 0 ;i < size;i ++ ) { Node node = nodes.elementAt(i); text += node.toPlainTextString(); } String title = visitor.getTitle(); Reader contents = new StringReader (text); Document document = new Document(); document.add( new Field( " title " , title, Field.Store.YES, Field.Index.TOKENIZED)); document.add( new Field( " contents " , contents)); document.add( new Field( " path " , htmlPath, Field.Store.YES, Field.Index.NO)); return document; } }
小工具:索引文件查看器Luke。
0 0
- Lucene对pdf、word、html等文件的处理
- Lucene索引前对doc pdf html文件的预处理
- Lucene索引前对doc pdf html文件的预处理
- lucene索引word/pdf/html/txt文件及检索(搜索引擎)
- lucene索引word/pdf/html/txt文件及检索(搜索引擎)
- 将PDF 转化 为 Word,Html 等文件
- java实现爬虫技术,读取txt,word,excel,ppt,pdf,html等格式的文件
- Lucene检索WORD等文件
- lucene.net,包括对htm,word,doc,pdf,等等式进行parse解析,取得内容
- C#对word、excel、pdf等格式文件的操作总结
- C#对word、excel、pdf等格式文件的操作总结
- java提出word和pdf等文件的信息
- 办公文件的转换-word/图片/pdf 等转换
- 下载文件如word,pdf文件等
- lucene 索引非txt文档 (pdf word rtf html xml)
- lucene 索引非txt文档 (pdf word rtf html xml)
- lucene 索引非txt文档 (pdf word rtf html xml)
- lucene 索引非txt文档 (pdf word rtf html xml)
- Ubuntu12.10下安装Synaptic新立得
- 自定义cell,加载包含类得cell
- PAT 1008. Elevator (20)
- Flask + uWSGI 部署
- jquery源码分析博客
- Lucene对pdf、word、html等文件的处理
- 日语学习之沪江整理 20141009
- Cocos2dx3.2 Android开发环境配置详细教程
- 谁获得了最高奖学金(南阳60)
- 在线教育参考产品--语言学习网站
- 让Android Support V4中的SwipeRefreshLayout支持上拉加载更多
- 《疯狂JAVA讲义2》笔记:第1章 Java语言概述
- 【全排列】亚马逊在线测试-找下一个回文字符串
- Authentic Louis Vuitton Discount UPLHX