我已经使用 IndexBasedSpellChecker 配置了一个 Solr 拼写检查组件,其核心包含国家/地区名称:
<searchComponent name="indexBasedSpellCheck" class="solr.SpellCheckComponent">
<lst name="spellchecker">
<str name="name">indexBasedSpellCheck</str>
<str name="classname">solr.IndexBasedSpellChecker</str>
<str name="spellcheckIndexDir">./indexspellchecker</str>
<str name="field">name</str>
<str name="buildOnCommit">true</str>
<str name="distanceMeasure">org.apache.lucene.search.spell.LevensteinDistance</str>
<str name="accuracy">0.5</str>
</lst>
</searchComponent>
还有一个用于拼写检查的请求处理程序:
<requestHandler name="/index-spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="spellcheck.dictionary">idxBasedSpellCheck</str>
<str name="spellcheck">on</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.count">10</str>
<str name="spellcheck.alternativeTermCount">5</str>
<str name="spellcheck.maxResultsForSuggest">5</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.maxCollationTries">10</str>
<str name="spellcheck.maxCollations">5</str>
</lst>
<arr name="last-components">
<str>indexBasedSpellCheck</str>
</arr>
</requestHandler>
当我请求时:
curl 'http://localhost:8983/solr/mycore/index-spell?indent=on&spellcheck.q=tanaz&wt=json&spellcheck.collate=true'
我在以下建议中得到结果:
"spellcheck":{
"suggestions":[
"tanaz",{
"numFound":3,
"startOffset":0,
"endOffset":5,
"origFreq":0,
"suggestion":[{
"word":"canada",
"freq":1},
{
"word":"panama",
"freq":1},
{
"word":"tanzania",
"freq":1}]}],
"correctlySpelled":false,
"collations":[]}
为什么我的排序规则是空的?我的请求中有拼写检查.collate=true。
我认为您df
在请求中缺少(默认字段)参数。添加df=name
您的请求:
您也可以在您的请求处理程序默认值中配置它,因此您不需要在请求中发送它。
<requestHandler name="/index-spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
...
<str name="df">name</str>
...
</lst>
<arr name="last-components">
<str>idxBasedSpellCheck</str>
</arr>
</requestHandler>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句