Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
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;
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
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);
        }