Ich habe eine Datei mit einigen Phrasen. Mit Jarowinkler von Lucene soll es mir die ähnlichsten Phrasen meiner Eingabe aus dieser Datei bringen.JarowinklerDistance in Lucene ist seltsam Ergebnisse
Hier ist ein Beispiel für mein Problem.
Wir haben eine Datei mit:
//phrases.txt
this is goodd
this is good
this is god
Wenn mein Eingang ist diese gute ist, es soll mich holen ‚das ist gut‘ aus der Datei zuerst, da die Ähnlichkeit hier Punktzahl ist die größte (1). Aber aus irgendeinem Grund kommt es zurück: "Das ist gut" und "das ist Gott" nur!
Hier ist mein Code:
try {
SpellChecker spellChecker = new SpellChecker(new RAMDirectory(), new JaroWinklerDistance());
Dictionary dictionary = new PlainTextDictionary(new File("src/main/resources/words.txt").toPath());
IndexWriterConfig iwc=new IndexWriterConfig(new ShingleAnalyzerWrapper());
spellChecker.indexDictionary(dictionary,iwc,false);
String wordForSuggestions = "this is good";
int suggestionsNumber = 5;
String[] suggestions = spellChecker.suggestSimilar(wordForSuggestions, suggestionsNumber,0.8f);
if (suggestions!=null && suggestions.length>0) {
for (String word : suggestions) {
System.out.println("Did you mean:" + word);
}
}
else {
System.out.println("No suggestions found for word:"+wordForSuggestions);
}
} catch (IOException e) {
e.printStackTrace();
}