solr4.10和solr5.x ik分词器配置,(Deprecated--2017-04-23)
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 |
?
最后的分詞效果是:
?
?
?
總結
以上是生活随笔為你收集整理的solr4.10和solr5.x ik分词器配置,(Deprecated--2017-04-23)的全部內容,希望文章能夠幫你解決所遇到的問題。