`
gezhonglei2007
  • 浏览: 2117 次
文章分类
社区版块
存档分类
最新评论

Tika

 
阅读更多

1. Tika类

(1)tika类的基本用法

  • detect:获取文档格式String

detect(File | String | URL | InputStream)

  • parse:获取ReaderLuceneField取值的参数,提供Reader是用于解决字符串过大的问题)

parse(File | String | URL | InputStream);

parse(InputStream inputStream, Metadata metadata);

  • parseToString:获取全文StringsetMaxStringLength(int)是对此方法获取全文长度的限制)

parseToString(File | URL | InputStream);

parseToString(InputStream, Metadata metadata);

(2)Tika的构成

ParserAutoDetectorParser,是一个Parser的组合(CompositeParser)ParserContext只在Parser.parser()处使用。

DetectorDefaultDetector,是一个Detector的组合(CompositeDetector)

(3)TikaConfig

CompositeParser

DetectorDefaultDetector(也是CompositeDector的子类)CompositeDetector

MimeTypes:可以获取所需的Mime类型

2.文件格式诊断

只有确定了文件格式,才能找到正确的工具读取文件的内容。文件格式表示的方式是以Media typeMIME)。

(1)判断文件格式的方式:

Filename:从文件名的文件扩展名中获取文件格式。一般不可信,它可以被任意改动;或者,根本就没有扩展名。

Content type:某些与文档相关的外部信息,如HTML的请求头信息。但此方式做为文件格式的判断方式同filename一样,仍然没有保证。

Magic bytes:文件内部某些特征字符。除了找到文件格式外,还需要找到charcter encoding

(2)判断character encoding方式:

BOM(byte order mark)标记:文档最前面的几个标识字节。

字节频率:也可用于判断文件名。从文档的前几kb中查看不同字节的出现频率。

统计:最终的办法(迫不得已的办法)。

还有其它一些与文件格式的相应特征,可以用于判断。像xml,ole等格式。

综合试探法:将前面提到的各种方法进行判断。

3. Parser接口

void parse(InputStreamstream,ContentHandlerhandler,Metadatametadata,ParseContextcontext)throws IOException, SAXException, TikaException



InputStream文档输入原始 字节流。它不会在此方法中关闭InputStream

ParserContext解析处理的上下文。此参数用于用户需要定制解析过程时使用。如何控制?它内部一个Map,Map保存接口(class)与其实例的所组成的键值对。这些接口(class)只能是在Parser中用于解析文档的所需接口才会起作用。

ContentHandlerXHTML SAX事件处理器。将输入文档的结构化信息以XHTML格式写入到此Handler

Metadata文档元数据。既是输入参数,也是输出参数。作输入参数时,能够有助于解析器更好地理解文档的格式。

4.选择解析器Parser

(1)确定只用一种文档格式(以Html格式为例)

Parser parser = new HtmlParser();

parser.parse(stream, handler, metadata, context);

(2)确定使用多种文档格式中的某一格式

Map<MediaType, Parser> parsersByType = new HashMap<MediaType, Parser>();

parsersByType.put(MediaType.parse("text/html"), new HtmlParser());

parsersByType.put(MediaType.parse("application/xml"), new XMLParser());

CompositeParserparser = newCompositeParser(); //Parser的集合

parser.setParsers(parsersByType);

parser.setFallback(new TXTParser());

Metadata metadata = new Metadata();

metadata.set(Metadata.CONTENT_TYPE, "text/html");

parser.parse(stream, handler, metadata, context);

(3)不确定文档格式

Parser parser = newAutoDetectParser();

parser.parse(stream, handler, metadata, context);



5. URL、File=>InputStream

1File-->InputStream

InputStream stream = new FileInputStream(newFile(filename));

2Url --> InputStream

InputStream stream =new GZIPInputStream(newURL(address).openStream());

3File --> Url(在此主题中,一般不用

URL uri = new File(filename).toURI().toURL();

4TikaInputStream——用于简化不同格式使用的多种嵌套流。

获取TikaInputStream:重载的get方法

[static]get(InputStream) //一般用于parser内部,将标准的InputStream转换成TikaInputStream

[static]get(byte[], Metadata?)

[static] get(File, Metadata?)

[static] get(URI, Metadata?)

[static] get(URL, Metadata?)

[static] get(Blob, Metadata?)

6. Tika的语言诊断方法

tika的语言诊断方法,不支持中文。它是以不同拉丁语言中字母出现频率的差异来判断。所以,当你的样本中的文字太小,语言判断失误率超高。




7.ContentHandler

(1)默认使用BodyContentHandler

(2)常用的Contenthandler

BodyContentHandler:用于处理XHTML输出内容的<body>部分,将它写入Writer

OutputStreamBuffer中,并将它重定向其它ContentHandler

LinkContentHandler:处理XHTML输出的所有<a href="……">

TeeContentHandler:能用于多个工具并行处理parser的输出。

ProfilingHandler:用于语言的诊断。

[例如]

LinkContentHandler linkCollector = new LinkContentHandler();

OutputStream output = new FileOutputStream(new File(filename));

ContentHandler handler = new TeeContentHandler(new BodyContentHandler(output),

linkCollector); //linkCollector用来收集文档中所有的链接,可用于爬虫。

parser.parse(stream, handler, metadata, context);

8.元数据的获取

(1)元数据是的有用的文档内容总结信息。元数据标准分为两种:一般元数据标准(general metadata standars)和特定内容元数据标准(content-special metadata standars)

(2)general metadata适用于所有已知的文件类型。

(3)content-special metadata标准是通过与特定的文件类型相关的属性、关系定义的。




(4)Metadata是多种元数据接口的实现类,以静态成员变量的形式包含以上所有元数据标准的属性名。即使用户没有填写元数据,某些文档也会存储其默认的元数据;但实际上我们需要是用户键入的元信息,而不需要这些无意义的默认值。因此,Parser在解析文档获取Metadata时,已经做了相应的处理,不保留这些默认信息的元数据,而只存用户键入的元数据信息。

9.另外:

(1)Tika可以读取出java编译后的class文件的内容,但是内容与原Java文件有差别,如方法只有声明没有实现、没有import语句,格式化后用专门的方法static void <clinit>()作为静态初始化……等。

(2)Tika读取的jar文件,读取class文件,某些内容出来时是乱码(问号)。


参考资料:《Tika in action》

分享到:
评论

相关推荐

    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 库使用,可...

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

    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 ...

    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