文档至少包含一个巨大的术语 - 索尔索引错误

时间:2017-07-26 08:21:33

标签: pdf solr nutch

我正在使用我的一个PDF文件来解决这个问题,我认为由于文件太大而无法将其编入索引。我在网上看到的回复主要是建议改变 '内容的字段类型。我一直在使用 ,但这个特殊的PDF仍然无法编入索引。

错误产生:

异常将文件id abc.com/files/hugepdf.pdf写入索引;可能的分析错误: 文档在字段中包含至少一个巨大的术语="内容" (其UTF8编码长于最大长度32766) ,所有这些都被跳过。请更正分析仪以不生成此类条款。第一个巨大术语的前缀是:' [66,65,82,73,78,71,32,71,76,79,66,65,76,32,79,80,80,79, 82,84,85,78,73,84,73,69,83,32,85,77] ......',原始消息:字节长度最多为32766;得到110482.也许该文档有一个索引字符串字段(solr.StrField)太大

' text_general'

的当前架构
  <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EnglishMinimalStemFilterFactory"/>
        <filter class="solr.TruncateTokenFilterFactory" prefixLength="100"/> 
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EnglishMinimalStemFilterFactory"/>
      </analyzer>
      <analyzer type="multiterm">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
  </fieldType>

请注意我添加了一个&#39; TruncateTokenFilterFactory&#39;过滤器有助于解决大多数大型PDF文件的问题。但是这个PDF是一个例外。

问题

  1. 有哪些方法可以成功索引此类PDF?
  2. 在索引失败时,所有索引都不会被添加到Solr中(由于1个PDF文件超过最大大小,因此浪费了很长时间(几个小时)的所有工作。有没有办法解决这个问题只有成功的索引,而只拒绝特定的索引?

1 个答案:

答案 0 :(得分:0)

索引pdf内容是众所周知的“噩梦”。你永远不会得到100%正确的文本提取。我怀疑你的问题是提取不适用于那个pdf,它返回了一大堆垃圾。截断这不是最好的方法,忽略它会更好。使用'text_general'根本没用。

一些通用指南将是:

  1. 从solr中提取文本。是的,使用Solr Cell很方便,但对于真实世界的pdf和卷,最糟糕的情况是流程会挂起(这比死亡更糟)。用多线程做solr,这样可以加快它的速度,使Solr更可靠(对它的压力更小)。
  2. 使用后备库。您可能正在使用PDFBox(如果您使用的是Cell)。如果无法提取某些文件,请使用第二个库(有几个)