配置solr過程中遇到的問題及解決方案
1.由於缺少solr原始檔報錯
解決方法是把solr原始檔包裡面的資料夾contrib和dist複製到solrhome裡的core的conf目錄下就行了。
我的命令: 進入solr軟體的根目錄 (這個solr目錄不是tomcat裡的solr目錄,我的目錄為 /home/hadoop/solr/ )
cp -rf contrib/ /usr/tomcat/solr/collection1/conf/
cp -rf dist/ /usr/tomcat/solr/collection1/conf/
並修改 tomcat/solr/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" />
修改成自己相應的路徑。
2.由於缺少mmseg4j庫檔案報錯如下:
org.apache.solr.common.SolrException: Plugin init failure for [schema.xml] fieldType "text_cn": Plugin init failure for [schema.xml] analyzer/tokenizer: Error loading class ’com.chenlb.mmseg4j.solr.MMSe
gTokenizerFactory’
at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:177)
at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:476)
at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:176)
at org.apache.solr.schema.ClassicIndexSchemaFactory.create(ClassicIndexSchemaFactory.java:62)
at org.apache.solr.schema.IndexSchemaFactory.buildIndexSchema(IndexSchemaFactory.java:36)
at org.apache.solr.core.CoreContainer.createFromZk(CoreContainer.java:893)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:982)
at org.apache.solr.core.CoreContainer$2.call(CoreContainer.java:597)
at org.apache.solr.core.CoreContainer$2.call(CoreContainer.java:592)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at
下載mmseg4j包放到solr工程目錄庫中比如我的是/home/apache-tomcat-6.0.37/webapps/solr/WEB-INF/lib/
solr4.0以下版本請下載mmseg4j1.8.5以下版本,解壓後複製檔案mmseg4j-all-1.8.5.jar到apache-tomcat-6.0.37/webapps/solr/WEB-INF/lib/下面
solr4.0以上版本請下載mmseg4j1.9.0以上版本,解壓後複製檔案mmseg4j-analysis-1.9.1.jar mmseg4j-core-1.9.1.jar mmseg4j-solr-1.9.1.jar到apache-tomcat-6.0.37/webapps/solr/WEB-INF/lib/下面
然後重新啟動tomcat即可解決。
如果版本不按上面說的配置有可能報下面的錯誤:
4727 [coreLoadExecutor-4-thread-1] ERROR org.apache.solr.core.CoreContainer ?.null:java.lang.NoClassDefFoundError: org/apache/solr/analysis/BaseTokenizerFactory at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:791) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2854) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647) at java.lang.ClassLoader.loadClass(ClassLoader.java:410) at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789) at java.lang.ClassLoader.loadClass(ClassLoader.java:410) at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:266) at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:448) at org.apache.solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:558) at org.apache.solr.schema.FieldTypePluginLoader$2.create(FieldTypePluginLoader.java:342) at org.apache.solr.schema.FieldTypePluginLoader$2.create(FieldTypePluginLoader.java:335) at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:151) at org.apache.solr.schema.FieldTypePluginLoader.readAnalyzer(FieldTypePluginLoader.java:362) at org.apache.solr.schema.FieldTypePluginLoader.create(FieldTypePluginLoader.java:86) at org.apache.solr.schema.FieldTypePluginLoader.create(FieldTypePluginLoader.java:43) at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:151) at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:476) at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:176) at org.apache.solr.schema.ClassicIndexSchemaFactory.create(ClassicIndexSchemaFactory.java:62) at org.apache.solr.schema.IndexSchemaFactory.buildIndexSchema(IndexSchemaFactory.java:36) at org.apache.solr.core.CoreContainer.createFromZk(CoreContainer.java:893) at org.apache.solr.core.CoreContainer.create(CoreContainer.java:982) at org.apache.solr.core.CoreContainer$2.call(CoreContainer.java:597) at org.apache.solr.core.CoreContainer$2.call(CoreContainer.java:592) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722) Caused by: java.lang.ClassNotFoundException: org.apache.solr.analysis.BaseTokenizerFactory at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) ... 38 more 這是因為4.0以上的版本要適配mmseg4j1.9.0以上版本
3.由於solr找不到資料檔案報錯
[http-8080-1] ERROR org.apache.solr.servlet.SolrDispatchFilter ?.null:org.apache.solr.common.SolrException: SolrCore ’collection1’ is not available due to init failure: Plugin init failure for
請檢查放在solrhome下面的配置檔案solr.xml
<cores adminPath="/admin/cores" defaultCoreName="collection1" host="${host:172.18.84.57}" hostPort="${jetty.port:8080}" hostContext="${hostContext:solr}" zkClientTimeout="${zkClientTimeout:15000}"> <core name="collection1" instanceDir="collection1" /> </cores> 標紅的是您的core資料夾名稱,確認和實際的一樣,一般在這個資料夾下面:
[[email protected] solr]# pwd /home/apache-tomcat-6.0.37/solrhome/solr [[email protected] solr]# ls backup bin collection1 README.txt solr.xml zoo.cfg 修改成一致並確保有許可權讀取和執行就行。
4.應該注意的是要把solr原始檔裡面的jar包儘量都複製到apache-tomcat-6.0.37/webapps/solr/WEB-INF/lib/下面以免由於缺少jar包而無法正常執行。
總結:遇到問題一個一個的解決不怕問題多就怕你沒思路。要冷靜對待一個一個的突破,按照自己的思路一個一個來再蛋疼的問題都能解決。
--------------------- 本文來自 zhuzhihongNO1 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/tomcat_zhu/article/details/79010459?utm_source=copy