1.6.3 Uploading Data with Solr Cell using Apache Tika

1. Uploading Data with Solr Cell using Apache Tika

  solr使用Apache Tika工程的代码提供了一个框架,用于合并所有不同格式的文件解析器为solr自己的解析器,如Apache PDFBox,Apache POI.通过这个框架,solr使用ExtractingRequestHandler来上传二进制文件.

  如果想要solr使用你自己的ContentHandler,你需要继承ExtractingRequestHandler,重写createFactory()方法.这个方法主要用于构建SolrContentHandler和Tika互动.并允许字面值来覆盖Tika解析的值.设置参数literalsOverride,默认为true.为false的话,在Tika解析值的后面添加字面值.

  关于Solr 抽取请求的更多信息,参考 https://wiki.apache.org/solr/ExtractingRequestHandler

1.1 key的概念

  在使用Solr Cell时,了解一下信息对你是很有帮助的:

  • solr将会自动尝试确定文档类型(word,pdf,html),抽取恰当的内容.如果你想,你可以使用steam.type为tika指定一个明确的MIME类型.
  • Tika工作 生成一个XHTML流提供给SAX ContentHandler.SAX是一个许多不同XML解析器实现的通用接口.更多信息参考  .  http://www.saxproject.org/quickstart.html
  • solr然后响应Tika的SAX事件,创建字段到索引中.
  • solr生成元数据如title,subject,Author.参考 http://tika.apache.org/1.4/formats.html的文件类型支持部分.
  • solr抽取所有的文本到content字段.这个字段在schema.xml中定义为stored.
  • 可以映射solr的元数据到solr的字段中,也可以对这些字段加权.
  • 你可以为字段值传入字面量值.字面量值将会覆盖Tika解析的值,包含Tika元数据对象中的字段,Tika的内容字段,任何可以获取的Tika 内容字段.
  • 可以使用XPath表达式到Tika的XHTML中,限制产生的内容.

  提示:尽管Apache Tika是很强大的,但是PDF文件是特别有问题的,这主要是由于在PDF格式本身.在处理任何文件时如果发生失败,ExtractingRequestHandler不具有二手准备机制来抽取文件的文本,它将会抛出一个异常.

1.2 Trying out Tika with the Solr Example Directory

cd example -jar start.jar

  在新的命令行窗口,打开docs/目录,通过 HTTP POST发送文件到solr中.

curl ‘http://localhost:8983/solr/update/extract?literal.id=doc1&commit=true‘ -F
"[email protected]"

  上面的URL调用了Extraction Request Handler,上传了tutorial.html文件,定义了唯一主键id为doc1,-F标记说明使用Content-Type:multipart/form-data,并支持上传二进制文件[email protected]符号说明了上传的文件附件.  [email protected]指定了一个有效的路径.可以是绝对的也可以时相对的.(如[email protected]/../site/tutorial.html,如果仍旧在exampledocs目录下的话.)

  也许已经注意到,在检索的时候,虽然可以检索文本的内容,但是看不到text的内容,这是因为Tika产生的 "content"字段映射到solr的"text"字段,solr的这个字段没有存储.这个操作可以通过  /update/extract 句柄的默认映射规则来改变.例如,存储,并看到所有元数据和内容:

curl
‘http://localhost:8983/solr/update/extract?literal.id=doc1&uprefix=attr_&fmap.content=
attr_content&commit=true‘ -F "[email protected]"

  这个参数 uprefix=attr_使solr的schema.xml中所有没有定义的字段前面都加上attr_字样.attr_在schema.xml中作为一个动态存储字段.fmap.content=attr_content参数覆盖了默认的fmap.content=text.使content添加到了attr_content字段.

1.3 Input Parameters

   Extraction Request Handler能够接受的参数:

参数 描述
boost.<fieldname> 为指定字段加权
capture
捕获指定的XHTML元素,支持添加到solr文档中.这个参数在复制XHTML中的某一块儿内容到指定字段时,非常有用.例如,它可以搜索<p>,索引它们到一个特别的字段.注意:content仍旧被抓取到整个"content"字段.

captureAttr 索引Tika XHTML的属性到单独的字段.如果设置为true,例如,从HTML中抽取内容时,Tika可以返回<a>标签元素中的href属性作为"a"字段.参考下面例子.
commitWithin 在指定毫秒时间内提交索引到磁盘
date.formats 定义文档识别的日期格式
defaultField 如果uprefix参数没有指定,字段不能被识别的时候,使用这个默认字段.
extractOnly
默认时false,如果为true,返回这个Tika抽取的内容,不索引这个文档.这在响应中逐字的包含抽取的XHTML字符串.在手动查看时,相对于xml来说它可能是更有用.以避免查看更多的嵌入的XHTML标签.参考http://wiki.apache.org/solr/TikaExtractOnlyExampleOutput.

