SOLR-1094 -- Incorrect value of correctlySpelled attribute in some cases

git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@769310 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Shalin Shekhar Mangar 2009-04-28 09:24:05 +00:00
parent d7f7ca176f
commit 809a559b63
3 changed files with 23 additions and 2 deletions

View File

@ -347,6 +347,8 @@ Bug Fixes
38. SOLR-1126: Replicated files have incorrect timestamp (Jian Han Guo, Jeff Newburn, Noble Paul via shalin) 38. SOLR-1126: Replicated files have incorrect timestamp (Jian Han Guo, Jeff Newburn, Noble Paul via shalin)
39. SOLR-1094: Incorrect value of correctlySpelled attribute in some cases (David Smiley, mark Miller via shalin)
Other Changes Other Changes
---------------------- ----------------------
1. Upgraded to Lucene 2.4.0 (yonik) 1. Upgraded to Lucene 2.4.0 (yonik)

View File

@ -186,11 +186,17 @@ public class SpellCheckComponent extends SearchComponent implements SolrCoreAwar
NamedList result = new NamedList(); NamedList result = new NamedList();
Map<Token, LinkedHashMap<String, Integer>> suggestions = spellingResult.getSuggestions(); Map<Token, LinkedHashMap<String, Integer>> suggestions = spellingResult.getSuggestions();
boolean hasFreqInfo = spellingResult.hasTokenFrequencyInfo(); boolean hasFreqInfo = spellingResult.hasTokenFrequencyInfo();
boolean isCorrectlySpelled = true; boolean isCorrectlySpelled = false;
Map<Token, String> best = null; Map<Token, String> best = null;
if (collate == true){ if (collate == true){
best = new LinkedHashMap<Token, String>(suggestions.size()); best = new LinkedHashMap<Token, String>(suggestions.size());
} }
// will be flipped to false if any of the suggestions are not in the index and hasFreqInfo is true
if(suggestions.size() > 0) {
isCorrectlySpelled = true;
}
for (Map.Entry<Token, LinkedHashMap<String, Integer>> entry : suggestions.entrySet()) { for (Map.Entry<Token, LinkedHashMap<String, Integer>> entry : suggestions.entrySet()) {
Token inputToken = entry.getKey(); Token inputToken = entry.getKey();
Map<String, Integer> theSuggestions = entry.getValue(); Map<String, Integer> theSuggestions = entry.getValue();

View File

@ -255,9 +255,22 @@ public class SpellCheckComponentTest extends AbstractSolrTestCase {
SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams( SolrQueryRequest req = new LocalSolrQueryRequest(core, new MapSolrParams(
args)); args));
assertQ("Make sure correct spellings are signalled in the response", req, assertQ("Make sure correct spellings are signalled in the response", req,
"//*[@numFound='1']", "//result/doc[1]/int[@name='id'][.='1']", "//*[@numFound='1']", "//result/doc[1]/int[@name='id'][.='1']",
"//*/lst[@name='suggestions']"); "//*/lst[@name='suggestions']");
args = new HashMap<String, String>();
args.put(CommonParams.Q, "lakkle");
args.put(CommonParams.QT, "spellCheckCompRH");
args.put(SpellCheckComponent.SPELLCHECK_EXTENDED_RESULTS, "true");
args.put(SpellCheckComponent.COMPONENT_NAME, "true");
req = new LocalSolrQueryRequest(core, new MapSolrParams(
args));
assertQ("Make sure correct spellings are signalled in the response", req,
"//*[@numFound='0']", "//*/lst[@name='suggestions']", "//*/bool[@name='correctlySpelled'][.='false']");
} }
public void testInit() throws Exception { public void testInit() throws Exception {