Hi Jimi, taking a look to the *maxQueryFrequency* param : Your understanding is correct.
1) we don't provide misspelled suggestions if we set the param to 1, and we have a minimum of 1 doc freq for the term . 2) we don't provide misspelled suggestions if the doc frequency of the term is greater than the max limit set. Let us explore the code : if (suggestMode==SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX && docfreq > 0) { return new SuggestWord[0]; } /// If we are working in "Not in Index Mode" , with a document frequency >0 we get no misspelled corrections. / int maxDoc = ir.maxDoc(); if (maxQueryFrequency >= 1f && docfreq > maxQueryFrequency) { return new SuggestWord[0]; } else if (docfreq > (int) Math.ceil(maxQueryFrequency * (float)maxDoc)) { return new SuggestWord[0]; } // then the MaxQueryFrequency as you correctly stated enters the game ... Let's explore how you can end up in the first scenario : if (maxResultsForSuggest == null || hits <= maxResultsForSuggest) { SuggestMode suggestMode = SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX; if (onlyMorePopular) { suggestMode = SuggestMode.SUGGEST_MORE_POPULAR; } else if (alternativeTermCount > 0) { suggestMode = SuggestMode.SUGGEST_ALWAYS; } You did not set maxResultsForSuggest ( and not onlyMorePopular or alternative term count) so you ended up in : SuggestMode suggestMode = SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX; >From Solr javaDoc : If left unspecified, the default behavior will prevail. That is, "correctlySpelled" will be false and suggestions * will be returned only if one or more of the query terms are absent from the dictionary and/or index. If set to zero, * the "correctlySpelled" flag will be false only if the response returns zero hits. If set to a value greater than zero, * suggestions will be returned even if hits are returned (up to the specified number). This number also will serve as * the threshold in determining the value of "correctlySpelled". Specifying a value greater than zero is useful * for creating "did-you-mean" suggestions for queries that return a low number of hits. * </p> */ public static final String SPELLCHECK_MAX_RESULTS_FOR_SUGGEST = SPELLCHECK_PREFIX + "maxResultsForSuggest"; You probably want to bypass the other parameters and just set the proper maxResultsForSuggest param for your spellchecker Cheers -- View this message in context: http://lucene.472066.n3.nabble.com/Can-t-get-spelling-suggestions-to-work-properly-tp4310079p4313685.html Sent from the Solr - User mailing list archive at Nabble.com.