Java 在自定义分数字段上排序SOLR自动建议
我有一个ApacheSolrWeb应用程序。我正在保存数据库中输入的所有查询,并将and查询字符串和查询字符串计数索引到建议核心 这是格式Java 在自定义分数字段上排序SOLR自动建议,java,solr,solrj,Java,Solr,Solrj,我有一个ApacheSolrWeb应用程序。我正在保存数据库中输入的所有查询,并将and查询字符串和查询字符串计数索引到建议核心 这是格式 <doc> <str name="id">superman</str> <long name="searchCount_l">10</long> //superman has been queried 10 times <doc> <doc> &l
<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>
超人
10//超人被询问了10次
超人电影
30//超人电影已被查询30次
配置:
<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>
建议
org.apache.solr.spelling.Suggester
org.apache.solr.spelling.suggest.fst.wfstlookupffactory
真的
身份证件
如果用户键入“sup”,我希望“超人电影”是自动建议列表中的第一个
我已经研究了如何实现一个comparatorClass
public class MySuggestionComparator implements Comparator<SuggestWord>
公共类MySuggestionComparator实现了Comparator
但是SuggestWord类只存储freq、score和string值,而不存储自定义searchCount_l字段的值
问题:
- 我是否应该实现一个自定义搜索处理程序来查询建议核心和searchCount_l字段上的boost。但这是Autosuggest的好方法吗?如果使用自定义搜索请求处理程序,然后使用给定的建议组件,会影响速度吗
- 我是否可以使用solr.SpellCheckComponent的配置来实现这一点
- solr.SpellCheckComponent中当前正在使用哪些过滤器
由于您已经在维护计数,因此可以根据计数进行搜索和排序。
这将有一个索引,该索引将随着查询需要存储而增长,但执行速度很快 否则,只需将每个搜索词作为单独的文档字段进行索引,而不存储查询。
然后,您可以使用facet组件和检索搜索建议。
默认情况下,计数将由刻面计数排序自行处理。
性能会很快,索引大小也会受到限制 是的,第一个方法是我最初的计划。好的,谢谢Jayendra,我来试试。第二种方法可能会不必要地增加索引的大小,因此我将不考虑这一点。第二种方法不会增加索引的大小,因为没有存储搜索词。所以理想情况下,索引大小将是唯一搜索词的数量。哇,这是一个很好的解决方案。我将测试实现这两者的性能。