小编Mar*_*nen的帖子

Google 喜欢使用 Solr 进行自动提示/预先输入(建议关键字/短语)

要求

我需要在搜索框中提供类似 google 的建议。Solr 已经是给定的。结果应如下所示:

搜索关键词亚历
结果亚历山大Behling,亚历山大有人...

searchterm cab
结果电缆、高压电缆、电缆剪 在此处输入图片说明 目的是将短语作为建议,而不是整个字段或摘录。查询应该不区分大小写,Alex应该与alex具有相同的结果,但搜索结果(建议)必须具有原始大小写。
建议必须可按类别过滤,我们在一个索引中有多个域的结果,并且结果应按包含该域的特定字段进行过滤。contextField仅适用于“AnalyzingInfixLookupFactory 和 BlendedInfixLookupFactory 当前支持此功能,当由 DocumentDictionaryFactory 支持时。”

我尝试了三种方法

1.方法:FreeTextLookupFactory

config (no special schema changes): 
     <searchComponent name="suggest" class="solr.SuggestComponent">
        <lst name="suggester">
          <str name="name">default</str>
          <str name="lookupImpl">FreeTextLookupFactory</str> 
          <str name="dictionaryImpl">DocumentDictionaryFactory</str>
          <str name="field">content</str>
          <str name="ngrams">3</str>
          <str name="separator"> </str>
          <str name="suggestFreeTextAnalyzerFieldType">text_general</str>
        </lst>
    </searchComponent>

    <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy" >
      <lst name="defaults">
        <str name="suggest">true</str>
        <str name="suggest.count">10</str>
        <str name="suggest.dictionary">default</str>        
        <str name="echoParams">explicit</str>
      </lst>
      <arr name="components">
         <str>suggest</str>
      </arr>
    </requestHandler>
Run Code Online (Sandbox Code Playgroud)

这很合理,但只能提供单个单词。
searchterm …

search solr autocomplete typeahead

7
推荐指数
1
解决办法
83
查看次数

标签 统计

autocomplete ×1

search ×1

solr ×1

typeahead ×1