Rails - 如何在 sunspot 中使用 solr SuggestComponent
Rails - How to use solr SuggestComponent with sunspot
我正在使用 sunspot_rails
gem 将 Solr 搜索库与 Rails 一起使用。当用户像这样在我的应用程序中输入搜索词时,我会尝试向他们显示建议
但我无法让 SuggestComponent
与 sunspot
一起工作。我引用了这个 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实现自动完成了。
我正在使用 sunspot_rails
gem 将 Solr 搜索库与 Rails 一起使用。当用户像这样在我的应用程序中输入搜索词时,我会尝试向他们显示建议
但我无法让 SuggestComponent
与 sunspot
一起工作。我引用了这个 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实现自动完成了。