Pea*_*ter 4 solr solr-cell apache-tika
使用Solr的3.6和ExtractionRequestHandler(又名提卡),是有可能映射只是文本内容(的PDF)的场减去元数据?不幸的是,由Tika产生的"内容"字段包含与文档的文本内容一起存在的所有元数据.
我想提供一些内容的片段突出显示,内容字段中的主题元数据正在扭曲突出显示结果.
更新:由Solr索引的Tika输出的屏幕截图.突出显示的部分是元数据块,它作为文本块添加到PDF内容之前.

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>
Run Code Online (Sandbox Code Playgroud)
Schema.xml字段.注意"内容"直接接收Tika的内容输出.当doc发布到处理程序时,"page"和"collection"字段使用文字值设置.
<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"/>
Run Code Online (Sandbox Code Playgroud)
由于所有其他答案完全无关紧要,我会发布我的:
我遇到了与OP描述完全相同的问题,(Solr 4.3.0,自定义配置,自定义架构等等.我不是新手或其他东西,并且理解Solr内部很好)
这是我的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>
Run Code Online (Sandbox Code Playgroud)
它基本上被配置为忽略除内容之外的所有内容(我认为这对许多人来说是合理的).
仔细调查后我发现了
<str name="captureAttr">false</str>
Run Code Online (Sandbox Code Playgroud)
这是造成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>
Run Code Online (Sandbox Code Playgroud)
现在,只将提取的文本放到fmap.content字段中.
不幸的是,我没有找到任何可以解释这一点的文档.无论是bug还是仅仅是愚蠢的行为