Example #1
0
        private Dictionary <string, CompanyRecordScore> GetCompanyNameSoundsLike(string[] companyWords, CompanyRecord companyListRecord)
        {
            // Let's not consider in order.
            Dictionary <string, CompanyRecordScore> result = new Dictionary <string, CompanyRecordScore>();
            int matchCount = 0;
            int Score      = 0;

            List <TokenSound> tokenSoundList = SoundExHash.GetTokenSounds(companyWords.ToList());

            foreach (TokenSound tokenSound in tokenSoundList)
            {
                foreach (TokenSound companyListToken in companyListRecord.tokenSoundList)
                {
                    if (companyListToken.Sound.Contains(tokenSound.Sound))
                    {
                        matchCount++;
                    }
                }
            }

            int cleansedWordCount = companyListRecord.tokenSoundList.Count;
            int companyWordCount  = tokenSoundList.Count;

            float matchPercentage = GetMatchPercentage(matchCount, cleansedWordCount, companyWordCount);

            matchPercentage = (nameSearchPercentage.MatchSoundsLikePercentage * matchPercentage) / PercentageMultiplier;

            if (matchPercentage >= nameSearchPercentage.ExactMatchWithNormalizationOutOfOrderPercentage)
            {
                Score = (int)(matchPercentage + 0.5);
                result.Add(companyListRecord.CompanyName, new CompanyRecordScore(companyListRecord, Score, CompanyScoreType.MatchSoundsLike));
            }

            return(result);
        }
Example #2
0
        public void TestFindSimilarCompanyRecords()
        {
            SoundExHash soundExDb = new SoundExHash();

            DateTime start = DateTime.Now;

            Dictionary <string, CompanyRecord> companyRecordsList = soundExDb.GetCompanyRecords();

            DateTime start2 = DateTime.Now;
            TimeSpan span1  = start2 - start;


            DateTime start3 = DateTime.Now;
            TimeSpan span2  = start3 - start2;

            List <CompanyRecord> companySoundMatchList = soundExDb.FindSimilarCompanyRecords("Walt Disney");

            Assert.AreEqual("Disney Walt", companySoundMatchList[0].CompanyName);
            Assert.AreEqual("Dizney Walt", companySoundMatchList[1].CompanyName);

            DateTime start4 = DateTime.Now;
            TimeSpan span3  = start4 - start3;

            TimeSpan span4 = start4 - start;

            Trace.WriteLine("{0}", span4.ToString());

            return;
        }
Example #3
0
        public void TestGetCompanyRecords()
        {
            SoundExHash soundExDb = new SoundExHash();

            DateTime start = DateTime.Now;

            Dictionary <string, CompanyRecord> companyRecordsList = soundExDb.GetCompanyRecords();

            DateTime end  = DateTime.Now;
            TimeSpan span = end - start;

            return;
        }
Example #4
0
        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;
        }
Example #5
0
        // 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);
        }
Example #6
0
        public void TestSoundExAlgo()
        {
            string result = SoundExHash.SoundexWord("Microsoft");

            Assert.AreEqual("M262", result);
            result = SoundExHash.SoundexWord("Apple");
            Assert.AreEqual("A140", result);
            result = SoundExHash.SoundexWord("Super");
            Assert.AreEqual("S160", result);
            result = SoundExHash.SoundexWord("Souper");
            Assert.AreEqual("S160", result);
            List <string> results = SoundExHash.SoundexList("Souper Duper Trooper");

            result = results[0];
            Assert.AreEqual("S160", result);
            result = results[1];
            Assert.AreEqual("D160", result);
            result = results[2];
            Assert.AreEqual("T616", result);

            return;
        }