Apache nutch 没有将所有文档索引到 apache solr

Apache nutch not indexing all documents to apache solr

我正在使用 apache nutch 2.3(最新版本)。我已经抓取了大约 49000 个文档。从文档mime分析,爬取的数据包含约45000 thouse和text/html个文档。但是当我在 solr (4.10.3) 中看到索引文档时,只有大约 14000 个文档被索引。为什么文件之间的差异如此巨大(45000-14000=31000)。如果我假设 nutch 只索引 text/html 个文档,那么至少应该索引 45000 个文档。

这是什么问题。如何解决?

在我的例子中,这个问题是由于 nutch-site.xml 中缺少 solr 索引器信息造成的。当我更新配置时,这个问题就解决了。请在索引步骤检查您的爬虫日志。在我的例子中,它被告知没有找到 solr 索引器插件。

在 nutch-site.xml

中添加了以下行 (属性)
<property>
  <name>plugin.includes</name>
 <value>protocol-httpclient|protocol-http|indexer-solr|urlfilter-regex|parse-(html|tika)|index-(basic|more)|urlnormalizer-(pass|regex|basic)|scoring-opic</value>
 <description>plugin details here </description>
</property>

您应该查看您的 Solr 日志,看看是否有任何关于 "duplicate" 文档的信息,或者只是查看 solrconfig.xml 文件以查找您要将文档推送到的核心。可能正在对更新处理程序进行 "dedupe" 调用,所使用的字段可能导致重复文档(基于几个字段)被删除。你会看到这样的东西

<requestHandler name="/dataimport"
        class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
        <str name="update.chain">dedupe</str>     <<-- change dedupe to uuid
        <str name="config">dih-config.xml</str>        or comment the line
    </lst>
</requestHandler>

以及稍后在文件中定义重复数据删除 update.chain、

<updateRequestProcessorChain name="dedupe">
     <processor class="solr.processor.SignatureUpdateProcessorFactory">
         <bool name="enabled">true</bool>
         <str name="signatureField">id</str>
         <bool name="overwriteDupes">true</bool>
-->>     <str name="fields">url,date,rawline</str>     <<--
         <str name="signatureClass">solr.processor.Lookup3Signature</str>
     </processor>
     <processor class="solr.LogUpdateProcessorFactory" />
     <processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>

"fields" 元素将 select 哪些输入数据用于确定记录的唯一性。当然,如果您知道输入数据中没有重复,这就不是问题。但是上面的配置将丢弃在显示的字段上重复的任何记录。

您可能没有使用 dataimport requestHandler,而是 "update" requestHandler。我不确定 Nutch 使用的是哪一个。无论哪种方式,您都可以简单地注释掉 update.chain,将其更改为不同的处理器链,例如 "uuid",或者向 "fields" 声明添加更多字段。