我正在从Microsoft Word 97-07文档(.doc)中提取内容并将它们存储到Solr中的字段中(以显示用于突出显示的上下文片段)。似乎提取的内容未被正确过滤;存储了很多特殊字符,而我只想以纯文本格式存储内容。当我打印出这些片段时,它看起来像这样:
有没有办法过滤/删除特殊字符?能够删除原来也是函数名的文本也很好 - 但不是必须的 - 例如NUMPAGES
。
我使用了以下ExtractingRequestHandler:
<requestHandler name="/update/extract" class="solr.extraction.ExtractingRequestHandler">
<lst name="defaults">
<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>
RequestHandler通过SolrJ使用,带有以下参数:
up.setParam("fmap.content", "file_content");
up.setParam("fmap.title", "title_text");
并且file_content
字段的定义如下:
<field name="file_content" type="text_printable" stored="true"/>
虽然我不认为字段类型很重要(因为它没有编入索引)但我还是会把它放在这里:
<fieldType name="text_printable" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ScandinavianFoldingFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ScandinavianFoldingFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
</analyzer>
</fieldType>
编辑:我忘了提到我正在使用Tika 1.4附带的SOLR 4.4.0
答案 0 :(得分:1)
事实证明这是Tika 1.5中部分修复的。
我说部分修复了,因为目录中仍然存在一些与动态页面编号相关的特殊字符。
根据Freenode上#solr的优秀人士的说法,Apache Tika 1.5应该与Solr 4.8.0打包在一起。作为4.8.0发布之前的临时修复,我只需下载Tika 1.5并将tika-core-1.5.jar
和tika-parsers-1.5.jar
放在Solr的contrib/extraction/lib
目录中。我还必须删除旧文件,即tika-core-1.4.jar
和tika-parsers-1.4.jar
。到目前为止似乎完美无缺。