Lucene笔记32-Lucene的扩展-Tika的第二种使用方式

一、Tika的第二种使用方式

第二种使用方式更加的简单,官方文档说,相比于第一种,效率会有降低,下面来看代码。

// 文档上说效率没有前一种方式高
public String fileToTextEasy(File file) {
    Tika tika = new Tika();
    Metadata metadata = new Metadata();
    // 可以自定义metadata的值,同理,可以设置很多的值,这里就不演示了
    // 对于Tika已经设置过的值,设置是无效的,只能对没有设置过的值进行设置
    metadata.set(Metadata.AUTHOR, "王劭阳");
    try {
        String text;
        // 使用这何种方式,因为没有传入metadata,所以输出的内容中只有自己设置的Author
        text = tika.parseToString(file);
        // 传入metadata参数的方式,因为传入了metadata参数,所以输出的内容有tika获取到的和自己设置的
        // text = tika.parseToString(new FileInputStream(file), metadata);
        for (String name : metadata.names()) {
            System.out.println(name + "-->" + metadata.get(name));
        }
        return text;
    } catch (IOException e) {
        e.printStackTrace();
    } catch (TikaException e) {
        e.printStackTrace();
    }
    return null;
}

二、对创建索引进行改进

这里只需要将Field的参数进行变化一下就可以了,详情看代码,为了和之前作对比,使用Luke来查看下最终生成的索引,这里使用的分词器不好的原因,中文分词被分成了一个字一个字的,换成IK分词器之后,就正常了。

public void indexWithTika() {
    try {
        Directory directory = FSDirectory.open(new File("E:\\Lucene\\IndexLibrary"));
        IndexWriter indexWriter = new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_35, new MMSegAnalyzer()));
        Document document = new Document();
        document.add(new Field("content", new Tika().parse(file)));
        indexWriter.addDocument(document);
        indexWriter.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

MMSegAnalyzer分词效果:

IKAnalyzer分词效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值