Reputation: 3
I have configured a Solr spellchecking comoponent using IndexBasedSpellChecker with a core containing country names:
<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>
And a request handler for spellchecking:
<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>
When I request :
curl 'http://localhost:8983/solr/mycore/index-spell?indent=on&spellcheck.q=tanaz&wt=json&spellcheck.collate=true'
I get results in the suggestions like :
"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":[]}
Why are my collations empty? I have spellcheck.collate=true in my request.
Upvotes: 0
Views: 788
Reputation: 1223
I think you are missing the df
(default field) parameter in your request.
Add df=name
in you request:
You also can configure this in your request handler defaults, so you don't need to send this in request.
<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>
Upvotes: 3