将jar文件添加到太阳黑子solr

时间:2012-12-04 07:13:06

标签: solr sunspot sunspot-solr

我们目前正在使用太阳黑子1.3.3宝石。我们在solrConfig.xml中使用JaroWinklerDistance配置了solr spellchecker组件,如下所示。但是,它会导致ClassNotFoundException。我们该如何处理?是否有一些我们需要复制jar文件的特定目录?如何配置通过太阳黑子管理的码头/ solr?

<lst name="spellchecker">
     <str name="name">jarowinkler</str>
     <str name="field">spell</str>
     <str name="distanceMeasure">
       org.apache.lucene.search.spell.JaroWinklerDistance
     </str>
     <str name="spellcheckIndexDir">./spellchecker</str>
</lst>

我们已经尝试将lucene-spellchecker **。jar放在rails_app_root / solr / lib下,但它不起作用。

由于

异常堆栈跟踪

  

HTTP错误:500

     

solr配置中的严重错误。

     

检查日志文件以获取有关可能的更多详细信息   错。

     

如果您希望solr在配置错误后继续,请更改:

     

     

in null

     

----------------------------------------------- -------------- org.apache.solr.common.SolrException:加载类时出错              org.apache.lucene.search.spell.JaroWinklerDistance            'at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:373)     在   org.apache.solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:388)     在   org.apache.solr.spelling.AbstractLuceneSpellChecker.init(AbstractLuceneSpellChecker.java:95)     在   org.apache.solr.spelling.IndexBasedSpellChecker.init(IndexBasedSpellChecker.java:56)     在   org.apache.solr.handler.component.SpellCheckComponent.inform(SpellCheckComponent.java:274)     在   org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:486)     在org.apache.solr.core.SolrCore。(SolrCore.java:588)at at   org.apache.solr.core.CoreContainer $ Initializer.initialize(CoreContainer.java:137)     在   org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:83)     在   org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:99)     在   org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)     在   org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:594)     在org.mortbay.jetty.servlet.Context.startContext(Context.java:139)     在   org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218)     在   org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500)     在   org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)     在   org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)     在   org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:147)     在   org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:161)     在   org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)     在   org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:147)     在   org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)     在   org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)     在org.mortbay.jetty.Server.doStart(Server.java:210)at   org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)     在org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:929)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:616)at   org.mortbay.start.Main.invokeMain(Main.java:183)at   org.mortbay.start.Main.start(Main.java:497)at   org.mortbay.start.Main.main(Main.java:115)引起:   抛出java.lang.ClassNotFoundException:              org.apache.lucene.search.spell.JaroWinklerDistance                 at java.net.URLClassLoader $ 1.run(URLClassLoader.java:217)at java.security.AccessController.doPrivileged(Native Method)at at   java.net.URLClassLoader.findClass(URLClassLoader.java:205)at   java.lang.ClassLoader.loadClass(ClassLoader.java:321)at   java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:615)at at   java.lang.ClassLoader.loadClass(ClassLoader.java:266)at   java.lang.Class.forName0(Native Method)at   java.lang.Class.forName(Class.java:264)at   org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:357)     ... 32更多RequestURI = / solr / admin /

     

由Jetty提供://

1 个答案:

答案 0 :(得分:5)

该课程应包含在以下其中一个罐子中: -

  • 的solr-lucene的-拼写检查-X.X.0.jar
  • 的lucene-拼写检查-X.X.0.jar

因此,当solr启动并加载外部jar时,您可以确认jar是否包含在类路径中 如果您在Jetty中执行它,您可以更新SolrConfig.xml中的lib指令以查看库所在的库。

您还可以查看此Interesting thread

将它放在一行: -

<str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>