Ich versuche einen solr suggester mit einem solr 4.6.0 und einem tomcat7 zu bauen. Der Suggester sollte mehrere Felder aus dem Solr (suName, suFea) und einem dateibasierten Wörterbuch (suList) verwenden. Der Vorschlag mit mehreren Feldern funktioniert. Aber die Kombination aus Feld und einem Dateiwörterbuch funktioniert nicht, weil der Analysator den gleichen Typ von jedem Wörterbuch benötigt. Ich habe versucht, das Problem mit mehreren Komponenten zu beheben. Das Ergebnis war ein Nullzeiger.Solr Autocomplete: Mehrere Wörterbücher mit Feld- und Dateiwörterbuch
Gibt es eine Möglichkeit, eine solche Situation zu erstellen?
Danke.
solrconfig.xml:
<searchComponent name="suggest" class="solr.SpellCheckComponent">
<lst name="spellchecker">
<str name="name">suFea</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.fst.WFSTLookupFactory</str>
<str name="suggestAnalyzerFieldType">lowercase</str>
<str name="field">features</str>
<str name="buildOnCommit">true</str>
</lst>
<lst name="spellchecker">
<str name="name">suName</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.fst.WFSTLookupFactory</str>
<str name="suggestAnalyzerFieldType">lowercase</str>
<str name="field">name</str>
<!--<float name="threshold">0.005</float>-->
<str name="buildOnCommit">true</str>
</lst>
</searchComponent>
<searchComponent name="fileSuggest" class="solr.SpellCheckComponent">
<lst name="spellchecker">
<str name="name">suList</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.fst.WFSTLookupFactory</str>
<str name="suggestAnalyzerFieldType">lowercase</str>
<str name="sourceLocation">./suggester/dict.txt</str>
<str name="fieldType">string</str>
<!--<float name="threshold">0.005</float>-->
<str name="buildOnCommit">true</str>
</lst>
</searchComponent>
<requestHandler name="/suggest" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">suName</str>
<str name="spellcheck.dictionary">suFea</str>
<str name="spellcheck.dictionary">suList</str>
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.collate">false</str>
<str name="spellcheck.count">25</str>
</lst>
<arr name="components" >
<str>suggest</str>
<str>fileSuggest</str>
</arr>
</requestHandler>
Fehler:
java.lang.NullPointerException at org.apache.solr.spelling.ConjunctionSolrSpellChecker.addChecker(ConjunctionSolrSpellChecker.java:58) at
org.apache.solr.handler.component.SpellCheckComponent.getSpellChecker(SpellCheckComponent.java:505) at
org.apache.solr.handler.component.SpellCheckComponent.prepare(SpellCheckComponent.java:123) at
org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:187) at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135) at org.apache.solr.core.SolrCore.execute(SolrCore.java:1859) at
org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:710) at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:413) at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:197) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)