我有一个 apache SOLR Web 应用程序。我正在保存在我的数据库中输入的所有查询,并将查询字符串和查询字符串计数索引到建议核心。
这是格式
<doc>
<str name="id">superman</str>
<long name="searchCount_l">10</long> //superman has been queried 10 times
<doc>
<doc>
<str name="id">superman movie</str>
<long name="searchCount_l">30</long> //superman movie has been queried 30 times
<doc>
配置:
<searchComponent name="suggest" class="solr.SpellCheckComponent">
<lst name="spellchecker">
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.fst.WFSTLookupFactory</str>
<str name="buildOnCommit">true</str>
<str name="field">id</str>
</lst>
</searchComponent>
如果用户输入“sup”,我希望“超人电影”成为自动建议列表中的第一个。
我看过实现一个comparatorClass
public class MySuggestionComparator implements Comparator<SuggestWord>
但 SuggestWord 类只存储频率、分数和字符串值,而不是自定义 searchCount_l 字段的值。
问题:
我是否应该实现一个自定义搜索处理程序来查询建议核心并提升 searchCount_l 字段。但这是 Autosuggest 的好方法吗?如果我使用自定义搜索请求处理程序然后使用给定的建议组件,它会影响速度吗?
我可以使用 solr.SpellCheckComponent 的配置来实现这一点吗?
solr.SpellCheckComponent 当前正在使用哪些过滤器?