gpt4 book ai didi

java - Apache Nutch 2.3.1 插件无法工作

转载 作者:行者123 更新时间:2023-11-30 07:14:51 25 4
gpt4 key购买 nike

我必须提取 Apache Nutch 2.3.1 爬取数据的一些元数据信息,但 Nutch 默认情况下不提供这些信息。为此我必须编写一个插件。出于学习目的,我采取了 Nutch tutorial作为起点。我知道本教程适用于 1.x 版本。我已经更改了所有必需的类并成功构建了它。以下是我遵循的步骤。

  1. 创建一个目录,例如 $NUTCH_HOME/src/plugin/myPlugin
  2. 将索引元数据复制到我的插件并创建一个文件 myField.javacp -r 索引元数据/* myPlugin/
  3. 目录列表应该类似于
myPlugin/plugin.xml
build.xml
ivy.xml
src/java/org/apache/nutch/indexer/AddField.java
  • plugin/myplgin/plugin.xml 应该如下所示
  • <?xml version="1.0" encoding="UTF-8"?>
    <plugin id="myPlugin" name="Add Field to Index"
    version="1.0.0" provider-name="your name">
    <runtime>
    <library name="myPlugin.jar">
    <export name="*"/>
    </library>
    </runtime>
    <extension id="org.apache.nutch.indexer.myPlugin"
    name="Add Field to Index"
    point="org.apache.nutch.indexer.IndexingFilter">
    <implementation id="myPlugin"
    class="org.apache.nutch.indexer.AddField"/>
    </extension>
    </plugin>
  • 像这样更改 build.xml
  • <?xml version="1.0" encoding="UTF-8"?>
    <project name="myPlugin" default="jar">
    <import file="../build-plugin.xml"/>
    </project>
  • 然后
  • <ant dir="myPlugin" target="deploy" />

  • 编辑您的 ./conf/nutch-site.xml

    <property>
    <name>plugin.includes</name>
    <value>plugin-1|plugin-2|myPlugin</value>
    <description>Added myPlugin</description>
    </property>
  • 分别在 schema.xml 和 solrindex-mapping.xml 中添加以下行

    <field name="pageLength" type="long" stored="true" indexed="true"/>
    <field dest="pageLength" source="pageLength"/>
  • 然后我编译了我编写的代码(类似于 URL 中的给定示例)

  • 当我在本地模式下运行 Nutch 时,以下是对 solr 步骤日志信息的索引

    Active IndexWriters :
    SOLRIndexWriter
    solr.server.url : URL of the SOLR instance (mandatory)
    solr.commit.size : buffer size when sending to SOLR (default 1000)
    solr.mapping.file : name of the mapping file for fields (default solrindex-mapping.xml)
    solr.auth : use authentication (default false)
    solr.auth.username : username for authentication
    solr.auth.password : password for authentication
    IndexingJob: done.

    我还在 solr 模式中添加了字段 pageLength。根据我的预期,应该有一个新字段 pageLength 具有正确的值,但 solr 中没有字段。

    问题出在哪里?这是一个简单的玩具示例。这是索引步骤的 nutch 日志文件 (hadoop.log) 输出

    2016-07-26 16:53:25,649 INFO  solr.SolrMappingReader - source: content dest: content
    2016-07-26 16:53:25,649 INFO solr.SolrMappingReader - source: title dest: title
    2016-07-26 16:53:25,649 INFO solr.SolrMappingReader - source: host dest: host
    2016-07-26 16:53:25,649 INFO solr.SolrMappingReader - source: batchId dest: batchId
    2016-07-26 16:53:25,649 INFO solr.SolrMappingReader - source: boost dest: boost
    2016-07-26 16:53:25,649 INFO solr.SolrMappingReader - source: digest dest: digest
    2016-07-26 16:53:25,649 INFO solr.SolrMappingReader - source: tstamp dest: tstamp
    2016-07-26 16:53:25,649 INFO solr.SolrMappingReader - source: pageLength dest: pageLength
    2016-07-26 16:53:26,140 INFO solr.SolrIndexWriter - Total 1 document is added.
    2016-07-26 16:53:26,140 INFO indexer.IndexingJob - IndexingJob: done.

    我如何确认插件已被 nutch 加载?其次,在我将Nutch插件配置为nutch进行爬行之前,有什么方法可以测试它吗?

    最佳答案

    尝试更改plugin.xml中的扩展ID。将其更改为“org.apache.nutch.indexer.AddField”并重新构建 Nutch

    <extension id="org.apache.nutch.indexer.AddField"
    name="Add Field to Index"
    point="org.apache.nutch.indexer.IndexingFilter">
    <implementation id="myPlugin"
    class="org.apache.nutch.indexer.AddField"/>
    </extension>

    我认为这应该可以解决问题。

    也只是为了验证控件是否进入您的插件类,或者不在您的代码中添加一些信息日志,例如

    LOG.info("从插件打印");
    如果您能够在 hadoop.log 中看到这些日志,则意味着控制权已转移到插件类。

    关于java - Apache Nutch 2.3.1 插件无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38590343/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com