Lucene学习之Tika提取文本信息

目前较新版的Tika(我用的是0.9)都是用Maven构建的。所以学习使用Tika最好的就是直接用Maven了,但是以我的经验,要想完整的了解Maven,并且能够编译好项目,把该依赖的包什么的全部导入,估计要花天把时间。可能有些人Maven都没听过(两个月前的我就是),那几更要花点精力了。

个人建议对Maven不熟悉的还是直接引用jar包。

首先搭建环境:

方式一:通过Maven,使用Eclipse会更方便

方式二:直接引用jar包,官网上有tika-app-0.9.jar 可以直接导入到classpath中或者导入到Eclipse工程中

然后给个例子就明白了

例子中的main函数是现实当前tika中可以解析那些格式的文件,也就是包含那些解析器parser。第二个函数给出了如何解析某种格式文件的过程。

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.Iterator;

import java.util.Set;

import org.apache.tika.config.TikaConfig;

import org.apache.tika.metadata.Metadata;

import org.apache.tika.mime.MediaType;

import org.apache.tika.parser.ParseContext;

import org.apache.tika.parser.Parser;

import org.apache.tika.parser.pdf.PDFParser;

import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.ContentHandler;



public class ShowParser

{

	public static void main(String[] args)

	{

		TikaConfig config = TikaConfig.getDefaultConfig();	

		Set<MediaType>  set= config.getParsers().keySet();

		Iterator<MediaType> it = set.iterator();

	    System.out.println("Mime type parsers:");

	    while(it.hasNext()) {

	      System.out.println("  " + it.next());

	    }

	}

	

	public static void testTiki() throws Exception

	{

		String PATH = "d:\\tempfile\\Maximum Entropy Markov Models for Information Extraction and Segmentation.pdf";

		String OUTPATH = PATH + ".txt";

		

//		Parser parser = new OOXMLParser();//解析微软格式文档

//		Parser parser = new HtmlParser();//解析html文档

		Parser parser = new PDFParser();//解析PDF文档

		

		InputStream iStream = new BufferedInputStream(new FileInputStream(new File(PATH)));//定义输入流		

//		OutputStream oStream = new BufferedOutputStream(new FileOutputStream(new File(OUTPATH)));//定义输出流

		

		//下面定义内容处理器

		//ContentHandler iHandler = new BodyContentHandler(oStream);

		//ContentHandler iHandler = new BodyContentHandler(System.out);		

		ContentHandler iHandler = new BodyContentHandler();

		Metadata meta = new Metadata();

		meta.add(Metadata.CONTENT_ENCODING, "utf-8");

		parser.parse(iStream, iHandler, meta, new ParseContext());//解析

		

		//输出解析结果,如果采用输出流的方式就直接在输出流中获得解析结果

		System.out.println(iHandler.toString());

	}

}

你可能感兴趣的:(Lucene)