`
Fly_m
  • 浏览: 259682 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用Tika进行非结构化内容的读写-1

    博客分类:
  • java
阅读更多

    前缀时间在使用Jackrabbit作非结构化内容的存取,当问到当存取一个word文档时,jackrabbit能不能对word文档里面的内容作全文检索呢。回去查了一下相关的文档,是可以的,而且用的是一个叫Tika的工具。

    Tika原先是一个Lucene的子项目,即对内容作元数据抽取用。更多的时候,是对一个平时所用的文档类数据作信息的进一步读取,这些信息是隐藏在文档本身的。这就要求有一个统一的工具来做这些事情,而Tika就提供了一个统一的调用接口来完成这些工作。

    Tika通过一个parser和一个contentHandler来进行文档分析和处理,其中parser负责解析具体的文档,当解析到需要进行处理的时候,调用contentHandler进行解析内容的处理。contentHandler(org.xml.sax)是一个用于处理sax解析的程序接口,当parser解析到某些内容时(如节点之间的信息,以及节点本身的信息)时,便会根据需要去调用contentHandler的相关处理方法。即一个负责解析,一个负责处理,两者相互协作,最终将信息通过一定的手段返回回来。

 

    Parser是一个接口,对不同的文档进行处理时,需要寻找具体的解析器来实现具体的解析工作。Tika通过MimeType来实现对一个文档的具体识别工作,即识别出一个文档是什么样的类型,然后再根据类型寻找相应的parser。最后调用具体实现的parser来完成parse工作。

    ContentHandler也是一个接口,对不同的信息进行处理时,需要自己调用具体的信息处理类。一般来说,如果只关心文档内的内容(即有信息的地方),可以使用WriteOutContentHandler。这个handler将所以被解析到的信息通过一个output或write输出到调用者提供的输出流中,这样最终可以读取这个writer中的数据。例如,ParseUtils中的getStringContent(工具方法),即通过WriterOutContentHandler进行信息的读取,最终返回这些信息。

    除这些信息之外,还有一些信息需要在处理的过程中被解析和保存,比如一个文档的标题,作者以及contentType等。在tika中,这些信息被保存在一个叫Metadata的对象中。metadata保存了很多与具体文档相关的值,它以一个map的形式,保存相应的元数据信息值。如对于word,它会保存其中的Author,Keywords这些信息。这些信息对于用一些关键信息进行文档检索非常有用。

 

    看整个处理流程,可以用下面的图来表示:

tika处理流程

     在具体实现中,用到了大量的装饰器,将一个parser包装在另一个parser中,同时也是将一个contentHandler包装在另一个handler中,所以在进行程序定位时很麻烦。但简单点来说,还是将底层进行的parser进行上层包装来进行高级的信息解析,最后返回相应的信息。具体的代码逻辑实现,参考使用Tika进行非结构化内容的读写-2.

  • 大小: 53.7 KB
分享到:
评论

相关推荐

    tika-core-1.22.jar_tika_

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

    tika读取文件专用包

    - 引入Tika所需的jar包,包括`tika-core`和特定格式的解析器,如`tika-parsers`,这个压缩包中的`mapper-attachments`可能就是针对附件处理的模块。 - 创建`TikaConfig`实例,加载配置信息。 - 创建`Parser`实例...

    tika-app-1.24.1.jar

    检测并提取来自上千种不同文件类型(如...除了用gui进行操作外,还可以在命令行界面中使用java -jar tika-app-1.15.jar --text .doc命令进行文本格式的转换,text为要转变的格式,.doc为你想要转变的文本的物理位置。

    tika-app-1.19.1.jar

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

    tika jar包

    1. **tika-core-1.5.jar**: 这是Tika的核心库,包含了处理元数据、内容提取、解析器接口等基础功能。它提供了API,使得开发者可以方便地与Tika交互,例如,通过`org.apache.tika.Tika`类来获取文件的基本信息。这...

    tika-app-1.16.jar

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

    apache-tika-1.0-src.zip

    在开发搜索引擎时,Tika的文本抽取能力非常关键,因为它可以从非结构化的文档中提取出文本内容,这对于建立索引和搜索至关重要。此外,如果你想要扩展Tika,添加对新文件格式的支持,源代码包是不可或缺的资源。 总...

    apache-tika-1.2-src.zip_ tika-app-1.2_java poi word_tika-app-1.2

    在"apache-tika-1.2-src.zip"这个压缩包中,你将找到Tika的源代码,这对于理解其工作原理和进行自定义扩展非常有帮助。"tika-app-1.2"是Tika的可执行JAR文件,它集成了所有必需的依赖项,可以直接运行,用于处理和...

    apache tika jar包

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

    tika提取文本内容

    1. **MIME类型识别**:Tika通过使用Apache Tika-Mime库来识别文件的MIME类型,这是确定如何解析文件的关键步骤。MIME类型是一种标准,用来定义文件在网络上传输时的数据类型和格式。 2. **解析器架构**:Tika的解析...

    tika-python绑定到 Apache Tika REST 服务

    要使用这个库,您需要在系统上安装 Java 7+,因为 tika-python 在后台启动 Tika REST 服务器。- 特征 解析器接口(在 REST 之前向后兼容) 解析器接口使用 /rmeta 接口提取文本和元数据 或者,您可以将 Tika 服务器 ...

    tika-java7-1.5.zip

    标题 "tika-java7-1.5.zip" 暗示了这是一个与Apache Tika相关的软件包,且是针对Java 7版本优化的。Apache Tika是一个内容分析工具,主要用于从各种类型的文件中提取元数据和结构化文本。Tika能够处理大量不同的文件...

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

    在使用"apache-tika-0.1-incubating"这个源码包时,开发者可以了解到Tika最初的设计思想和实现方式,以及如何逐步发展成为现在这样一个成熟且广泛使用的工具。通过阅读源码,开发者可以学习到如何处理文件解析、内容...

    apache-tika-0.8-src.jar

    这个"apache-tika-0.8-src.jar"文件是Tika项目在0.8版本的源代码,它提供了深入理解Tika内部工作原理的机会,对于开发者来说是一个宝贵的资源。 Tika的主要功能: 1. **文件类型检测(MIME Type Detection)**:...

    tika 1.0最新版本

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

    tika-example:使用Apache Tika进行文件类型检测

    "tika-example-master"这个压缩包可能包含了一个完整的示例项目,演示了如何在实际应用中使用Tika进行文件类型的检测和其他相关操作。解压并研究这个项目源码,将有助于你更深入地理解和应用Apache Tika的功能。 ...

    tika-app-1.7.jar

    tika-app-1.7.jar

    tika-app-1.8

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

    springboot+es实现对word,pdf,txt等文件的非结构化数据全文内容检索

    在非结构化数据检索场景下,Elasticsearch能通过分词器对文本进行分析,建立倒排索引,从而实现快速全文搜索。 Spring Boot是基于Spring框架的轻量级开发工具,它简化了初始化、配置和运行过程。集成Elasticsearch...

Global site tag (gtag.js) - Google Analytics