lucene 索引非txt文档 (pdf word rtf html xml)
2016-04-06 13:51
686 查看
搜索要首先要索引,索引的话最简单的方式是索引txt文件,上文已经介绍了。这里介绍一下一些其它格式的文档的索引,例如ms word ,pdf ,rtf等。
索引方法:就是先把各种文档先转化成纯文本再索引,所以关键在转换上。幸好java世界中有太多的开源工程,很多都可以拿来直接使用。下边分别介绍一下:
写在所有之前:下边所有介绍中的is参数都是inputStream,就是被索引的文件。
word文档:
把word文档转换成纯文本的开源工程可以使用:POI 或者TextMining
POI的使用方法:
TextMining的使用方法更简单:
PDF文档:
转换PDF文档可以使用的类库是PDFbox
RTF文档:
rtf的转换则在javax中就有
这样就可以索引各种格式的文本了
html和xml的处理方法同样
不同的是html的可用类库是:JTidy
Xml可用的类库是SAX和digester
索引方法:就是先把各种文档先转化成纯文本再索引,所以关键在转换上。幸好java世界中有太多的开源工程,很多都可以拿来直接使用。下边分别介绍一下:
写在所有之前:下边所有介绍中的is参数都是inputStream,就是被索引的文件。
word文档:
把word文档转换成纯文本的开源工程可以使用:POI 或者TextMining
POI的使用方法:
WordDocument wd = new WordDocument(is); StringWriter docTextWriter = new StringWriter(); wd.writeAllText(new PrintWriter(docTextWriter)); docTextWriter.close(); bodyText = docTextWriter.toString();
TextMining的使用方法更简单:
bodyText = new WordExtractor().extractText(is);
PDF文档:
转换PDF文档可以使用的类库是PDFbox
COSDocument cosDoc = null; PDFParser parser = new PDFParser(is); parser.parse(); cosDoc = parser.getDocument() if (cosDoc.isEncrypted()) { DecryptDocument decryptor = new DecryptDocument(cosDoc); decryptor.decryptDocument(password); } PDFTextStripper stripper = new PDFTextStripper(); String docText = stripper.getText(new PDDocument(cosDoc));
RTF文档:
rtf的转换则在javax中就有
DefaultStyledDocument styledDoc = new DefaultStyledDocument(); new RTFEditorKit().read(is, styledDoc, 0); String bodyText = styledDoc.getText(0, styledDoc.getLength());
这样就可以索引各种格式的文本了
html和xml的处理方法同样
不同的是html的可用类库是:JTidy
Xml可用的类库是SAX和digester
相关文章推荐
- C#生成Word文档代码示例
- 如何使用C#从word文档中提取图片
- jQuery窗口、文档、网页各种高度的精确理解
- 比较全的一个C#操作word文档示例
- C#编程实现Excel文档中搜索文本内容的方法及思路
- java Lucene 中自定义排序的实现
- php文档工具PHP Documentor安装与使用方法
- MongoDB修改、删除文档的域属性实例
- 使用Java的Lucene搜索工具对检索结果进行分组和分页
- 跟老齐学Python之Python文档
- Python文档生成工具pydoc使用介绍
- 关于lucene搜索时排序的问题
- 从零开始使用Hubbledotnet进行全文搜索-前言
- 打造自己的搜索引擎
- [网络开发]RakNet文档翻译(3)——Creating Packets
- Lucene整合"庖丁解牛"中文分词包
- JAVA lucene全文检索工具包的理解与使用 分享
- Lucene:基于Java的全文检索引擎简介
- 二、家庭办公环境的Postfix安装技巧和提示
- 使用Lucene 3.3.0的结构遍历TokenStream的内容.