Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在自定义分数字段上排序SOLR自动建议_Java_Solr_Solrj - Fatal编程技术网

Java 在自定义分数字段上排序SOLR自动建议

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

我有一个ApacheSolrWeb应用程序。我正在保存数据库中输入的所有查询,并将and查询字符串和查询字符串计数索引到建议核心

这是格式

<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中当前正在使用哪些过滤器


您可以检查以下备选方案:-

使用带edgegrams筛选器的普通搜索生成令牌。
由于您已经在维护计数,因此可以根据计数进行搜索和排序。
这将有一个索引,该索引将随着查询需要存储而增长,但执行速度很快

否则,只需将每个搜索词作为单独的文档字段进行索引,而不存储查询。
然后,您可以使用facet组件和检索搜索建议。
默认情况下,计数将由刻面计数排序自行处理。

性能会很快,索引大小也会受到限制

是的,第一个方法是我最初的计划。好的,谢谢Jayendra,我来试试。第二种方法可能会不必要地增加索引的大小,因此我将不考虑这一点。第二种方法不会增加索引的大小,因为没有存储搜索词。所以理想情况下,索引大小将是唯一搜索词的数量。哇,这是一个很好的解决方案。我将测试实现这两者的性能。