extractFormat 默认时"xml".另外一个格式是"text".-x 表示xml  -t 表示text格式.只有在extractOnly为true的时候,这个参数才会有效.
fmap.<source_field> source_field必须是输入文档的字段,它的值是需要映射到的solr的字段.例如 fmap.content=text使Tika生成的content字段内容移动到solr的text字段
literal.<fieldname> 使用指定的值占据solr的字段.这个数据可以是多值的如果这个字段是多值类型的话.
   
   
   
   
   
   
   
   
   
时间: 2024-10-13 06:49:36

1.6.3 Uploading Data with Solr Cell using Apache Tika的相关文章

1.6.2 Uploading Data with Index Handlers

Uploading Data with Index Handlers 索引处理器就是Request Handlers,用于添加,更新,删除索引中的文档.另外,使用Tika抽取富文档数据,使用Data Import Handler抽取结构化数据.solr自然也就支持 XML, CSV 和 JSON格式的结构化文档. 配置并使用request handlers的推荐的方式就是使用基于names的path,在request url中映射path--但是如果request Dispatcher配置合适之

1.6 Indexing and Basic Data Operations--目录

1.6.1 什么是 Indexing 1.6.2 Uploading Data with Index Handlers 1.6.3 Uploading Data with Solr Cell using Apache Tika 1.6.4 Uploading Structured Data Store Data with the Data Import Handler 1.6.5 Updating Parts of Documents 1.6.6 De-Duplication(重复数据删除) 1

Hadoop集群选择合适的硬件配置

为Hadoop集群选择合适的硬件配置 随着Apache Hadoop的起步,云客户的增多面临的首要问题就是如何为他们新的的Hadoop集群选择合适的硬件. 尽管Hadoop被设计为运行在行业标准的硬件上,提出一个理想的集群配置不想提供硬件规格列表那么简单. 选择硬件,为给定的负载在性能和经济性提供最佳平衡是需要测试和验证其有效性.(比如,IO密集型工作负载的用户将会为每个核心主轴投资更多). 在这个博客帖子中,你将会学到一些工作负载评估的原则和它在硬件选择中起着至关重要的作用.在这个过程中,你也

Importing/Indexing database (MySQL or SQL Server) in Solr using Data Import Handler--转载

原文地址:https://gist.github.com/maxivak/3e3ee1fca32f3949f052 Install Solr download and install Solr from http://lucene.apache.org/solr/. you can access Solr admin from your browser: http://localhost:8983/solr/ use the port number used in installation. M

弄清楚Solr Nodes, Cores, Clusters and Leaders , Shards and Indexing Data

https://cwiki.apache.org/confluence/display/solr/Nodes%2C+Cores%2C+Clusters+and+Leaders Nodes and Cores In SolrCloud, a node is Java Virtual Machine instance running Solr, commonly called a server. Each Solr core can also be considered a node. Any no

Solr官方文档翻译-About &amp; Getting Started

关于(About) 官方文档介绍了所有的Apache Solr实现的重要特性和功能.它是免费的,可以到http://lucene.apache.org/solr/下载. 为了更加的深入和广泛,设计成一个较高水平的文档,而不是一个菜谱.文档定位到比较广泛的需求,帮助新手和经验丰富的开发人员扩展他们的应用,帮助他们定位和解决问题.在应用开发生命周期中,关于任何一点关于Solr的内容都可以使用这个文档,会得到最权威的信息. 这里默认你熟悉搜索的概念并且能够读懂XML,你不需要是个Java程序员,但是有

zookeeper和solr搭建集群分片查询

这几天双十一弄得不要不要的.各种困.出差有一些时间.晚上回头摆弄摆弄.白天不忙就是找个地方想想写写.就这样一周多过去了.好了.不扯了入正题. 1 .环境搭建 MacBook pro 15款840 OS X 10.10.5 solr-5.2.1.tgz zookeeper-3.4.6.tar.gz VMWare Fusion8 Centos 6.7 2 .搭建solr集群. 在之前说过zookeeper集群的搭建,所以在这就别啰嗦了.基本是一样的.不过因为之前搭建过rabbitmq集群,改了一些配

Solr多核的配置

Solr 多核(MultiCore)配置 Solr Multicore意义 Solr Multicore 是 solr 1.3 的新特性.其目的一个solr实例,可以有多个搜索应用.< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" /> 我们既可以把不同类型的数据放到同一index中,也可以使用分开的多indexes.基于这一点,你只需知道如何使用多 inde

solr总结

Solr的使用: 在Tomcat中部署solr 查 http://www.cnblogs.com/chen108/p/6218234.html 1.solr的data-config配置文件: <dataConfig> <dataSource name="jdbc" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@//192.168.82.192:1521/or