예제 #1
0
        /// <summary>
        /// Запуск процесса автодополнения слов
        /// </summary>
        /// <param name="maxPredictions">Количество выводимых автодополнений к слову</param>
        internal static void RunAutoCompletion(int maxPredictions)
        {
            try
            {
                Console.WriteLine("Программа запущена в режиме автодополнения слов");

                // Создаем контекст для работы с базой данных
                using (TextProcessorContext database = new TextProcessorContext())
                {
                    while (true)
                    {
                        var inputRead = IOExtentions.ReadLineOrEsc();

                        // Прерываем ввод слов если нажата клавиша ESC или введена пустая строка
                        if (inputRead == null || inputRead == string.Empty)
                        {
                            break;
                        }

                        var predictedWords = AutoCompleteWordFromFrequentWordsTable(inputRead, database, maxPredictions);

                        PrintAutoCompletedWords(predictedWords);

                        Console.WriteLine("\nДля выхода нажмите ESC или введите пустую строку");
                    }
                }
            }
            catch (Exception e)
            {
                throw new Exception($"При попытке автодополнения слова произошла ошибка: {e.Message}");
            }
        }
예제 #2
0
 /// <summary>
 /// Выполняет автодополнение слова используя данные из таблицы FrequentWords базы данных
 /// </summary>
 /// <param name="inputWordToCompletion">Слово для автодополнения</param>
 /// <param name="sourceDb">Контекст базы данных</param>
 /// <param name="completionLimit">Максимум слов для вывода</param>
 /// <returns>Список подходящих для автодополнения слов</returns>
 internal static List <FrequentWord> AutoCompleteWordFromFrequentWordsTable(string inputWordToCompletion, TextProcessorContext database, int completionLimit)
 {
     try
     {
         return(database.FrequentWords.
                AsNoTracking().
                Where(x => x.Word.StartsWith(inputWordToCompletion)).
                OrderByDescending(x => x.Frequent).
                ThenBy(x => x.Word).
                Take(completionLimit).
                ToList());
     }
     catch (Exception e)
     {
         throw new Exception($"Не удалось получить данные для автодополнения из базы данных. Ошибка: {e.Message}");
     }
 }
예제 #3
0
 public FrequentWordsDictionary(string[] command)
 {
     database = new TextProcessorContext();
     GetInputCommand(command);
 }
예제 #4
0
 public FrequentWordsDictionary()
 {
     database = new TextProcessorContext();
 }