void RunPhase1() { MainIndex = new PositionalIndex(); IndexEnglishFiles(); //IndexPersianFiles(); var tokenRepeats = MainIndex.GetAllTokensRepeats() .OrderByDescending(x => x.repeatCount) .ToList(); Console.WriteLine(string.Join(",", tokenRepeats)); Console.WriteLine("Unique Token count is: " + tokenRepeats.Count); WriteInFile(MainIndex, "MainIndex"); GenerateBiword(); while (true) { Console.WriteLine("Enter your command: [query|proximity(windowSize)|and|compress|decompress|info(word)]"); var command = Console.ReadLine(); var commandWords = command.Split(' '); if (command == "and" || command == "a" || command == "q" || command == "query" || commandWords.First() == "p" || commandWords.First() == "proximity") { Console.WriteLine("Enter your query: "); var query = Console.ReadLine(); if (string.IsNullOrEmpty(query)) { Console.WriteLine("Your query is empty."); continue; } var queryExecuter = new QueryExecuter(query, MainIndex); List <SearchResult> result = null; if (command == "and" || command == "a") { result = queryExecuter.ExecuteAndSearch(); } else { if (commandWords.First() == "p" || commandWords.First() == "proximity") { result = queryExecuter.ExecuteTfIdfSearch(Convert.ToInt32(commandWords[1])); } else { result = queryExecuter.ExecuteTfIdfSearch(); } } Console.WriteLine("Query after preprocess: " + JsonConvert.SerializeObject(queryExecuter.Query)); Console.WriteLine(string.Join(Environment.NewLine, result)); Console.WriteLine("---------------------------------" + Environment.NewLine); Console.WriteLine("Enter classification filter: [1|2|3|4|no filter(Enter)]"); var classFilterLine = Console.ReadLine(); byte classFilter = Convert.ToByte(classFilterLine); queryExecuter = new QueryExecuter(query, MainIndex); result = queryExecuter.ExecuteTfIdfSearch(null, classFilter); Console.WriteLine(string.Join(Environment.NewLine, result)); Console.WriteLine("---------------------------------" + Environment.NewLine); } else if (command.StartsWith("info")) { var word = command.Split(' ')[1]; Console.WriteLine(MainIndex.GetWordInfo(word)); } else if (command.Contains("compress")) { Console.WriteLine("Enter compress mode: [gamma|varbyte]"); var modeStr = Console.ReadLine(); CompressUtility.Mode = (CompressMode)Enum.Parse(typeof(CompressMode), modeStr); if (command.StartsWith("de")) { Decompress(); } else { Compress(); } } } }