Ubuntu 14.04
我使用sudo apt-get install solr-tomcat安装。
似乎“核心”功能已安装并且正在运行,但是没有任何插件(或者我只是不知道在哪里看)。
我正在尝试使用提取功能,这是一个插件。
当我尝试时,我得到了
org.apache.solr.common.SolrException:org.apache.solr.core.RequestHandlers $ LazyRequestHandlerWrapper.handleRequest(RequestHandlers)处的org.apache.solr.core.RequestHandlers $ LazyRequestHandlerWrapper.getWrappedHandler(RequestHandlers.java:260)处的延迟加载错误.java:242)位于org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)位于org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365)位于org.apache.solr。 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)上的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)上的servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260)在org.apache.catalina的org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)处。org.apache.catalina.com的core.StandardContextValve.invoke(StandardContextValve.java:191).org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)的core.StandardHostValve.invoke(StandardHostValve.java:127)在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)的org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)处在org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:861)在org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:606)在org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489) )在java.lang.Thread.run(Thread.java:745)由以下原因引起:org.apache.solr.common.SolrException:加载类’solr.extraction.ExtractingRequestHandler’时出错在org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:414)在org.apache.solr.core.SolrCore.createInstance(SolrCore.java:419)在org.apache.solr.core.SolrCore.createRequestHandler (SolrCore.java:455)在org.apache.solr.core.RequestHandlers $ LazyRequestHandlerWrapper.getWrappedHandler(RequestHandlers.java:251)… 16个其他原因:java.lang.ClassNotFoundException:java的solr.extraction.ExtractingRequestHandler。 net.URLClassLoader $ 1.run(URLClassLoader.java:366)在java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)在java.security.AccessController.doPrivileged(本机方法)在java.net.URLClassLoader.findClass( URLClassLoader.java:354)位于java.lang.ClassLoader.loadClass(ClassLoader.java:425)位于java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789)在java.lang.ClassLoader.loadClass(ClassLoader.java:358)在java.lang.Class.forName0(本机方法)在java.lang.Class.forName(Class.java:274)在org.apache.solr .core.SolrResourceLoader.findClass(SolrResourceLoader.java:398)…还有19个
我手动下载了最新版本以进行调查,并确实找到了“提取”目录,并在其中找到了名为ExtractingRequestHandler.java的文件。
我不是Java人。我寻找了与错误指示类似的路径,并发现“ / usr / share / maven-repo / org / apache / solr / solr-core”,它与“ org.apache.solr.core”并不严格对应。所以,我很犹豫在这里承担任何责任。
Solr正在搜索“提取”目录-我只是不确定在哪里。
我的solrconfig.xml文件有这个
<requestHandler name="/update/extract" startup="lazy" class="solr.extraction.ExtractingRequestHandler" > <lst name="defaults"> <!-- All the main content goes into "text"... if you need to return the extracted text or do highlighting, use a stored field. --> <str name="fmap.content">text</str> <str name="lowernames">true</str> <str name="uprefix">ignored_</str> <!-- capture link hrefs but ignore div attributes --> <str name="captureAttr">true</str> <str name="fmap.a">links</str> <str name="fmap.div">ignored_</str> </lst> </requestHandler>
我尝试将提取目录复制到以下两个目录中:/ usr / share / maven-repo / org / apache / solr / / etc / solr
希望其中一个是“主” solr目录,没有运气。
我加了
<lib dir="/var/lib/solr/contrib/extraction/src/java/org/apache/solr/handler/extraction" />
到我的solrconfig.xml并在tomcat日志中观察到了这一点:
信息:将’文件:/var/lib/solr/contrib/extraction/src/java/org/apache/solr/handler/extraction/ExtractingRequestHandler.java’添加到类加载器
仍然没有运气。
提前致谢。
编辑:
我检查了tomcat日志,然后看到以下内容:
2014年11月23日12:53:44 org.apache.solr.core.RequestHandlers initHandlersFromConfig信息:添加了懒惰的requestHandler:solr.extraction.ExtractingRequestHandler
这很奇怪,因为它表明在solr.extraction.ExtractingRequestHandler处创建了一个“ lazy requestHandler”,它与错误相矛盾:
加载类’solr.extraction.ExtractingRequestHandler’时出错
如果从上面的配置中删除“ startup =’lazy’”属性,则当我重新启动Tomcat时,将出现错误:
严重:org.apache.solr.common.SolrException:加载类’solr.extraction.ExtractingRequestHandler’时出错
似乎您正在将源目录添加到类路径-您需要将具有其依赖项的编译版本添加到类路径。
在正态分布中(来自Solr主页),该文件位于中contrib/extraction/lib,它还捆绑了提取模块的其他依赖项。
contrib/extraction/lib
在该目录下的README.txt中:
入门 您将需要启动并运行Solr。然后,只需将解压缩JAR文件以及Tika依赖项(在./lib文件夹中)添加到Solr Home lib目录中。请参阅http://wiki.apache.org/solr/ExtractingRequestHandler以获取有关将其挂接和配置的更多详细信息。
您将需要启动并运行Solr。然后,只需将解压缩JAR文件以及Tika依赖项(在./lib文件夹中)添加到Solr Home lib目录中。请参阅http://wiki.apache.org/solr/ExtractingRequestHandler以获取有关将其挂接和配置的更多详细信息。
尽管您似乎正在按照旧版本进行操作(从您的请求处理程序名称)。在目前的配置是在社区维基详细,并有在发行包,以及一个完整的例子。
检索和提取文件:
$ wget http://<mirror>/lucene/solr/4.10.2/solr-4.10.2.tgz $ tar xvzf solr-4.10.2.tgz $ cd solr-4.10.2/contrib/extraction/lib/ $ ls apache-mime4j-core-0.7.2.jar pdfbox-1.8.4.jar apache-mime4j-dom-0.7.2.jar poi-3.10.1.jar aspectjrt-1.6.11.jar poi-ooxml-3.10.1.jar bcmail-jdk15-1.45.jar poi-ooxml-schemas-3.10.1.jar bcprov-jdk15-1.45.jar poi-scratchpad-3.10.1.jar boilerpipe-1.1.0.jar rome-0.9.jar commons-compress-1.7.jar tagsoup-1.2.1.jar dom4j-1.6.1.jar tika-core-1.5.jar fontbox-1.8.4.jar tika-parsers-1.5.jar icu4j-53.1.jar tika-xmp-1.5.jar isoparser-1.0-RC-1.jar vorbis-java-core-0.1.jar jdom-1.0.jar vorbis-java-tika-0.1.jar jempbox-1.8.4.jar xercesImpl-2.9.1.jar jhighlight-1.0.jar xmlbeans-2.6.0.jar juniversalchardet-1.0.3.jar xmpcore-5.1.2.jar metadata-extractor-2.6.2.jar xz-1.4.jar