Tika通用的内容分析工具
来源:互联网 发布:spark源码讲解 许鹏 编辑:程序博客网 时间:2024/06/11 02:27
上一篇博客说讲到使用SVNKit来操作svn上的数据,其中在实例DisplayFile中,从svn上获得了文本文件,并打印了文件的内容,我们解析文本文件的方式是直接是有流的方式读取,但是不是所有的文件都能使用流的方式读取的,比如office系列的文件通常使用POI来读取,PDF格式的文件可以使用Pdfbox来读取,但是要知道文件的格式还有好多种,比如,xml,图片,音频,zip,java类等等,而且这些都一个项目中最常用的文件类型,那我们如何读取这些文件呢?我们学会了使用POI还要学会使用Pdfbox等一些列的文件解析工具吗?答案一定是否定的,因为我们有了Tika。
什么是Tika?
Tika是一个内容抽取的工具集合(atoolkitfor text extracting)。它集成了POI, Pdfbox 并且为文本抽取工作提供了一个统一的界面。其次,Tika也提供了便利的扩展API,用来丰富其对第三方文件格式的支持。
在当前的0.2-SNAPSHOT版本中, Tika提供了对如下文件格式的支持:
- PDF -通过Pdfbox
- MS-* -通过POI
- HTML -使用nekohtml将不规范的html整理成为xhtml
- OpenOffice格式 - Tika提供
- Archive - zip, tar, gzip, bzip等
- RTF - Tika提供
- Java class - Class解析由ASM完成
- Image -只支持图像的元数据抽取
- XML
- Tika的API十分便捷,核心是Parser interface,其中定义了一个parse方法:
public voidparse(InputStream stream, ContentHandlerhandler, Metadata metadata)
用stream参数传递需要解析的文件流,文本内容会被传入handler,而元数据会更新至metadata。
可以使用Tika的ParserUtils工具来根据文件的mime-type来得到一个适当的Parser来进行解析工作。或者Tika还提供了一个AutoDetectParser根据不同的二进制文件的特殊格式 (比如说Magic Code),来寻找适合的Parser。
提示:主要tika-xx.jar,解析相应的文件必须有相应的jar.例如:excel文件必须用到poi-xx.jar
importorg.apache.tika.metadata.Metadata; importorg.apache.tika.parser.AutoDetectParser; importorg.apache.tika.parser.ParseContext; importorg.apache.tika.parser.Parser; importorg.apache.tika.sax.BodyContentHandler; importorg.xml.sax.ContentHandler; import java.io.*; public class TiKaUtil{ public static String parseFile(Filefile){ Parser parser = newAutoDetectParser(); InputStream input = null; try{ Metadata metadata = newMetadata(); metadata.set(Metadata.CONTENT_ENCODING, "utf-8"); metadata.set(Metadata.RESOURCE_NAME_KEY, file.getName()); input = newFileInputStream(file); ContentHandler handler = newBodyContentHandler();//当文件大于100000时,newBodyContentHandler(1024*1024*10); ParseContext context = newParseContext(); context.set(Parser.class,parser); parser.parse(input,handler,metadata,context); for(String name:metadata.names()){ System.out.println(name+":"+metadata.get(name)); } System.out.println(handler.toString()); return handler.toString(); }catch (Exception e){ e.printStackTrace(); }finally { try { if(input!=null)input.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } public static void main(Stringargt0[])throws Exception{ parseFile(new File("D:\\svntest\\svnkittest\\branches\\doImport.txt")); }
总结:
通过SVNKit+Tika+lucene你是否可以想象其实这就是一个confluence。其实这是一个很有意思的事。
- Apache Tika:通用的内容分析工具
- Apache Tika:通用的内容分析工具
- Apache Tika:通用的内容分析工具
- Tika通用的内容分析工具
- Apache Lucene Tika 文件内容提取工具
- Apache Lucene Tika 文件内容提取工具
- tika读取文件内容
- tika读取文件内容
- 文件内容读取--Tika
- 可执行文件的内容分析工具
- 使用Tika进行非结构化内容的读写-1
- (1)Tika获取文件的类型、编码、文本内容
- lucene中好用的两个工具luke和Tika
- Tika文本提取工具的使用(word、pdf、excel等)
- Tika文本提取工具的使用(word、pdf、excel等)
- Tika解析非结构文档处理过程的简单分析
- Tika解析非结构文档处理过程的简单分析
- Tika解析非结构文档处理过程的简单分析
- Lucene(三)评分机制
- scrapy的使用,修正《Python下用Scrapy和MongoDB构建爬虫系统》
- 黑马程序员__数组
- PADS学习之路03-PADS LOGIC下拉菜单File
- spring4+springmvc4+hibernate4异常
- Tika通用的内容分析工具
- 使用Javascript进行Mongodb数据库的远程操作
- 非严格主对角矩阵的转化(matlab实现)
- 南阳acm108士兵杀敌(一)(线段树)
- 接口回调,以Android的事件监听为例
- Scala Learning(4): Currying柯里化的推演
- jquery 根据name属性查找元素
- 关于支付宝的注意事项
- 解决重邮无法访问蓝鸽听力以及无法访问部分内网的解决方法