2016-04-01 20 views
0

solr 4.6.0とtomcat7でsolr suggesterを作成しようとしています。 suggesterは、solr(suName、suFea)およびファイルベースの辞書(suList)から複数のフィールドを使用する必要があります。複数のフィールドの提案が機能しています。しかし、フィールドとファイル辞書の組み合わせは、アナライザーがすべての辞書から同じタイプを必要とするため、機能しません。私は、複数のコンポーネントでこの問題を解決しようとしました。その結果、NULLポインタが返されました。Solr Autocomplete:フィールドとファイルの辞書を持つ複数の辞書

このような状況を構築するオプションはありますか?

ありがとうございました。

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> 

がエラー:

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) 

答えて

0

私は私のために次のようにsolrconfig.xml設定をSolrの6.2.0バージョン

と明確に複数の提案者の作業を使用していますし、その下にmanaged-schema.xml設定があります。 uがしたい場合、私はここにも

をJavaコードを共有することができ************************** solrconfig.xml CONFIG ****** ******************

<searchComponent class="solr.SuggestComponent" name="suggest"> 
<lst name="suggester"> 
<str name="name">ilsuggester</str> 
<str name="lookupImpl">FuzzyLookupFactory</str> 
<str name="dictionaryImpl">DocumentDictionaryFactory</str> 
<str name="field">IL_ADI</str> 
<str name="suggestAnalyzerFieldType">textgen</str> 
<str name="storeDir">suggest_fuzzy_doc_expr_dict</str> 
<str name="buildOnStartup">false</str> 
<str name="buildOnCommit">false</str> 
</lst> 

<lst name="suggester"> 
<str name="name">ilcesuggester</str> 
<str name="lookupImpl">FuzzyLookupFactory</str> 
<str name="dictionaryImpl">DocumentDictionaryFactory</str> 
<str name="field">ILCE_ADI</str> 
<str name="suggestAnalyzerFieldType">textgen</str> 
<str name="indexPath">suggestions/ilcesuggester</str> 
<str name="storeDir">suggest_fuzzy_doc_expr_dict</str> 
<str name="buildOnStartup">false</str> 
<str name="buildOnCommit">false</str> 
</lst> 

<lst name="suggester"> 
<str name="name">mahallesuggester</str> 
<str name="lookupImpl">FuzzyLookupFactory</str> 
<str name="dictionaryImpl">DocumentDictionaryFactory</str> 
<str name="field">MAHALLE_ADI</str> 
<str name="suggestAnalyzerFieldType">textgen</str> 
<str name="indexPath">suggestions/mahallesuggester</str> 
<str name="storeDir">suggest_fuzzy_doc_expr_dict</str> 
<str name="preserveSep">true</str> 
<str name="preservePositionIncrements">true</str> 
<str name="exactMatchFirst">true</str> 
<float name="threshold">0.005</float> 
<str name="buildOnStartup">false</str> 
<str name="buildOnCommit">false</str> 

</lst> 

<lst name="suggester"> 
<str name="name">sokaksuggester</str> 
<str name="lookupImpl">FuzzyLookupFactory</str> 
<str name="dictionaryImpl">DocumentDictionaryFactory</str> 
<str name="field">SOKAK</str> 
<str name="suggestAnalyzerFieldType">textgen</str> 
<str name="indexPath">suggestions/sokaksuggester</str> 
<str name="storeDir">suggest_fuzzy_doc_expr_dict</str> 
<str name="preserveSep">true</str> 
<str name="preservePositionIncrements">true</str> 
<str name="buildOnStartup">false</str> 
<str name="buildOnCommit">false</str> 
</lst> 

<lst name="suggester"> 
<str name="name">caddesuggester</str> 
<str name="lookupImpl">FuzzyLookupFactory</str> 
<str name="dictionaryImpl">DocumentDictionaryFactory</str> 
<str name="field">CADDE</str> 
<str name="suggestAnalyzerFieldType">textgen</str> 
<str name="indexPath">suggestions/caddesuggester</str> 
<str name="storeDir">suggest_fuzzy_doc_expr_dict</str> 
<str name="preserveSep">true</str> 
<str name="preservePositionIncrements">true</str> 
<str name="buildOnStartup">false</str> 
<str name="buildOnCommit">false</str> 
</lst> 

