static void Main(string[] args) { // set language to english // (because in czech "ch" is one letter and "abch".IndexOf("bc") returns -1) System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en"); // algorithms IStringSearchAlgorithm[] algorithms = new IStringSearchAlgorithm[2]; algorithms[0] = new AhoCorasickStringMatch(); algorithms[1] = new HashingStringMatch(); double[] results = new double[3]; for (int j = 0; j < 50; j++) { // generate random keywords and random text string[] keywords = GetRandomKeywords(80); string text = GetRandomText(2000); // insert keyword into text text = text.Insert(rnd.Next(text.Length), keywords[rnd.Next(keywords.Length)]); // for each algorithm... for (int algIndex = 0; algIndex < algorithms.Length; algIndex++) { IStringSearchAlgorithm alg = algorithms[algIndex]; Console.WriteLine(alg.ToString()); alg.Keywords = keywords; // search for keywords and measure performance HiPerfTimer tmr = new HiPerfTimer(); tmr.Start(); StringSearchResult[] r = alg.FindAll(text); tmr.Stop(); Console.WriteLine(tmr.Duration); Console.WriteLine("Found: " + r.Length); alg.TotalDuration += tmr.Duration; } Console.WriteLine("==========================="); Console.WriteLine(); } Console.WriteLine("\n===SUMMARY==="); for (int j = 0; j < algorithms.Length; j++) { IStringSearchAlgorithm alg = algorithms[j]; Console.WriteLine(alg.ToString() + "=" + alg.TotalDuration); } Console.WriteLine(); }
public double rate(string stringBeingSearched, string[] keywords) { double rating = 0d; _searchAlgorithm.Keywords = keywords; foreach (StringSearchResult result in _searchAlgorithm.FindAll(stringBeingSearched)) { rating++; } return(rating); }