Dictionary Solr自动完成:具有字段和文件字典的多个字典

Dictionary Solr自动完成:具有字段和文件字典的多个字典,dictionary,solr,autocomplete,tomcat7,autosuggest,Dictionary,Solr,Autocomplete,Tomcat7,Autosuggest,我正在尝试用Solr4.6.0和tomcat7构建一个SolrSuggester。建议者应该使用solr(suName,suFea)和基于文件的字典(suList)中的多个字段。具有多个字段的建议正在运行。但是from字段和文件字典的组合不起作用,因为分析器需要来自每个字典的相同类型。我试图用多个组件解决这个问题。结果是一个空指针 有没有办法建立这样的局面 谢谢 solrconfig.xml: <searchComponent name="suggest" class="solr.

我正在尝试用Solr4.6.0和tomcat7构建一个SolrSuggester。建议者应该使用solr(suName,suFea)和基于文件的字典(suList)中的多个字段。具有多个字段的建议正在运行。但是from字段和文件字典的组合不起作用,因为分析器需要来自每个字典的相同类型。我试图用多个组件解决这个问题。结果是一个空指针

有没有办法建立这样的局面

谢谢

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>

我使用的是Solr6.2.0版本

显然,多个建议者对我有用,solrconfig.xml配置如下,下面是managed-schema.xml配置。如果你愿意,我也可以在这里分享java代码

**************************solrconfig.xml配置**************************

<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>

建议者
FuzzyLookupFactory
文档字典工厂
伊卢阿迪
textgen
建议\u fuzzy\u doc\u expr\u dict
假的
假的
ilcesuggester
FuzzyLookupFactory
文档字典工厂
伊尔切阿迪
textgen
建议者
建议\u fuzzy\u doc\u expr\u dict
假的
假的
马哈勒建议者
FuzzyLookupFactory
文档字典工厂
马哈利阿迪
textgen
建议/马哈勒建议者
建议\u fuzzy\u doc\u expr\u dict
真的
真的
真的
0.005
假的
假的
索卡建议者
FuzzyLookupFactory
文档字典工厂
索卡
textgen
建议/索卡建议者
建议\u fuzzy\u doc\u expr\u dict
真的
真的
假的
假的
计票人
FuzzyLookupFactory
文档字典工厂
卡德
textgen
建议/CADDesugester
建议\u fuzzy\u doc\u expr\u dict
真的
真的
假的
假的
建议者
FuzzyLookupFactory
文档字典工厂
约尔阿迪
textgen
建议/建议者
建议\u fuzzy\u doc\u expr\u dict
真的
真的
真的
0.005
假的
假的
卡皮诺建议者
FuzzyLookupFactory
文档字典工厂
卡皮诺
textgen
建议/卡皮诺建议者
建议\u fuzzy\u doc\u expr\u dict
真的
真的
真的
0.005
假的
假的
卡皮亚迪建议者
FuzzyLookupFactory
文档字典工厂
卡皮阿迪
textgen
建议/卡皮亚迪建议者
建议\u fuzzy\u doc\u expr\u dict
真的
真的
真的
0.005
假的
假的
真的
真的
建议者
ilcesuggester
马哈勒建议者
索卡建议者
计票人
建议者
卡皮诺建议者
卡皮亚迪建议者
10
建议
<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>