首页 > 代码库 > 配置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.55solr版本: 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