没有来自Tika通过SolrCell的元数据的文本内容

时间:2012-06-04 21:43:38

标签: solr apache-tika solr-cell

使用Solr 3.6和ExtractionRequestHandler(又名Tika),是否可以将只是文本内容(PDF格式)映射到字段减去元数据?不幸的是,Tika制作的“内容”字段包含了文档内容的所有元数据。

我想提供内容的一些片段突出显示,内容字段中的主题元数据正在扭曲突出显示结果。

更新:由Solr索引的Tika输出的屏幕截图。突出显示的部分是元数据块,它作为文本块添加到PDF内容之前。

solr screenshot of tika output

solrconfig.xml中的ExtractingRequestHandler:

<requestHandler name="/update/extract" startup="lazy" class="solr.extraction.ExtractingRequestHandler">
    <lst name="defaults">
    <str name="lowernames">true</str>
    <str name="uprefix">ignored_</str>
    </lst>
</requestHandler>

Schema.xml字段。注意“内容”直接接收Tika的内容输出。当文档发布到处理程序时,“页面”和“集合”字段使用文字值设置。

<field name="id" type="string" indexed="true" stored="true" required="true"/>
<field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="subject" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="content" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="collection" type="text_general" indexed="true" stored="true"/>
<field name="page" type="tint" indexed="true" stored="true"/>
<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>

4 个答案:

答案 0 :(得分:6)

由于所有其他答案完全不相关,我会发布我的:

我遇到了与OP描述完全相同的问题,( Solr 4.3.0 ,自定义配置,自定义架构等等。我不是新手或者其他东西,并且理解Solr内部很好)< / p>

这个 我的ERH配置:

  <requestHandler name="/update/extract" 
                  startup="lazy"
                  class="solr.extraction.ExtractingRequestHandler" >
    <lst name="defaults">
      <str name="uprefix">ignored_</str>
      <str name="fmap.a">ignored_</str>
      <str name="fmap.div">ignored_</str>
      <str name="fmap.content">text</str>
      <str name="captureAttr">false</str>

      <str name="lowernames">true</str>
      <bool name="ignoreTikaException">true</bool>
    </lst>
  </requestHandler>

它基本上被配置为忽略除内容之外的所有内容(我认为这对许多人来说是合理的)。

经过仔细调查,我发现了,

<str name="captureAttr">false</str>
导致OP问题的原因是什么。默认情况下它已打开,但我将其关闭,因为我无论如何都不需要它。那是我的错。我不明白为什么,但它会导致Solr将提取的属性与提取的文本一起放入fmap.content字段。

因此解决方案是重新开启。 最终ERH

  <requestHandler name="/update/extract" 
                  startup="lazy"
                  class="solr.extraction.ExtractingRequestHandler" >
    <lst name="defaults">
      <str name="uprefix">ignored_</str>
      <str name="fmap.a">ignored_</str>
      <str name="fmap.div">ignored_</str>
      <str name="fmap.content">text</str>
      <str name="captureAttr">true</str>

      <str name="lowernames">true</str>
      <bool name="ignoreTikaException">true</bool>
    </lst>
  </requestHandler>

现在,只将提取的文本放入fmap.content字段。

不幸的是,我没有找到任何可以解释这一点的文档。无论是bug还是仅仅是愚蠢的行为

答案 1 :(得分:1)

使用Solr的Tika为内容和元数据生成不同的字段。

如果您使用Standard ExtractingRequestHandler -

  <requestHandler name="/update/extract" 
                  startup="lazy"
                  class="solr.extraction.ExtractingRequestHandler" >
    <lst name="defaults">
      <!-- All the main content goes into "text"... if you need to return
           the extracted text or do highlighting, use a stored field. -->
      <str name="fmap.content">text</str>
      <str name="lowernames">true</str>
      <str name="uprefix">ignored_</str>

      <!-- capture link hrefs but ignore div attributes -->
      <str name="captureAttr">true</str>
      <str name="fmap.a">links</str>
      <str name="fmap.div">ignored_</str>
    </lst>   
</requestHandler>

字段映射内容设置为文本字段,该字段应该只是pdf的内容。

可以通过修改schema.xml轻松检查其他元数据字段。

标记为igonred字段类型存储为true

<fieldtype name="ignored" stored="true" indexed="false" multiValued="true" class="solr.StrField" />

捕获所有字段 -

   <dynamicField name="*" type="ignored" multiValued="true" />

Tika为元数据添加了大量字段,其中内容被单独设置,例如使用ppt。

