Rails - 如何在 sunspot 中使用 solr SuggestComponent

Rails - How to use solr SuggestComponent with sunspot

我正在使用 sunspot_rails gem 将 Solr 搜索库与 Rails 一起使用。当用户像这样在我的应用程序中输入搜索词时,我会尝试向他们显示建议

但我无法让 SuggestComponentsunspot 一起工作。我引用了这个 guide for suggest component 并将以下内容添加到 solrconfig.xml

  <searchComponent name="suggest" class="solr.SuggestComponent">
    <lst name="suggester">
      <str name="name">mySuggester</str>
      <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
      <str name="dictionaryImpl">DocumentDictionaryFactory</str>
      <str name="field">name</str>
      <str name="weightField">price</str>
      <str name="contextField">cat</str>
      <str name="suggestAnalyzerFieldType">string</str>
      <str name="buildOnStartup">false</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>
    </lst>
    <arr name="components">
      <str>suggest</str>
    </arr>
  </requestHandler>

当我尝试上下文过滤建议查询时

http://localhost:8982/solr/development/suggest?suggest=true&suggest.build=true&suggest.dictionary=mySuggester&wt=json&suggest.q=c&suggest.cfq=memory

我得到的是空响应

{
   "responseHeader":{
      "status":0,
      "QTime":43
   },
   "command":"build",
   "suggest":{
      "mySuggester":{
         "c":{
            "numFound":0,
            "suggestions":[

            ]
         }
      }
   }
}

知道我做错了什么吗?任何人都可以帮助我如何将 SuggestComponent 与 sunspot gem 一起使用吗?提前致谢

您不需要使用solr 的建议组件。您只需要确保您的 solr 返回部分关键字搜索的结果,这可以通过添加边缘 Ngram 或 Ngram 过滤器工厂(为此提供大量教程)来完成,同时确保您使用 bundle exec susnspot:solr:start因为那将使用保存在您的代码库中的配置。然后就可以使用Twitter typeahead实现自动完成了。