1. 程式人生 > >配置solr過程中遇到的問題及解決方案

配置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 

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: org.apache.solr.common.SolrException: Plugin init failure for [schema.xml] analyzer/tokenizer: Error loading class ’com.chenlb.mmseg4j.solr.MMSegTokenizerFactory’ at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:177) 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) ... 16 more Caused by: org.apache.solr.common.SolrException: Error loading class ’com.chenlb.mmseg4j.solr.MMSegTokenizerFactory’ at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:464) 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) ... 20 more 解決方法是

下載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