首页 > 代码库 > 配置solr4.10.0和中文分词IKAnalyzer

配置solr4.10.0和中文分词IKAnalyzer

全文索引服务solr搭建。公司最近要用到。我又是个java小白。做环境的什么的不再行。就此几下操作。

大部分是看官方提供的reference.pdf来做的,也google了不少。公司还有个大哥指点。。。。笨的可以。


环境如下

OS: centos6.5

java环境: jdk1.7.0_51

tomcat版本: apache-tomcat-7.0.55
solr版本: solr-4.10.0
中文分词插件: IKAnalyzer2012FF_u1
另需准备mysql-connector-java-5.1.30.jar


配置好java环境和tomcat
注意把path.to.*替换为实际环境中对应的目录



解压solr-4.10.0.tgz同时部署tomcat webapps
cp /path.to.solr/example/webapps/solr.war /path.to.tomcat/webapps

解包solr.war 
自己解包或者运行一次tomcat也可以解包


复制依赖的包到WEB-INF/lib中
cp /path.to.solr/dist/*.jar /path.to.tomcat/webapps/solr/WEB-INF/lib
cp /path.to.solr/example/lib/ext/*.jar /path.to.tomcat/webappssolr/WEB-INF/lib

//这是个偷懒行为。不知到有什么害处。

复制solr.home出来便于管理

cp /path.to.solr/example/solr /path.to.solr.home -av



/path.to.tomcat/webapps/solr/WEB-INF/web.xml中加入

    <env-entry>
        <env-entry-name>solr/home</env-entry-name>
        <env-entry-value>/path.to.solr.home</env-entry-value>
        <env-entry-type>java.lang.String</env-entry-type>
     </env-entry>
注意替换/path.to.solr.home


切换到/path.to.solr.home
cd /path.to.solr.home
mkdir collection1/mysql

写入collection1/mysql/db1.xml
vim collection1/mysql/db1.xml

加入

<dataConfig>    <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://10.9.0.10:3306/shopnc" user="root" password="passwd"/>
    <document>
        <entity name="goods" transformer="HTMLStripTransformer" 
               query="select goods_id,goods_name,goods_spec,goods_jingle from shopnc_goods" pk="goods_id">
                <field column="goods_id" name="goods_id"/>
                <field column="goods_name" name="goods_name" />
                <field column="goods_jingle" name="goods_jingle" />
                <field column="goods_spec" name="goods_spec" />
        </entity>
    </document>
</dataConfig>


这个不解释


修改collection1/conf/solrconfig.xml文件
vim collection1/conf/solrconfig.xml

注释掉以下几项
<lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />


  <lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />


  <lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />


  <lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />

因为solr.home是复制出来的,这些相对路径都是错的。

并在config标签下加入

  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
       <str name="config">../mysql/db1.xml</str>
    </lst>
  </requestHandler>


vim collection1/conf/solrconfig.xml
添加以下内容,要跟其他field标签统一级别
   <!-- 添加需要索引的字段 -->
   <field name="goods_id" type="string" indexed="true" stored="true" required="true" />
   <field name="goods_name" type="string" indexed="true" stored="true"/>
   <field name="goods_jingle" type="string" indexed="true" stored="true"/>
   <field name="goods_spec" type="string" indexed="true" stored="true"/>
   <!-- 添加需要索引的字段 -->


修改,把id改为表的索引列名 我的是goods_id

<uniqueKey>id</uniqueKey>

并注意 若表中没有id一列 要把原来的
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
删掉 ,或者把required="true"这项去掉。


重新加载/solr或者重启tomcat

看看http://localhost:8080/solr



在看看数据库链接 选择collection1 =>data import=>excute

 

 Processed: 20

这里代表solr录入了数据

若为0就去logging哪里看看什么情况。



加入中文分词

解包IK Analyzer 2012FF_hf1.zip
复制jar包到/path.to.tomcat/webapps/solr/WEB-INF/lib中
cp IKAnalyzer2012FF_u1.jar /path.to.tomcat/webapps/solr/WEB-INF/lib
创建文件夹 并复制词典到solr/WEB-INF/classes
mkdir /path.to.tomcat/webapps/solr/WEB-INF/classes

cp IKAnalyzer.cfg.xml  stopword.dic /path.to.tomcat/webapps/solr/WEB-INF/classes

要用其他词典的自己google吧。



在/path.to.solr.home/collection1/conf/schema.xml的schema标签结束之前加入以下内容
    <!-- 自定义添加IK Analyzer 分词插件-->
<fieldType name="text" class="solr.TextField"> 
<analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>




重新加载solr  试试分词插件。Field/Type中选择text和上一步中配置的name一样就行。



并从/path.to.solr.home/collection1/conf/solrconfig.xml上做一次修改

vim /path.to.solr.home/collection1/conf/solrconfig.xml
   <!-- 添加需要索引的字段 -->
   <field name="goods_id" type="string" indexed="true" stored="true" required="true" />
   <field name="goods_name" type="string" indexed="true" stored="true"/>
   <field name="goods_jingle" type="string" indexed="true" stored="true"/>
   <field name="goods_spec" type="string" indexed="true" stored="true"/>
除了primary以外都把type="string"改为type="text"


如果出现设么问题在logging中都会有提示。

配置solr4.10.0和中文分词IKAnalyzer