Jad*_*ran 2 solr spell-checking
如果您在我的暂存索引上搜索ahve,您会得到the作为第一个拼写检查更正,因为出现的内容比索引中的内容多(我索引了 500 个文档)。如果您在我的本地索引上
搜索ahve,您会得到had作为第一个拼写检查更正,因为has比索引中的任何其他单词出现的次数都多。(我有 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>
Run Code Online (Sandbox Code Playgroud)
添加spellcheck.onlyMorePopular=true或spellcheck.onlyMorePopular=false不会改变任何东西。
有没有办法不按出现频率对返回的建议进行排序?
小智 5
默认情况下,拼写检查结果根据 Levenshtein 字符串距离公式返回,然后返回频率,或者根据频率返回分数。
您可以通过编写实现 的自定义比较器来指定自己的排序方法Comparator。然后,将该方法的名称提供给comparatorClasssolrconfig.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>
Run Code Online (Sandbox Code Playgroud)
还有一些建议:
该字段spellcheck.onlyMorePopular不影响排序顺序。该字段检查每个建议的查询结果,并且仅显示查询结果最多的建议,即使存在正确的建议。谨慎使用。
确保通过StopFilterFactoryrequestHandler 的索引和查询端传递数据来删除“the”、“that”等停用词。
请参阅: http: //wiki.apache.org/solr/SpellCheckComponent了解更多信息。
| 归档时间: |
|
| 查看次数: |
2737 次 |
| 最近记录: |