nutch集成solr和中文分词

一、构建nutch环境

1. 设置代理

由于nutch使用ant构建,ant调用ivy,会从maven仓库中下载依赖包,因此若公司需要代理才能上网,需要设置代理,如果公司不需要代理即可上网,此步骤直接省略.

总结设置代理遇到的几个坑:

  • 强制使用系统代理,即 ant -autoproxy , 结果失败!
  • 修改 build.xml , 增加 setproxy ,设置代理,结果失败!
  • 设置 ANT_OPTS ,添加选项
  • -Dhttp.proxyHost=http://proxy.xxx.com
  • -Dhttp.proxyPort=xxx , 结果失败!
  • 传递 http_proxy ,结果失败!

失败原因: proxyHost只需要包括主机名,而不需要指定协议

成功编译为修改build.xml文件,设置代理,内容如下:

<target name="myproxy">
<setproxy proxyhost="proxy.xxx.com" proxyport="913" />
</target>

并修改ivy-init指令,如下:

<target name="ivy-init" depends="ivy-probe-antlib, ivy-init-antlib,myproxy" description="--> initialise Ivy settings">
<ivy:settings file="${ivy.dir}/ivysettings.xml" />
</target>

2. 设置hadoop环境

若只是构建单机模式,此步骤省略!

否则需要设置并export HADOOP_HOME环境变量:

export HADOOP_HOME=${HADOOP_HOME:-/opt/hadoop}
echo $HADOOP_HOME

3. nutch配置

在编译之前首先需要配置nutch,每次更新配置文件,都需要重新编译!
配置文件位于$NUTCH_HOME/conf下,务必设置http.agent.name,否则编译后不能运行, 编辑conf/nutch-site.xml, 内容为:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration>
<property>
<name>http.agent.name</name>
<value>My Spider</value>
</property>
</configuration>

如果需要设置nutch运行时代理,需要配置代理,修改文件$NUTCH_HOME/conf/nutch-default.xml, 修改http.proxyHosthttp.proxyPort值,内容如下:

<property>
<name>http.proxy.host</name>
<value>proxy.xxx.com</value>
<description>The proxy hostname. If empty, no proxy is used.</description>
</property> <property>
<name>http.proxy.port</name>
<value>xxx</value>
<description>The proxy port.</description>
</property>

4.编译构建nutch

在此之前,请确保以上步骤已经正确完成,否则会导致编译失败或者运行失败!
编译:

ant -v runtime

构建开始,大约需要30分钟的时间

二、集成solr

目前solr的版本是5.x,但好像5.x版本差别较大,nutch没有集成支持!因此我们使用当前的4.x版本,目前该版本的latest是4.10.4,点击此处下载.

1.初始化

解压缩,复制example/solr/collection1下的core collection1nutch:

cp -rf collection1 nutch

并修改$SOLR_HOME/example/solr/nutch/core.properties文件,设置name为nutch:

name=nutch

$NUTCH_HOME/conf/schema-solr4.xml复制到$SOLR_HOME/example/solr/nutch/conf下,并重命名为schema.xml:

cp $NUTCH_HOME/conf/schema-solr4.xml  $SOLR_HOME/example/solr/nutch/conf/schema.xml

2. 修改配置

此时启动solr会出现以下错误:

org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: copyField dest :'location' is not an explicit field and doesn't match a dynamicField

应该是配置文件schema.xml的一个bug, 修复办法为在<fields>下增加一个location field, 内容为:

  <field name="location" type="location" stored="false" indexed="true" multiValued="true"/>

若没有_version属性,则增加_version_属性:

<field name="_version_" type="long" indexed="true" stored="true"/>

3. 增加中文分词

首先从google code上下载IKAnalyzer,下载版本为IK Analyzer 2012FF_hf1.zip,如果被GFW, 点击此处下载
解压缩文件,把IKAnalyzer2012FF_u1.jar文件复制到$SOLR_HOME/example/solr-webapp/webapp/WEB-INF/lib,把IKAnalyzer.cfg.xml和stopword.dic复制到$SOLR_HOME/example/solr/nutch/conf,与schema.xml一个目录下:

cp IKAnalyzer2012FF_u1.jar $SOLR_HOME/example/solr-webapp/webapp/WEB-INF/lib
cp IKAnalyzer.cfg.xml stopword.dic $SOLR_HOME/example/solr/nutch/conf

修改core的schema.xml,在配置项间加一段如下配置:

<fieldType name="text_cn" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

在这个core的schema.xml里面配置field类型的时候就可以使用text_cn

<field name="name"      type="text_cn"   indexed="true"  stored="true"  multiValued="true" />

启动solr服务

cd $SOLR_HOME/example
java -jar start.jar

浏览器访问http://172.16.182.23:8983/solr/#/nutch,在左下边点击Analysis连接,选择Analyse Fieldname / FieldTypetext_cn,在Field Value (Index)下输入:

我喜欢solr

然后点击蓝色按钮Analyse Values,查看效果,看是否正确分词!

三、单机运行测试

具体过程可以查看官方教程

总结过程如下:

1. 创建种子列表

mkdir urls
cd urls
touch seeds.txt
echo "http://nutch.apache.org/" >> seeds.txt # 每行一个URL

2.使用crawl脚本运行

bin/crawl -i -D solr.server.url=http://localhost:8983/solr/nutch urls/ TestCrawl/  2

3. 验证结果

