/ 中存储网

tomcat7服务器中安闲盏开源搜索引擎solr4.0+实现中文分词

2014-04-04 08:23:01 来源:kejihao
 2012年12月16日,solr4.0正式版发布,由于其新功能比较给力(特别是关于分布式的新特性,关联zookeeper等),所以准备替换掉老版本

官网下载solr4.0:http://lucene.apache.org/solr/

mmseg4j分词下载:http://code.google.com/p/mmseg4j/downloads/list

词库下载:http://code.google.com/p/mmseg4j/downloads/detail?name=data.zip&can=2&q=

系统:centos 6.2(64位)

ip地址:192.168.1.124

tomcat:apache-tomcat-7.0.29

下载完成后就开始正式配置了

一.安装准备

调整系统参数

在/etc/sysctl.conf配置文件中增加如下内核参数

 

net.ipv4.tcp_tw_reuse = 1 

net.ipv4.tcp_tw_recycle = 1 

net.ipv4.tcp_fin_timeout = 5 

然后sysctl -p查看一下

附:net.ipv4.tcp_syncookies = 1参数在centos6.2中本身就有,所以我没有加,没有的可自己手动填上

二.安装及配置过程

1.安装tomcat

不做演示,详情见:http://5142926.blog.51cto.com/5132926/960900

修改tomcat配置文件/conf/server.xml

<Connector port="8093" protocol="HTTP/1.1" 

connectionTimeout="20000" 

URIEncoding="UTF-8" /> 

附:即填上utp-8防止中文乱码

2.安装配置solr

(1).解压下载的apache-solr-4.0.0,在他的dist目录下有个文件叫做apache-solr-4.0.0.war,将这个文件拷贝到tomcat的webapps/目录下,并重命名为solr.war

(2).新建/opt/solr-tomcat/solr文件夹,把下载的solr包中的example/solr文件夹下面的所有文件放入到 /opt/solr-tomcat/solr里面

(3).1) 最后一步 配置添加solr.home环境变量,可以有二种方式(两种取其一即可):

a)基于环境变量

 linux在当前用户的环境变量中(.bash_profile)或在./bin/catalina.sh中添加如下环境变量:

export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr-tomcat/solr" 

b)基于JNDI

  在tomcat的conf文件夹建立Catalina文件夹,然后在Catalina文件夹中在建立localhost文件夹,在该文件夹下面建立 solr.xml,Xml:

<Context docBase="/usr/local/tomcat/webapps/solr.war" debug="0" crossContext="true" >   

  <Environment name="solr/home" type="java.lang.String" value="/opt/solr-tomcat/solr" override="true" />  

</Context>  

附:以上路径都要相互对应

(4).验证安装

访问http:192.168.1.124:8093/solr

附:tomcat默认端口8080,当然我这里改成了8093,大家注意一下

三.中文分词配置

1.将下载到的mmseg4j-1.9.0.v20120712-SNAPSHOT.zip解压,将其目录下的mmseg4j-all-1.9.0.v20120712-SNAPSHOT.jar拷贝到tomcat中webapps/solr/WEB-INF/lib中

2.在/opt/solr-tomcat/solr目录下新建dic文件夹,将解压后的data目录下的words.dic拷贝到/opt/solr-tomcat/solr/dic目录下

3.更改schema.xml(/opt/solr-tomcat/solr/collection1/conf)文件,使分词器起到作用

 

<types> 

 …… 

<!--mmseg4j field types--> 

<fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" >   

<analyzer>   

<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="/opt/solr-tomcat/solr/dic"/>   

<filter class="solr.LowerCaseFilterFactory"/>   

</analyzer>   

</fieldType>   

<fieldType name="textMaxWord" class="solr.TextField" positionIncrementGap="100" >   

<analyzer>   

<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="/opt/solr-tomcat/solr/dic"/>   

<filter class="solr.LowerCaseFilterFactory"/>   

</analyzer>   

</fieldType>   

<fieldType name="textSimple" class="solr.TextField" positionIncrementGap="100" >   

<analyzer>   

<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="/opt/solr-tomcat/solr/dic"/>   

<filter class="solr.LowerCaseFilterFactory"/>   

</analyzer>   

</fieldType> 

…… 

 </types> 

<fields> 

…… 

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

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

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

…… 

</fields> 

<copyField source="simple" dest="text"/> 

<copyField source="complex" dest="text"/> 

附:dicPath="/opt/solr-tomcat/solr/dic"是你自己的词库路径

4.重启tomcat

访问http:192.168.1.124:8093/solr

点击下方的collection1,其中有个analysis,点击,如下图

在Field Value (Index)中随便输入几行汉字,类型选择complex进行解析

至此,完工,关联分布式还在探索ing,后续......