public static string SpellCheck(this SpellChecker.Net.Search.Spell.SpellChecker spellChecker, string terms) { var splitTerms = terms.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); var checkedTerms = spellChecker.SpellCheck(splitTerms); return(string.Join(" ", checkedTerms)); }
public static string DidYouMean(string query) { List<string> suggestions = new List<string>(); string[] wordsToSpell = query.Split(new[] { ' ' }); var spell = new SpellChecker.Net.Search.Spell.SpellChecker(SearchEnvironment.SpellIndexDir); spell.setStringDistance(new SpellChecker.Net.Search.Spell.LevenshteinDistance()); foreach (var word in wordsToSpell) { suggestions.Add(spell.SuggestSimilar(word, 5).ToList().FirstOrDefault() ?? word); } string didYouMean = query; if (suggestions.Count > 0) didYouMean = String.Empty; foreach (var suggested in suggestions) { didYouMean += suggested + " "; } var trimmed = didYouMean.TrimEnd(); if (string.Compare(query, trimmed, true, CultureInfo.InvariantCulture) == 0) return String.Empty; return trimmed; }
private void InitializeSpellChecker() { if (SpellChecker != null) return; var di = DictionaryBuilder.CreateTargetFolder(_pathToDictDir); SpellChecker = new SpellChecker.Net.Search.Spell.SpellChecker(FSDirectory.Open(di)); InitSuggestionListFromFile(); }
public static List <string> SpellCheck(this SpellChecker.Net.Search.Spell.SpellChecker spellChecker, List <string> terms) { var checkedTerms = new List <string>(); foreach (var term in terms) { if (!StopAnalyzer.ENGLISH_STOP_WORDS_SET.Contains(term) && !spellChecker.Exist(term)) { checkedTerms.Add(spellChecker.SuggestSimilar(term, 7, null, null, true).FirstOrDefault() ?? term); } else { checkedTerms.Add(term); } } return(checkedTerms); }
public virtual void SetUp() { //create a user index userindex = new RAMDirectory(); IndexWriter writer = new IndexWriter(userindex, new SimpleAnalyzer(), true); for (int i = 0; i < 1000; i++) { Document doc = new Document(); doc.Add(new Field("field1", English.IntToEnglish(i), Field.Store.YES, Field.Index.TOKENIZED)); doc.Add(new Field("field2", English.IntToEnglish(i + 1), Field.Store.YES, Field.Index.TOKENIZED)); // + word thousand writer.AddDocument(doc); } writer.Close(); // create the spellChecker spellindex = new RAMDirectory(); spellChecker = new SpellChecker.Net.Search.Spell.SpellChecker(spellindex); }
public string GetSuggestion(string searchText) { string result = string.Empty; using (var reader = IndexReader.Open(_indexDirectoryPath, true)) { var spellchecker = new SpellChecker.Net.Search.Spell.SpellChecker(_indexDirectoryPath); spellchecker.IndexDictionary(new SpellChecker.Net.Search.Spell.LuceneDictionary(reader, "SpecialtyName")); //spellchecker.IndexDictionary(new SpellChecker.Net.Search.Spell.LuceneDictionary(reader, "City")); searchText.Split(' ') .ToList() .ForEach(word => { result += (spellchecker.SuggestSimilar(word, 1).FirstOrDefault() ?? word) + " "; }); } return result.Trim(); }
public PreFilter(TokenStream in_Renamed, LuceneSpellChecker spellChecker, int numberOfSuggestions) : base(in_Renamed) { SpellChecker = spellChecker; NumberOfSuggestions = numberOfSuggestions; }
public StemmerCompareAnalyzer(ISet <string> stopWords, LuceneSpellChecker spellChecker, int numberOfSuggestion) { StopWords = stopWords; SpellChecker = spellChecker; NumberOfSuggestions = numberOfSuggestion; }