根据Nutch的消息,Nutch的最新版本与Solr 4.10.3 2.3.1兼容,这是solr的旧版本。
我们可以将Solr 6与Nutch 2.3.1集成。如果solr 6将被整合,会有什么缺点?有人试过这个吗?
答案 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