`
高军威
  • 浏览: 182154 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

tika

 
阅读更多
测试代码:
package com.tika.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.FieldType;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.MultiFieldQueryParser;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.util.Version;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.tika.Tika;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.parser.microsoft.OfficeParser;
import org.apache.tika.parser.microsoft.ooxml.OOXMLParser;
import org.apache.tika.sax.BodyContentHandler;
import org.wltea.analyzer.lucene.IKAnalyzer;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;

public class IndexUtil {
    
    public static void main(String[] args) throws ParseException, IOException, TikaException
    {
        //index();//创建索引
        //System.out.println("ids="+searche("谷歌"));//查询索引
        File f = new File("C:/高军威.xls");
        //tikaTool(f);
        System.out.println(fileToTxt(f));
    }
    
    public static String tikaTool(File f) throws IOException, TikaException {
        Tika tika = new Tika();
        Metadata metadata = new Metadata();
        String str = tika.parseToString(new FileInputStream(f),metadata); 
        for(String name:metadata.names() ) {
            System.out.println(name+":"+metadata.get(name));
        }
        return str;
    }
    
    public static String fileToTxt(File f) {
        //Parser parser = new OOXMLParser();
        //Parser parser = new PDFParser();//PDF 内容获得
        //Parser parser = new HtmlParser(); //网页信息获得
        //Parser parser = new OOXMLParser(); //2010 office用这个
        //Parser parser = new OfficeParser(); //2003以下用这个
        Parser parser = new AutoDetectParser(); //程序自动检测parser 
        InputStream is = null;
        try {
            Metadata metadata = new Metadata();
            metadata.add(Metadata.CONTENT_ENCODING, "utf-8");//html是 设置 防止乱码
            metadata.set(Metadata.RESOURCE_NAME_KEY, f.getName());
            is = new FileInputStream(f);
            //Workbook wb =new HSSFWorkbook(is);
            //System.out.println(wb.getSheetAt(0).getRow(0).getCell(0).getStringCellValue());
            ContentHandler handler = new BodyContentHandler();
            ParseContext context = new ParseContext();
            context.set(Parser.class,parser);
            parser.parse(is,handler, metadata,context);
            for(String name:metadata.names()) {
                System.out.println(name+":"+metadata.get(name));
            }
            return handler.toString(); 
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (SAXException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TikaException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                if(is!=null) is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    
    public static String searche(String searchString) throws ParseException, IOException
    {
        IKAnalyzer analyzer = new IKAnalyzer();
        String[] fields = {"content"};
        QueryParser parser = new MultiFieldQueryParser(Version.LUCENE_40 ,fields,analyzer);
        Query q2 = parser.parse(searchString);
        
        Directory dir = FSDirectory.open(new File("d:/lucene"));
        IndexReader indexReader = DirectoryReader.open(dir);
        IndexSearcher indexSearcher = new IndexSearcher(indexReader);
        ScoreDoc[] docs = indexSearcher.search(q2,6000).scoreDocs;
        String dd ="";
        if(docs.length>0){
            Document document = indexSearcher.doc(docs[0].doc);
            dd = document.get("ids");
        }
        
        return dd;
    }
    
    public static void index() {
        try {
            File f = new File("C:/ITeye.pdf");
            
            IKAnalyzer analyzer = new IKAnalyzer();
            IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_40,analyzer);
            
            FieldType ft = new FieldType();
            ft.setStored(false); // 设置是否进行存储
            ft.setIndexed(true); // 设置是否能够索引到
            ft.setTokenized(true);// 设置是否进行分词分析
            FieldType ft2 = new FieldType();
            ft2.setStored(true); // 设置是否进行存储
            ft2.setIndexed(true); // 设置是否能够索引到
            ft2.setTokenized(false);// 设置是否进行分词分析

            Directory dir = FSDirectory.open(new File("d:/lucene"));
            IndexWriter writer = new IndexWriter(dir,indexWriterConfig);
            writer.deleteAll();
            Document doc = new Document();
            Field field1 = new Field("content",new Tika().parse(f),ft2);
            Field field2 = new Field("ids","110",ft2);
            doc.add(field1);
            doc.add(field2);
            writer.addDocument(doc);
            writer.close();
        } catch (CorruptIndexException e) {
            e.printStackTrace();
        } catch (LockObtainFailedException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            System.out.println("索引创建成功!!");
        }
    }
    
}

http://yunpan.cn/Qb93GuJDtIUL5
分享到:
评论

相关推荐

    tika读取文件专用包

    Apache Tika是一款强大的内容检测和元数据提取工具,主要用于从各种文件格式中抽取文本和元数据。这个"tika读取文件专用包"显然包含了Tika项目所需要的各种jar包,这些jar包支持处理多种文件类型,如PDF、DOC、XLS、...

    tika提取文本内容

    Tika是一款强大的开源Java库,专门用于从各种文件格式中提取元数据和文本内容。它在信息技术领域,尤其是文本处理和信息检索中扮演着重要角色。Tika利用Apache的MIME类型识别系统来识别文件类型,并且能够处理大量的...

    tika-python绑定到 Apache Tika REST 服务

    tika-python 绑定到 Apache Tika REST 服务 Python binding to the Apache Tika REST services Apache Tika 库的 Python 端口,可使用 Tika REST 服务器使 Tika 可用。这使得 Apache Tika 可作为 Python 库使用,可...

    Manning.Tika.in.Action.Nov.2011.pdf

    英文Tika in Action Tika in Action to be a hands-on guide for developers working with search engines, content management systems, and other similar applications who want to exploit the information ...

    tika1.4.zip

    Apache Tika是一个强大的开源内容检测和解析库,主要用于从各种文件格式中提取元数据和文本。这个名为“tika1.4.zip”的压缩包包含了Tika的1.4版本源代码,这对于开发者来说是一个宝贵的资源,可以深入理解其内部...

    tika-core-1.22.jar_tika_

    Apache Tika本产品包括在以下位置开发的软件Apache软件基金会。版权所有1993-2010大学大气研究公司/ Unidata该软件包含源自UCAR / Unidata的NetCDF库的代码。Tika服务器组件使用CDDL许可的依赖项

    tika0.5基本jar包

    Apache Tika是一款强大的内容检测和元数据提取工具,主要用于从各种文件格式中抽取文本内容和元数据。在Java环境中,Tika提供了丰富的API,使得开发者能够轻松地处理各种类型的文件,包括但不限于文档、图片、音频和...

    apache中的tika包

    Apache Tika是一个强大的内容检测和元数据提取库,主要用于解析各种不同格式的文件。它被广泛应用于信息检索、文本挖掘和内容分析等领域。Tika与Apache Lucene项目密切相关,Lucene是一个高性能、全文本搜索库,而...

    tika+lucene完整jar包

    Tika和Lucene是两个非常重要的Java库,广泛应用于信息提取和全文检索领域。这个压缩包包含"tika-app-1.20.jar"和"lucene-7.7.1",它们分别是Apache Tika和Apache Lucene的特定版本。 Apache Tika是一个内容分析工具...

    apache-tika-0.8-src.jar

    Apache Tika是一款强大的内容检测和元数据提取工具,主要用于从各种文件类型中抽取文本和元数据。这个"apache-tika-0.8-src.jar"文件是Tika项目在0.8版本的源代码,它提供了深入理解Tika内部工作原理的机会,对于...

    tika jar包

    Tika是一个强大的Apache项目,主要用于从各种文件格式中提取元数据和内容。它是一个内容分析工具,能够识别和解析超过500种不同的文件类型,包括文档、图像、音频和视频文件。在Java环境中,Tika是通过JAR(Java ...

    apache-tika-1.0-src.zip

    Apache Tika是一款强大的内容检测和元数据提取工具,主要用于从各种类型的文件中抽取文本和元数据。Tika是Apache软件基金会的一个项目,它构建在Java之上,为开发者提供了丰富的API来解析不同格式的文档,包括但不...

    Apache Tika 1.1 所需jar包

    Apache Tika 1.1 所需要的jar包,方便不想用maven的同学. 此压缩包内是核心jar包,依据http://tika.apache.org/1.1/gettingstarted.html 中Using Tika in an Ant project章节列出的 classpath 找齐 部分版本比文章中...

    Python库 | tika-1.13.tar.gz

    **Python库tika-1.13.tar.gz详解** 在Python开发中,库扮演着至关重要的角色,它们提供了丰富的功能,让开发者能够高效地完成任务。"tika-1.13.tar.gz"是一个针对Python的库,它封装了Apache Tika,一个强大的内容...

    apache tika jar包

    Apache Tika 利用现有的解析类库,从不同格式的文档中(例如HTML, PDF, Doc),侦测和提取出元数据和结构化内容。  功能包括:  侦测文档的类型,字符编码,语言,等其他现有文档的属性。  提取结构化的文字内容。...

    跟益达学Solr5之使用Tika从PDF中提取数据导入索引

    在本篇博文中,“跟益达学Solr5之使用Tika从PDF中提取数据导入索引”,我们将探讨如何利用Apache Solr 5和Tika这两个强大的开源工具,从PDF文档中抽取数据并将其有效地导入到Solr索引库中。Apache Solr是一款功能...

    apache-tika-0.1-incubating-src.tar.gz_垂直搜索引擎

    Apache Tika是一个强大的开源工具,专门用于从各种文件格式中提取元数据和文本内容。它在信息技术领域,尤其是在搜索引擎和内容分析应用中扮演着重要角色。"apache-tika-0.1-incubating-src.tar.gz"是Apache Tika...

    tika-app-1.19.1.jar

    tika-app.1.19.1.jar,轻松提取文本正文的工具。。。。

Global site tag (gtag.js) - Google Analytics