static void Main(string[] args) { // проверяемая строка string test = "скандинавы (2) самоуправствовать(3) невесомость(1) перечисление(3) подтверждение(1) новостройка(3) разбиться(1)"; test = "авторитарный (2) надпороть(2) головоногие(1) жаркое(1) стлать(2) одноклассник(3) кофейник(1) захаркать(1)"; //test = "Принц (2) Нерадивец (3) Идеал (2) Барсук (1) Мораль (3) Проныра (1) Ведомость (4)"; // нормализуем строку в наш формат, и, готовим перечень слов с количествами букв для взятия из каждого из слов Raschl.OneStr os = Raschl.Prepare(Raschl.Normalize(test)); // часы для замера скорости Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); // читаем файл словаря ReadWordDictionary(@"C:\TEMP\dict2.txt", @"C:\TEMP\dict2.db", Encoding.Unicode); SetPragma("auto_vacuum = 0"); SetPragma("case_sensitive_like = true"); //SetPragma("case_sensitive_like = true"); SetPragma("cell_size_check = false"); SetPragma("count_changes = false"); SetPragma("fullfsync = false"); SetPragma("synchronous = OFF"); SetPragma("temp_store = MEMORY"); SetPragma("query_only = true"); //SetPragma("automatic_index = false"); // сильно замедляет !!! SetPragma("journal_mode = OFF"); SetPragma("cache_size = -200000"); SetPragma("ignore_check_constraints = false"); ////SetPragma("journal_mode = MEMORY"); SetPragma("mmap_size = 268435456"); ////SetPragma("page_size = 4096"); ////SetPragma("page_size = 16384"); SetPragma("page_size = 65536"); stopWatch.Stop(); WriteTimeSpan("reading dictionary time = ", stopWatch.Elapsed); Solve("авторитарный (2) надпороть(2) головоногие(1) жаркое(1) стлать(2) одноклассник(3) кофейник(1) захаркать(1)"); Solve("Принц (2) Нерадивец (3) Идеал (2) Барсук (1) Мораль (3) Проныра (1) Ведомость (4)"); Solve("скандинавы (2) самоуправствовать(3) невесомость(1) перечисление(3) подтверждение(1) новостройка(3) разбиться(1)"); sql_con.Close(); Console.WriteLine(" "); Console.WriteLine("it's all.. press any key to quit.."); // ждем ввода для закрытия окна string k = Console.ReadLine(); }
private static void Solve(string v) { //Console.WriteLine(" "); //Console.WriteLine("Task: " + v); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); sql_cmd = sql_con.CreateCommand(); string query = Raschl.GetSqlStr(Raschl.Prepare(Raschl.Normalize(v))); sql_cmd.CommandText = query; stopWatch.Stop(); Console.WriteLine(" "); //WriteTimeSpan("prepare data for solve = ", stopWatch.Elapsed); stopWatch.Restart(); SQLiteDataReader reader = sql_cmd.ExecuteReader(); stopWatch.Stop(); WriteTimeSpan("sqlite job time = ", stopWatch.Elapsed); stopWatch.Restart(); DataSet ds_res = new DataSet(); ds_res.Tables.Add("wrd"); ds_res.Tables[0].Load(reader); List <string> res = new List <string>(); foreach (DataRow drc in ds_res.Tables[0].Rows) { res.Add(drc[0].ToString()); } stopWatch.Stop(); WriteTimeSpan("reading result table time = ", stopWatch.Elapsed); Console.WriteLine(" "); //foreach(string ss in res) //{ // Console.WriteLine(ss); //} //Console.WriteLine(" "); }