根据Nutch的消息,Nutch的最新版本与Solr 4.10.3兼容,这是solr的旧版本.
我们可以将Solr 6与Nutch 2.3.1集成.如果solr 6将被整合,会有什么缺点?有人试过吗?
这是一个古老的问题,但我只是让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
Run Code Online (Sandbox Code Playgroud)
这将创建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 .
Run Code Online (Sandbox Code Playgroud)
现在编辑schema.xml并删除enablePositionIncrements="true"所有 <filter class="solr.StopFilterFactory" ignoreCase="true" ...定义中的所有实例 .
同样在solr-6.3.0/server/solr/nutch/conf/solrconfig.xml,注释这些typeMapping块,所以你得到:
<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>
Run Code Online (Sandbox Code Playgroud)
现在再次启动服务器:
solr-6.3.0/bin $ ./solr start
Run Code Online (Sandbox Code Playgroud)
如果你去管理员gui,它应该显示核心已启动,没有进一步的架构问题.
现在爬行脚本可以运行并将成功写入我们的前沿Solr(对于Nutch 2,这可能略有不同):
./crawl -i \
-D solr.server.url=http://localhost:8983/solr/nutch \
~/mycrawler/nutch_work/seed \
~/mycrawler/nutch_work/crawl \
1
Run Code Online (Sandbox Code Playgroud)