Solr找不到图书馆

时间:2012-08-09 10:26:49

标签: java solr

我是java的新手,但我需要使用solr作为“全文搜索”引擎... 我能够安装它并成功运行它,但我需要使用“suggester组件”

这是我的建议配置:

<searchComponent name="suggester" class="solr.SpellCheckComponent">
        <lst name="spellchecker" >
            <str name="name">suggester</str>
            <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
            <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookupFactory</str>
            <str name="field">name</str>
            <!-- <str name="threshold">2</str> -->
        </lst>
    </searchComponent>

    <requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggester">
        <lst name="defaults">
            <str name="spellcheck"  >true</str>
            <str name="spellcheck.dictionary">suggester</str>
            <str name="spellcheck.count">10</str>
        </lst>
        <arr name="component" >
            <str>suggester</str>
        </arr>
    </requestHandler>

我正在使用命令java -jar start.jar(如this website)运行它并获得以下错误

INFO: Closing Searcher@1220b36 main
    fieldValueCache{lookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumulative_evictions=0}
    filterCache{lookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumulative_evictions=0}
    queryResultCache{lookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumulative_evictions=0}
    documentCache{lookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumulative_evictions=0}
Aug 9, 2012 5:14:32 PM org.apache.solr.common.SolrException log
SEVERE: org.apache.solr.common.SolrException
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:600)
    at org.apache.solr.core.CoreContainer.create(CoreContainer.java:480)
    at org.apache.solr.core.CoreContainer.load(CoreContainer.java:332)
    at org.apache.solr.core.CoreContainer.load(CoreContainer.java:216)
    at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:161)
    at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:96)
    at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
    at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.mortbay.start.Main.invokeMain(Main.java:194)
    at org.mortbay.start.Main.start(Main.java:534)
    at org.mortbay.start.Main.start(Main.java:441)
    at org.mortbay.start.Main.main(Main.java:119)
Caused by: org.apache.solr.common.SolrException: Error loading class 'org.apache.solr.spelling.suggest.tst.TSTLookupFactory
'
    at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:394)
    at org.apache.solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:409)
    at org.apache.solr.spelling.suggest.Suggester.init(Suggester.java:100)
    at org.apache.solr.handler.component.SpellCheckComponent.inform(SpellCheckComponent.java:598)
    at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:527)
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:594)
    ... 30 more
Caused by: java.lang.ClassNotFoundException: org.apache.solr.spelling.suggest.tst.TSTLookupFactory

    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    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 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:378)
    ... 35 more

我抬头看了上课,发现它是在$ SOLR_HOME / dist / apache-solr-core- [solr version] .jar 所以我试着用命令

运行Solr
java -cp $SOLR_HOME/dist/apache-solr-core-3.6.1 -jar start.jar

但是我得到了同样的错误

2 个答案:

答案 0 :(得分:2)

您不需要自定义任何内容以使用建议器,也不需要找到已包含在Solr中的类。我将从新下载的Solr 3.6.1开始(或者只是恢复您所做的更改)。问题出在您的配置中,其中包含类名称和xml元素</str>末尾之间的换行符。这就是为什么SOlr无法找到这门课程的原因。只需删除换行符,一切都会正常工作!

答案 1 :(得分:0)

TSTLookupFactory应该存在于solr-core jar中(至少在3.4.0版本中)。您可以通过打开WinRAR中的jar文件或其他能够打开RAR文件的实用程序并验证它是否在目录org / apache / solr / spelling / suggest / tst中来手动验证它(如果您使用的是其他版本)罐子。如果不是,您可能正在使用较旧版本的SOLR而且您必须升级。

然后确保solr-core jar确实在你的类路径上(以及lucene-spellchecker jar和其他solr / lucene jar)。