Solr:针对特定自动完成的多个建议

Solr:针对特定自动完成的多个建议,solr,autocomplete,autosuggest,Solr,Autocomplete,Autosuggest,我有以下问题: 我有一个Solr core和多个索引。例如,我的网站上有3种不同的搜索类型: 汽车 DVD 所有项目(汽车、DVD和其他项目) 我有3号的自动建议。1和2到目前为止还没有任何建议。但我想为汽车安装一个额外的suggester,这样当我只想在汽车中搜索时,suggester会向我显示只属于汽车的单词,而不是DVD等。我正在考虑新的requestHandler并执行搜索,因为我需要这两个特定字段来填充建议,其中Nr.3搜索是通过字典自动填充的。 在一个Solr核心中是否可能有两个或多

我有以下问题: 我有一个Solr core和多个索引。例如,我的网站上有3种不同的搜索类型:

  • 汽车
  • DVD
  • 所有项目(汽车、DVD和其他项目)
  • 我有3号的自动建议。1和2到目前为止还没有任何建议。但我想为汽车安装一个额外的suggester,这样当我只想在汽车中搜索时,suggester会向我显示只属于汽车的单词,而不是DVD等。我正在考虑新的requestHandler并执行搜索,因为我需要这两个特定字段来填充建议,其中Nr.3搜索是通过字典自动填充的。
    在一个Solr核心中是否可能有两个或多个不同的建议?对于自动完成和建议,如何使用特定搜索类型的特定字段,以便在这些建议中只列出汽车属性?

    当然可以。只需设置如下两个搜索组件:

    <searchComponent name="suggest" class="solr.SuggestComponent">
       <lst name="suggester">
          <str name="name">suggest_cars</str>
          <str name="lookupImpl">BlendedInfixLookupFactory</str>
          <str name="blenderType">linear</str>
          <str name="dictionaryimpl">DocumentDictionaryFactory</str>
          <str name="field">cars_suggest</str>
          <str name="weightField">popularity</str>
          <str name="suggestAnalyzerFieldType">text_suggest</str>
          <str name="queryAnalyzerFieldType">phrase_suggest</str>
          <str name="indexPath">cars_suggest</str>
          <str name="buildOnStartup">false</str>
          <str name="buildOnCommit">false</str>
          <bool name="exactMatchFirst">true</bool>
       </lst> 
       <lst name="suggester">
          <str name="name">suggest_all</str>
          <str name="lookupImpl">BlendedInfixLookupFactory</str>
          <str name="blenderType">linear</str>
          <str name="dictionaryimpl">DocumentDictionaryFactory</str>
          <str name="field">suggest</str>
          <str name="weightField">popularity</str>
          <str name="suggestAnalyzerFieldType">text_suggest</str>
          <str name="queryAnalyzerFieldType">phrase_suggest</str>
          <str name="indexPath">all_suggest</str>
          <str name="buildOnStartup">false</str>
          <str name="buildOnCommit">false</str>
          <bool name="exactMatchFirst">true</bool>
       </lst> 
    

    这太棒了。成功了!非常感谢你,詹姆斯:)虽然我在字典和过滤器上做了一些不同的配置,因为视图和外观对我来说不是最优的。但功能正是我所需要的:)谢谢James,对于所有的新手,这里的问题是两个不同字段的索引路径不同,在数据目录中,将使用针对indexpath给定的名称创建文件夹。如果使用相同的目录,则对于第二个组件,solr将无法创建所需的文件bcz of write.lock
    <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
      <lst name="defaults">
          <str name="echoParams">all</str>
          <str name="wt">json</str>
          <str name="indent">false</str>
          <str name="suggest">true</str>
          <str name="suggest.count">10</str>
      </lst>
      <arr name="components">
        <str>suggest</str>
      </arr>
    </requestHandler>
    
    <fieldType name="phrase_suggest" class="solr.TextField" positionIncrementGap="100">
            <analyzer>
              <tokenizer class="solr.KeywordTokenizerFactory"/>
              <filter class="solr.LowerCaseFilterFactory"/>
              <filter class="solr.TrimFilterFactory"/>
            </analyzer>
        </fieldType>
    
    <fieldType name="text_suggest" class="solr.TextField" positionIncrementGap="100">
          <analyzer>
                <tokenizer class="solr.StandardTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.ASCIIFoldingFilterFactory"/>
                <filter class="solr.EnglishPossessiveFilterFactory"/>
          </analyzer>
        </fieldType>
    
    http://localhost:8983/solr/collection0/suggest?q=peug&suggest.dictionary=suggest_cars