Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pdf 文档至少包含一个巨大的术语-Solr索引错误_Pdf_Solr_Nutch - Fatal编程技术网

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

Pdf 文档至少包含一个巨大的术语-Solr索引错误,pdf,solr,nutch,Pdf,Solr,Nutch,我用我的一个PDF文件面对这个问题,我认为它由于文件太大而无法索引到Solr中。我在网上看到的回复大多建议将'content'的字段类型更改为'text\u general',我一直在使用该字段,但此特定PDF仍然无法编制索引 产生错误: 将文档id abc.com/files/hugepdf.pdf写入索引时出现异常;可能的分析错误:文档在field=“content”(其UTF8编码长于最大长度32766)中至少包含一个巨大的术语,所有这些术语都被跳过。请更正分析器,使其不产生此类术语。第一

我用我的一个PDF文件面对这个问题,我认为它由于文件太大而无法索引到Solr中。我在网上看到的回复大多建议将'content'的字段类型更改为'text\u general',我一直在使用该字段,但此特定PDF仍然无法编制索引

产生错误:

将文档id abc.com/files/hugepdf.pdf写入索引时出现异常;可能的分析错误:文档在field=“content”(其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)太大

当前的“文本\u概述”模式

  <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>

请注意,我添加了一个“TruncateTokenFilterFactory”过滤器,它有助于解决大多数大型PDF文件的问题。但是,此PDF是一个例外

问题

  • 怎样才能成功地为这些PDF编制索引
  • 索引失败时,所有索引将不会添加到Solr中(由于1个PDF文件超过了最大大小,这将浪费所有耗时(几小时)的工作)。有没有办法只添加成功的索引,而只拒绝特定的索引

  • 为pdf内容编制索引是一个已知的“噩梦”。你永远不会得到100%正确的文本提取。我怀疑你这里的问题是提取对该pdf不起作用,它会返回一大堆垃圾。截断这不是最好的方法,忽略它会更好。使用“text_general”根本没有帮助

    一些一般准则是:

  • 在solr之外进行文本提取。是的,使用solr Cell很方便,但对于现实世界中的pdf和卷,最糟糕的情况是进程将挂起(比死亡更糟糕)。在solr之外进行提取,在多个线程中,这将加快提取速度并使solr更可靠(减少对它的压力)
  • 使用回退库。您可能正在使用PDFBox(如果您使用的是Cell)。如果无法提取某些文件,请使用第二个库(有多个库)

  • PDFBox本身对PDF大小没有固定的限制。因此,使用ExtractText命令行工具仍然可以获取Solr之外的文本。谢谢。我想知道是否有任何方法可以检测大小大于32766的PDF,以便我可以在我的reg-urlfilter.txt中指定它们。有这样的方法吗?