A:配置IK-Analyzer:
1、下载wltea-IK-Analyzer-2012FF-master,将IK-Analyzer-2012FF\dist中的IKAnalyzer2012_FF.jar和IKAnalyzer2012FF_u1.jar拷贝到:/home/software/solr-5.3.1/server/solr-webapp/webapp/WEB-INF/lib (注意:这个wltea-IK-Analyzer-2012FF-master针对solr-4.10的还可以,但是针对其它版本的就不给力了,但是配置分词的方式大致相同)
wltea-IK-Analyzer-2012FF-master的内容如下:
2、将IK-Analyzer-2012FF\src中ext.dic、IKAnalyzer.cfg.xml、stopword.dic拷贝到/home/software/solr-5.3.1/server/solr-webapp/webapp/WEB-INF/classes中,拷贝完成之后的效果如下:
3、进入:/home/software/solr-5.3.1/server/solr/docdetection/conf,修改schema.xml,配置域的类型fieldType:
即在文件schema.xml中添加ik分词器相关的内容:
<fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> |
4、配置field(相当于是要增加的索引字段),使用中文分词器的fieldType.即:
<!--定义field,指定field的type属性为text_ik--> <field name="title_ik" type="text_ik" indexed="true" stored="true" /> <field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/> |
只有指定了type=”text_ik“了,才表示要进行分词。
重启solr
发现报如下错误:
这是由于ik_不支持solr5.3导致的。
解决办法是:https://github.com/EugenePig/ik-analyzer-solr5 下载这个然后直接编译 按照reademe 的说明配置即可
5、下载zip版本,按照github上的说明,进行如下操作:
使用maven进行打包:
如果是在JDK8环境下,执行:
source /etc/profile
mvn clean install
因为我的JDK环境是JDK8,所以执行下面的操作(注意尽可能不要再本地执行下面的命令,若可以,就直接在服务器上执行吧,不然便宜出来的ik的jar包可能还是不兼容服务器上的版本,具体的问题会在本文下面介绍,并含有解决方案):
如果是在JDK7环境下,执行:
mvn clean -Djavac.src.version=1.7-Djavac.target.version=1.7 install
然后拷贝ik-analyzer-solr5-5.x.jar到server/solr-webapp/webapp/WEB-INF/lib 这个目录下:
在solrCore的schema.xml中进行如下配置(在实际过程中,我没有这样按照github上说的这两种方式配置分词):
<fieldType name="text_ik" class="solr.TextField"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" /> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" /> </analyzer> </fieldType> |
或者:
<fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> |
如果在执行mvn clean install的时候报如下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project ik-analyzer-solr5: Fatal error compiling: invalid target release: 1.8 -> [Help 1] |
请检查你的 JAVA_HOME 设置,如果 JAVA_HOME设置存在, 它可能不是JAVA8.
SolrCoreInitialization Failures
- docdetection: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: JVM Error creating core [docdetection]: org/wltea/analyzer/lucene/IKAnalyzer : Unsupported major.minor version 52.0
出现上面的这个问题是本地编译的jkd版本和服务器上的jdk版本不一致导致的,可以通过在服务器上解决来解决这个问题! (比如:我本地使用的jdk版本是:1.8.0_111,服务器上使用的版本是:1.8.0_121,都是JDK1.8,但是发现并不能通用)
下载apache-maven-3.3.9-bin.tar.gz
tar -zxvf apache-maven-3.3.9-bin.tar.gz
配置环境变量:
#export JAVA_HOME=/usr/java/jdk1.7.0_79 export JAVA_HOME=/usr/local/jdk1.8.0_121 export MAVEN_HOME=/home/software/apache-maven-3.3.9 export MONGODB_HOME=/usr/local/mongodb export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin:$MONGODB_HOME/bin:$MAVEN_HOME/bin |
将ik-analyzer-solr5-master.zip上传到solr所在的服务器。使用maven对ik-analyzer-solr5-master重新打包,
unzip ik-analyzer-solr5-master.zip
cd ik-analyzer-solr5-master
在执行之前一定要执行下面的操作,不然可能会报错
source /etc/profile
然后再执行下面的命令
mvn clean install
假设解压后的文件夹是:/home/software/ik-analyzer-solr5-master,里面的内容是:
然后执行maven命令:mvn clean install
root@iZm5effj2tm01xy2qqmnlzZ:/home/software/ik-analyzer-solr5-master # cd target/
root@iZm5effj2tm01xy2qqmnlzZ:/home/software/ik-analyzer-solr5-master/target# cp ik-analyzer-solr5-5.x.jar /home/software/solr-5.3.1/server/solr-webapp/webapp/WEB-INF/lib/
root@iZm5effj2tm01xy2qqmnlzZ:/home/software/ik-analyzer-solr5-master/target# cd classes/
root@iZm5effj2tm01xy2qqmnlzZ:/home/software/ik-analyzer-solr5-master/target/classes# rm -rf org/
root@iZm5effj2tm01xy2qqmnlzZ:/home/software/ik-analyzer-solr5-master/target/classes#cp -R * /home/software/solr-5.3.1/server/solr-webapp/webapp/WEB-INF/classes/
root@xxx:/home/software/solr-5.3.1#cd/home/software/solr-5.3.1
root@xxx:/home/software/solr-5.3.1#bin/solr stop –all
root@xxx:/home/software/solr-5.3.1#bin/solr start -all -noprompt
对/home/software/solr-5.3.1/server/solr (这个地方相当于是solrhome)下所有的schema.xml配置如下内容:
<fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> |
在schema.xml中的配置如下:
再次到浏览器访问:http://localhost:8983/solr,发现不报错了
接着同步mongodb的数据:
mongo-connector -m localhost:27017 --auto-commit-interval=1 -t http://localhost:8983/solr/docdetection -d solr_doc_manager |
最后的分词效果是: