Solr 6和Nutch 2.3.1集成

时间:2016-07-22 11:56:20

标签: solr nutch

根据Nutch的消息,Nutch的最新版本与Solr 4.10.3 2.3.1兼容,这是solr的旧版本。

我们可以将Solr 6与Nutch 2.3.1集成。如果solr 6将被整合,会有什么缺点?有人试过这个吗?

1 个答案:

答案 0 :(得分:9)

这是一个老问题,但我只是让Nutch 1.12与Solr 6.3.0交谈。对于Nutch 2.x,所需的schema / solrconfig更改应该是相同的,所以这就是我所做的:

将这两种产品下载并解压缩到某个目录中,例如〜/ mycrawler,然后进入solr目录并为nutch创建一个核心:

solr-6.3.0/bin $ ./solr start
solr-6.3.0/bin $ ./solr create_core -c nutch -d basic_configs
solr-6.3.0/bin $ ./solr stop

这将创建solr-6.3.0 / server / solr / nutch,其中将包含架构等。现在,我们需要删除新的自动管理模式定义,并将其替换为nutch提供的schema.xml:

solr-6.3.0/server/solr/nutch/conf $ rm managed-schema
solr-6.3.0/server/solr/nutch/conf $ cp ~/mycrawler/apache-nutch-1.12/conf/schema.xml .

现在编辑schema.xml并删除所有enablePositionIncrements="true"定义中<filter class="solr.StopFilterFactory" ignoreCase="true" ...的所有实例。

同样在solr-6.3.0/server/solr/nutch/conf/solrconfig.xml中,注释这些类型的匹配块,以便获得:

<processor class="solr.AddSchemaFieldsUpdateProcessorFactory">
  <str name="defaultFieldType">strings</str>
    <!--
  <lst name="typeMapping">
    <str name="valueClass">java.lang.Boolean</str>
    <str name="fieldType">booleans</str>
  </lst>
  <lst name="typeMapping">
    <str name="valueClass">java.util.Date</str>
    <str name="fieldType">tdates</str>
  </lst>
  <lst name="typeMapping">
    <str name="valueClass">java.lang.Long</str>
    <str name="valueClass">java.lang.Integer</str>
    <str name="fieldType">tlongs</str>
  </lst>
  <lst name="typeMapping">
    <str name="valueClass">java.lang.Number</str>
    <str name="fieldType">tdoubles</str>
  </lst>
    -->
</processor>

现在再次启动服务器:

solr-6.3.0/bin $ ./solr start

如果你去管理员gui,它应该显示核心已启动,没有进一步的架构问题。

现在可以运行抓取脚本并成功写入我们的前沿Solr(对于Nutch 2来说可能略有不同):

./crawl -i \
    -D solr.server.url=http://localhost:8983/solr/nutch \ 
    ~/mycrawler/nutch_work/seed \
    ~/mycrawler/nutch_work/crawl  \
    1