/// <summary> /// This function returns a partial match list /// </summary> /// <param name="id"></param> /// <returns></returns> public List <long> FindPartialMatches(long id) { WordTransaction transaction = m_WordTransactions.Find(x => x.Id == id); if (transaction != null) { return(transaction.WordPartialMatches); } return(null); }
public string BuildQuery(List <long> ids) { string outQuery = ""; WordTransaction transaction = null; foreach (var id in ids) { transaction = m_WordDictionary.Find(id); if (transaction != null) { outQuery += transaction.Word + " "; } } return(outQuery.Trim()); }
public void BuildPartialMatches(WordTransaction newWordTranscation) { string loweredWord = newWordTranscation.Word.ToLower(); foreach (var transcation in m_WordTransactions) { string transcationWordLowered = transcation.Word.ToLower(); if (transcationWordLowered.Contains(loweredWord) || loweredWord.Contains(transcationWordLowered)) { // Create 2-way partial match ids if (!transcation.WordPartialMatches.Contains(newWordTranscation.Id)) { transcation.WordPartialMatches.Add(newWordTranscation.Id); } if (!newWordTranscation.WordPartialMatches.Contains(transcation.Id)) { newWordTranscation.WordPartialMatches.Add(transcation.Id); } } } }
public long Add(string word) { long outId = -1; if (!string.IsNullOrWhiteSpace(word)) { string normalizedWord = NormalizeWord(word); WordTransaction exists = Find(normalizedWord); if (exists == null) { outId = GetNextId(); WordTransaction newWord = new WordTransaction(outId, normalizedWord); BuildPartialMatches(newWord); m_WordTransactions.Add(newWord); m_IsDictionaryDirty = true; } else { outId = exists.Id; } } return(outId); }