`
高军威
  • 浏览: 175619 次
  • 性别: 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-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 库使用,可...

    tika-core-1.22.jar_tika_

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

    tika读取文件专用包

    tika读取文件所用jar包,包含各种文件类型所用jar

    apache tika jar包

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

    tika 1.0最新版本

    tika最新版本,tika-app-1.0.jar,提取office和pdf文档内容

    tika_1.10_API (CHM格式)

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

    tika+lucene完整jar包

    tika+lucene完整jar包:tika-app-1.20.jar、lucene-7.7.1

    tika提取文本内容

    tika 工程 简便获取文本的java工具

    tika-0.5 jar包

    下载Apache的tika项目时发现网上没有现成的tika的jar文件,只能自己编译一个了。可能大家也会遇到这个问题。所以将编译好的jar包传上来于大家分享。其中包含了tika-app-0.5.jar,tika-core-0.5.jar,tika-parsers-...

    tika.jar包

    可直接通过java -jar tika.jar运行该jar包 查看我们解析得到文本的结果

    tika0.5基本jar包

    使用tika0.5提取内容的基本的jar包。

    apache中的tika包

    lucene's tika可以直接去网站下载噢。

    Tika.in.Action.pdf

    Tika.in.Action.pdf

    tika-app-1.16.jar

    tika-app-1.16,java文档内容提取工具jar包,可提取office文档内容

    tika-app-1.8

    最新tika1.8,可以帮助lucene的开发,提取文档的内容

    apache-tika-0.8-src.jar

    apache-tika-0.8-src.jar 源码

    apache-tika-1.0-src.zip

    apache-tika-1.0-src.zip,tika 1.0版本 源码包,看孔浩的搜索引擎视频用到的。

    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 找齐 部分版本比文章中...

    Tika1.0jar包和源码

    Tika1.0jar包和源码 Lucene从各种文件类型中提取文字信息的工具

    tika1.7jar包(app、core、parsers)

    tika1.7jar包(app、core、parsers)

Global site tag (gtag.js) - Google Analytics