进行提取处理程序时的响应
<doc>
    <arr name="application_name">
        <str>Microsoft PowerPoint</str>
    </arr>
    <str name="category">POT - US</str>
    <str name="comments">version 1.1</str>
    <arr name="company">
        <str>
        </str>
    </arr>
    <arr name="content_type">
        <str>application/vnd.ms-powerpoint</str>
    </arr>
    <arr name="creation_date">
        <str>2000-03-15T16:57:27Z</str>
    </arr>
    <arr name="custom_delivery_date">
        <str>
        </str>
    </arr>
    <arr name="custom_docid">
        <str>
        </str>
    </arr>
    <arr name="custom_docidinslide">
        <str>true</str>
    </arr>
    <arr name="custom_docidintitle">
        <str>true</str>
    </arr>
    <arr name="custom_docidposition">
        <str>0</str>
    </arr>
    <arr name="custom_event">
        <str>
        </str>
    </arr>
    <arr name="custom_final">
        <str>false</str>
    </arr>
    <arr name="custom_mckpapersize">
        <str>US</str>
    </arr>
    <arr name="custom_notespagelayout">
        <str>Lower</str>
    </arr>
    <arr name="custom_title">
        <str>Lower Universal Template US</str>
    </arr>
    <arr name="custom_universal_objects">
        <str>true</str>
    </arr>
    <arr name="edit_time">
        <str>284587970000</str>
    </arr>
    <str name="id">101</str>
    <arr name="ignored_">
        <str>slideShow</str>
        <str>slide</str>
        <str>slide</str>
        <str>slideNotes</str>
    </arr>
    <str name="keywords">test</str>
    <arr name="last_author">
        <str>Corporate</str>
    </arr>
    <arr name="last_printed">
        <str>2000-03-17T20:28:57Z</str>
    </arr>
    <arr name="last_save_date">
        <str>2009-03-24T16:52:26Z</str>
    </arr>
    <arr name="manager">
        <str>
        </str>
    </arr>
    <arr name="meta">
        <str>stream_source_info</str>
        <str>file:/C:/temp/nuggets/100000.ppt</str>
        <str>Last-Author</str>
        <str>Corporate</str>
        <str>Slide-Count</str>
        <str>2</str>
        <str>custom:DocIDPosition</str>
        <str>0</str>
        <str>Application-Name</str>
        <str>Microsoft PowerPoint</str>
        <str>custom:Delivery Date</str>
        <str>
        </str>
        <str>custom:Event</str>
        <str>
        </str>
        <str>Edit-Time</str>
        <str>284587970000</str>
        <str>Word-Count</str>
        <str>120</str>
        <str>Creation-Date</str>
        <str>2000-03-15T16:57:27Z</str>
        <str>stream_size</str>
        <str>181248</str>
        <str>Manager</str>
        <str>
        </str>
        <str>stream_name</str>
        <str>100000.ppt</str>
        <str>Company</str>
        <str>
        </str>
        <str>Keywords</str>
        <str>test</str>
        <str>Last-Save-Date</str>
        <str>2009-03-24T16:52:26Z</str>
        <str>Revision-Number</str>
        <str>91</str>
        <str>Last-Printed</str>
        <str>2000-03-17T20:28:57Z</str>
        <str>Comments</str>
        <str>version 1.1</str>
        <str>Template</str>
        <str>
        </str>
        <str>custom:PaperSize</str>
        <str>US</str>
        <str>custom:DocID</str>
        <str>
        </str>
        <str>xmpTPg:NPages</str>
        <str>2</str>
        <str>custom:NotesPageLayout</str>
        <str>Lower</str>
        <str>custom:DocIDinSlide</str>
        <str>true</str>
        <str>Category</str>
        <str>POT - US</str>
        <str>custom:Universal Objects</str>
        <str>true</str>
        <str>custom:Final</str>
        <str>false</str>
        <str>custom:DocIDinTitle</str>
        <str>true</str>
        <str>Content-Type</str>
        <str>application/vnd.ms-powerpoint</str>
        <str>custom:Title</str>
        <str>test</str>
    </arr>
    <arr name="p">
        <str>slide-content</str>
        <str>slide-content</str>
    </arr>
    <arr name="revision_number">
        <str>91</str>
    </arr>
    <arr name="slide_count">
        <str>2</str>
    </arr>
    <arr name="stream_name">
        <str>100000.ppt</str>
    </arr>
    <arr name="stream_size">
        <str>181248</str>
    </arr>
    <arr name="stream_source_info">
        <str>file:/C:/temp/test/100000.ppt</str>
    </arr>
    <arr name="template">
        <str>
        </str>
    </arr>
    <!-- Content field -->
    <arr name="text">
        <str>test Test test test test tes t</str>
    </arr>
    <arr name="title">
        <str>test</str>
    </arr>
    <arr name="word_count">
        <str>120</str>
    </arr>
    <arr name="xmptpg_npages">
        <str>2</str>
    </arr>
</doc>

答案 2 :(得分:0)

我不再遇到上面描述的问题了。自提出问题以来,我已更新到Solr 4.0 alpha并从4.0a软件包附带的Solr Cell示例中重新创建了schema.xml。我怀疑我原来的架构是将元数据字段的内容复制到文本字段,所以很可能是我自己的错误。

答案 3 :(得分:0)

在定义请求处理程序的 solrconfig.xml 中,在下面添加以下行

<str name="fmap.title">ignored_</str>

这告诉Tika只是忽略它在PDF中嵌入的title属性(或者你想要忽略的属性)。