public void TestNameSearchMain() { NameSearchMain nameSearchMain = new NameSearchMain("The Walt Disney"); List <string> results = nameSearchMain.GetCleansedCompanyName(); string result = NormalizeName.GetCleansedCompanyName("The Walt Disney"); Assert.AreEqual <string>(result, results[0]); return; }
public static void InitializeCompanyRecords() { CompanyDictionary = new Dictionary <string, CompanyRecord>(); List <string> ExceptionList = new List <string>(); string queryString = @"select Id, CompanyName from NameSearch"; using (SqlConnection connection = new SqlConnection(ConnectionManager.Current.ConnectionString)) { SqlCommand command = new SqlCommand(queryString, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); try { while (reader.Read()) { CompanyRecord companyRecord = new CompanyRecord(); companyRecord.CompanyId = reader.GetInt32(0); companyRecord.CompanyName = reader.GetString(1); if (companyRecord.CompanyName != "" && companyRecord.CompanyName != string.Empty && companyRecord.CompanyName != null) { if (!CompanyDictionary.ContainsKey(companyRecord.CompanyName)) { companyRecord.CleansedCompanyName = NormalizeName.GetCleansedCompanyName(companyRecord.CompanyName); companyRecord.CleansedCompanyNameWords = companyRecord.CleansedCompanyName.Split(' '); companyRecord.tokenSoundList = SoundExHash.GetTokenSounds(new List <string>(companyRecord.CleansedCompanyNameWords)); CompanyDictionary.Add(companyRecord.CompanyName, companyRecord); } else { ExceptionList.Add(companyRecord.CompanyName); } } } } finally { reader.Close(); reader = null; } command.Dispose(); command = null; } return; }
public Dictionary <string, CompanyRecordScore> ProcessCompanyRecordScores(string companyName) { Dictionary <string, CompanyRecordScore> result = new Dictionary <string, CompanyRecordScore>(); var ExactMatch = GetCompanyNameExactMatchNoNormalization(companyName); if (ExactMatch.Item1) { result.Add(companyName, new CompanyRecordScore(ExactMatch.Item2, (int)(nameSearchPercentage.ExactMatchNoNormalizationPercentage + 0.5), CompanyScoreType.ExactMatchNoNormalization)); } string cleansedCompanyName = NormalizeName.GetCleansedCompanyName(companyName); string[] cleansedCompanyWords = cleansedCompanyName.Split(' '); Dictionary <string, CompanyRecordScore> getScoresList = null; foreach (var entry in CompanyRecords.CompanyDictionary) { string companyNameEntry = entry.Key; CompanyRecord companyRecord = entry.Value; getScoresList = GetCompanyNameExactMatchWithNormalization(cleansedCompanyName, companyRecord); if (getScoresList.Count > 0) { AddScores(getScoresList, ref result); } // Get word matches, out of order or less or more words... getScoresList = GetCompanyNameExactMatchWithNormalizationOutOfOrder(cleansedCompanyWords, companyRecord); if (getScoresList.Count > 0) { AddScores(getScoresList, ref result); } // Consider sounds like matches getScoresList = GetCompanyNameSoundsLike(cleansedCompanyWords, companyRecord); if (getScoresList.Count > 0) { AddScores(getScoresList, ref result); } } return(result); }
// Helper class to Add or Update CompanyRecords. public static bool InsertCompanyRecord(string companyName, CompanyRecord companyRecord) { bool result = false; if (companyName == null || companyName == string.Empty || companyName == "") { throw new ApplicationException("Invalid string for CompanyName {companyName}"); } if (companyRecord == null) { throw new ApplicationException("Must assign CompanyRecord type value before use"); } if (companyName.CompareTo(companyRecord.CompanyName) != 0) { companyRecord.CompanyName = companyName; } object lockit = new object(); lock (lockit) { companyRecord.CleansedCompanyName = NormalizeName.GetCleansedCompanyName(companyRecord.CompanyName); companyRecord.CleansedCompanyNameWords = companyRecord.CleansedCompanyName.Split(' '); List <TokenSound> tokenSoundList = SoundExHash.GetTokenSounds(new List <string>(companyRecord.CleansedCompanyNameWords)); if (!CompanyDictionary.ContainsKey(companyName)) { CompanyDictionary.Add(companyName, companyRecord); } else { CompanyDictionary[companyName] = companyRecord; } result = true; } return(result); }