打开http://localhost:8983/solr/,点击solr admin, 在Querty String输入nutch, 点击Search查看效果

四、分布式运行

与单机过程类型,首先创建urls目录作为种子url,然后上传到hdfs上:

mkdir urls
cd urls
echo "http://apache.org" >>seeds.txt
hdfs dfs -put urls

假定solr已经配置完成,url为localhost:8983

运行以下命令运行:

cd $NUTCH_HOME/runtime/runtime/deploy/
bin/crawl -i -D solr.server.url=http://localhost:8983/solr/nutch urls/ TestCrawl/ 2

nutch集成solr和中文分词的更多相关文章

  1. Solr 配置中文分词器 IK

    1. 下载或者编译 IK 分词器的 jar 包文件,然后放入 ...\apache-tomcat-8.5.16\webapps\solr\WEB-INF\lib\ 这个 lib 文件目录下: IK 分 ...

  2. solr配置中文分词器

    配置IK分词器 在/opt/solr-7.7.1/server/solr-webapp/webapp/WEB-INF/lib目录中加入IK分词器的jar包 在/opt/solr-7.7.1/serve ...

  3. Solr安装中文分词器IK

    安装环境 jdk1.7 solr-4.10.3.tgz KAnalyzer2012FF_u1.jar tomcat7 VM虚拟机redhat6.5-x64:192.168.1.201 Xshell4 ...

  4. Solr整合中文分词组件IKAnalyzer

    我用的Solr是4.10版本, 在csdn下载这个版本的IKAnalyzer:IK Analyzer 2012FF_hf1.zip 解压后目录如下: (1)这里还用solr自带的example实验分词 ...

  5. 给Solr配置中文分词器

    第一步下载分词器https://pan.baidu.com/s/1X8v65YZ4gIkNQXsXfSULBw 第二歩打开已经解压的ik分词器文件夹 将ik-analyzer-solr5-5.x.ja ...

  6. solr配置中文分词器——(十二)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqcAAAGzCAIAAACdKClDAAAgAElEQVR4nOydd5gUxdbGx5xASZKXLB

  7. 关于Solr搜索标点与符号的中文分词你必须知道的(mmseg源码改造)

    关于Solr搜索标点与符号的中文分词你必须知道的(mmseg源码改造) 摘要:在中文搜索中的标点.符号往往也是有语义的,比如我们要搜索“C++”或是“C#”,我们不希望搜索出来的全是“C”吧?那样对程 ...

  8. windows 上配置solr5.2.1+solr4.3+中文分词器

    搭建5.2.1 1.下载 Tomcat解压后的目录为 D:\Program Files\Apache Software Foundation\apache-tomcat-8.0.22 solr解压后的 ...

  9. 【Lucene3.6.2入门系列】第14节_SolrJ操作索引和搜索文档以及整合中文分词

    package com.jadyer.solrj; import java.util.ArrayList; import java.util.List; import org.apache.solr. ...

随机推荐

  1. PHP ftp_nb_fget() 函数

    定义和用法 ftp_nb_fget() 函数从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中.(无阻塞) 该函数返回下列值之一: FTP_FAILED(发送/获取失败) FTP_FIN ...

  2. vue基础五

    条件渲染 1.v-if 1.1<template>中v-if条件组 因为 v-if 是一个指令,需要将它添加到一个元素上.但是如果我们想切换多个元素呢?此时我们可以把一个<templ ...

  3. BZOJ 2326: [HNOI2011]数学作业(矩阵乘法)

    传送门 解题思路 NOIp前看到的一道题,当时想了很久没想出来,NOIp后拿出来看竟然想出来了.注意到有递推\(f[i]=f[i-1]*poww[i]+i\),\(f[i]\)表示\(1-i\)连接起 ...

  4. php5模块pdo、pdo_mysql、mysqli的添加

    一.环境LAMP都是源码安装,PHP安装的时候没有配置pdo_mysql和mysqli,pdo是php5默认带的.PHP5的源码都在,只需要把php5的模块功能扩展就可以了. php源码目录:/usr ...

  5. C++——数据结构之链表

    直接上例子 int main() { ,,}; ,,}; Listnode *head=NULL,*temp; head=(Listnode*)malloc(sizeof(Listnode));//头 ...

  6. HTML5自定义属性的设置与获取

    <div id="box" aaa="bbb" data-info="hello"></div> <body& ...

  7. POJ 3130 How I Mathematician Wonder What You Are! (半平面交)

    题目链接:POJ 3130 Problem Description After counting so many stars in the sky in his childhood, Isaac, n ...

  8. 前端(二十三)—— Vue环境搭建

    目录 一.Vue环境搭建 一.Vue环境搭建 1.安装node 去官网下载node安装包 傻瓜式安装 万一安装后终端没有node环境,要进行node环境变量的配置(C:\Program Files\n ...

  9. JavaMail API 发送电子邮件

    现在,我们对JavaMail API及其核心类有一个清晰的概念,现在让我们写这将发送简单的电子邮件,邮件带有附件,电子邮件,HTML内容和电子邮件内嵌图像一个简单的程序. 接着在上述所有情况的基本步骤 ...

  10. Java 序列化和反序列化(一)Serializable 使用场景

    目录 Java 序列化和反序列化(一)Serializable 使用场景 1. 最简单的使用:Serializable 接口 2. 序列化 ID 的问题 3. 静态字段不会序列化 4. 屏蔽字段:tr ...