<lst name="suggester"> 
<str name="name">yolsuggester</str> 
<str name="lookupImpl">FuzzyLookupFactory</str> 
<str name="dictionaryImpl">DocumentDictionaryFactory</str> 
<str name="field">YOL_ADI</str> 
<str name="suggestAnalyzerFieldType">textgen</str> 
<str name="indexPath">suggestions/yolsuggester</str> 
<str name="storeDir">suggest_fuzzy_doc_expr_dict</str> 
<str name="preserveSep">true</str> 
<str name="preservePositionIncrements">true</str> 
<str name="exactMatchFirst">true</str> 
<float name="threshold">0.005</float> 
<str name="buildOnStartup">false</str> 
<str name="buildOnCommit">false</str> 
</lst> 


<lst name="suggester"> 
<str name="name">kapinosuggester</str> 
<str name="lookupImpl">FuzzyLookupFactory</str> 
<str name="dictionaryImpl">DocumentDictionaryFactory</str> 
<str name="field">KAPI_NO</str> 
<str name="suggestAnalyzerFieldType">textgen</str> 
<str name="indexPath">suggestions/kapinosuggester</str> 
<str name="storeDir">suggest_fuzzy_doc_expr_dict</str> 
<str name="preserveSep">true</str> 
<str name="preservePositionIncrements">true</str> 
<str name="exactMatchFirst">true</str> 
<float name="threshold">0.005</float> 
<str name="buildOnStartup">false</str> 
<str name="buildOnCommit">false</str> 
</lst> 

<lst name="suggester"> 
<str name="name">kapiadisuggester</str> 
<str name="lookupImpl">FuzzyLookupFactory</str> 
<str name="dictionaryImpl">DocumentDictionaryFactory</str> 
<str name="field">KAPI_ADI</str> 
<str name="suggestAnalyzerFieldType">textgen</str> 
<str name="indexPath">suggestions/kapiadisuggester</str> 
<str name="storeDir">suggest_fuzzy_doc_expr_dict</str> 
<str name="preserveSep">true</str> 
<str name="preservePositionIncrements">true</str> 
<str name="exactMatchFirst">true</str> 
<float name="threshold">0.005</float> 
<str name="buildOnStartup">false</str> 
<str name="buildOnCommit">false</str> 
</lst> 


</searchComponent> 

<requestHandler class="solr.SearchHandler" name="/suggest"> 
<lst name="defaults"> 
<str name="spellcheck">true</str> 
<str name="suggest">true</str> 
<str name="suggest.dictionary">ilsuggester</str> 
<str name="suggest.dictionary">ilcesuggester</str> 
<str name="suggest.dictionary">mahallesuggester</str> 
<str name="suggest.dictionary">sokaksuggester</str> 
<str name="suggest.dictionary">caddesuggester</str> 
<str name="suggest.dictionary">yolsuggester</str> 
<str name="suggest.dictionary">kapinosuggester</str> 
<str name="suggest.dictionary">kapiadisuggester</str> 

<str name="spellcheck.count">10</str> 

</lst> 
<arr name="components"> 
<str>suggest</str> 
</arr> 
</requestHandler> 


<field name="CADDE" type="textgen" omitNorms="true" omitTermFreqAndPositions="true" multiValued="true" indexed="true" stored="true"/> 

<field name="ILCE_ADI" type="text_general" omitNorms="true" omitTermFreqAndPositions="true" multiValued="true" indexed="true" stored="true"/> 

<field name="IL_ADI" type="text_general" omitNorms="true" omitTermFreqAndPositions="true" multiValued="true" indexed="true" stored="true"/> 

<field name="KAPI_ADI" type="textgen" omitNorms="true" omitTermFreqAndPositions="true" multiValued="true" indexed="true" stored="true"/> 

<field name="MAHALLE_ADI" type="textgen" omitNorms="true" omitTermFreqAndPositions="true" multiValued="true" indexed="true" stored="true"/> 

<field name="SOKAK" type="textgen" omitNorms="true" omitTermFreqAndPositions="true" multiValued="true" indexed="true" stored="true"/> 

<field name="YOL_ADI" type="textgen" omitNorms="true" omitTermFreqAndPositions="true" multiValued="true" indexed="true" stored="true"/> 

<fieldType name="textgen" class="solr.TextField" positionIncrementGap="100"> 
<analyzer type="index"> 
<tokenizer class="solr.WhitespaceTokenizerFactory"/> 
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/> 
<filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
<analyzer type="query"> 
<tokenizer class="solr.WhitespaceTokenizerFactory"/> 
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
<filter class="solr.StopFilterFactory" 
     ignoreCase="true" 
     words="stopwords.txt" 

     /> 
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/> 
<filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
</fieldType> 
関連する問題