如何SOLR拼写检查建议不按频率进行排序?(How to sort SOLR spellCheck

2019-08-03 01:25发布

如果你搜索我的分级指数ahve得到的第一个拼写检查修正, 因为出现多名具有索引(我有500个文件索引)。
如果您搜索ahve在我的本地索引你必须作为第一个拼写检查修正,因为比出现在索引中的任何其他字。 (我有21个文件索引)。
这是一个简单的哑从我的分期指数返回

<lst name="ahve">
<int name="numFound">5</int>
<int name="startOffset">0</int>
<int name="endOffset">4</int>
<int name="origFreq">0</int>
<arr name="suggestion">
<lst>
<str name="word">the</str>
<int name="freq">112</int>
</lst>
<lst>
<str name="word">are</str>
<int name="freq">67</int>
</lst>
<lst>
<str name="word">have</str>
<int name="freq">44</int>
</lst>
<lst>
<str name="word">acne</str>
<int name="freq">10</int>
</lst>
<lst>
<str name="word">ache</str>
<int name="freq">3</int>
</lst>
</arr>
</lst>

并加入spellcheck.onlyMorePopular=truespellcheck.onlyMorePopular=false不会改变任何东西。
有没有办法不被外表的频率返回的建议进行排序?

Answer 1:

默认情况下,拼写检查结果被返回基于所述的Levenshtein距离串式,然后频率,或频率,然后得分。

您可以通过编写实现自定义比较指定自己的排序方法Comparator 。 然后,提供了方法,将字段的名称comparatorClass在solrconfig.xml中。

<lst name="spellchecker">
  <str name="name">freq</str>
  <str name="field">lowerfilt</str>
  <str name="spellcheckIndexDir">spellcheckerFreq</str>
  <!-- comparatorClass be one of:
     1. score (default)
     2. freq (Frequency first, then score)
     3. A fully qualified class name
   -->
  <str name="comparatorClass">my.custom.ComparatorClass</str>
  <str name="buildOnCommit">true</str>
</lst>

一对夫妇更建议:

  • 现场spellcheck.onlyMorePopular不影响排序顺序。 此字段检查每个建议的查询结果,并显示只有用最查询结果的建议, 即使正确的建议存在 。 请谨慎使用。

  • 确保删除禁用词,如“的”,“那个”,等等,通过传递数据通过StopFilterFactory双方你requestHandler的索引和查询的一面。

请参阅: http://wiki.apache.org/solr/SpellCheckComponent以获取更多信息。



文章来源: How to sort SOLR spellCheck suggestions NOT by frequency?