public void FindWorsdInTexts(SearchRequest searchRequest) { Log.SeqLog.WriteNewLogMessage("Searching for {searchword1} {searchword2} {searchword3} also Synonyms: {alsoSynonyms}", searchRequest.SearchWord1, searchRequest.SearchWord2, searchRequest.SearchWord3, searchRequest.AlsoSynonyms); List <TextResult> searchResult = new List <TextResult>(); List <string> searchTerms = searchRequest.GetSearchWords(); int exactCountMain = 0; // Get Synonyms. List <SearchWord> searchWords = GetSynonymsFromOpenThesaurus(searchTerms); foreach (SearchWord searchword in searchWords) { searchword.CleanUpSynonyms(); } IEnumerable <Text> allProcessedTexts = this.textContext.Texts.Include(s => s.Sentences).Where(t => t.Processed == true); foreach (Text text in allProcessedTexts) { for (int i = 0; i < searchWords.Count; i++) { // Get all sentences of a Text that contains the exatct, similar or synoym word. List <Sentence> sentencesList = text.Sentences.Where(s => s.SplitSentenceIntoWords().Where(w => w.ToLower() == searchWords[i].Term.ToLower().ToLower() || Fastenshtein.Levenshtein.Distance(w.ToLower(), searchWords[i].Term.ToLower()) == 1 || CheckIfWordISynonyms(w, searchWords[i]) ).Count() > 0).ToList(); if (sentencesList.Count > 0) { TextResult textResult = new TextResult(text.ID); foreach (Sentence sentence in sentencesList) { SentenceResult sentenceResult = new SentenceResult(sentence.SentenceID, 3, 2, 1); sentenceResult.MainSentence = sentence; sentenceResult.PreviousSentence = GetPreviousSentence(text, sentence); sentenceResult.NextSentence = GetNextSentence(text, sentence); sentenceResult.CalculateResult(searchWords, searchRequest.AlsoSynonyms); sentenceResult.CalculateTotalScore(); // textResult.Sentences.Add(sentenceResult); //Console.WriteLine("hier"); textResult.Sentences.Add(sentenceResult); } searchResult.Add(textResult); } } } this._hubContext.Clients.All.InvokeAsync("SendMessageToClient", $"Result for || {searchRequest.SearchWord1} {searchRequest.SearchWord2} {searchRequest.SearchWord3} || also Synonyms: {searchRequest.AlsoSynonyms}:"); List <TextResult> bestResults = searchResult.OrderByDescending(sr => sr.TotalScore).Take(5).ToList(); foreach (TextResult result in bestResults) { //this._hubContext.Clients.All.InvokeAsync("SendMessageToClient", $"{JsonConvert.SerializeObject(result).ToString()} \n\n"); this._hubContext.Clients.All.InvokeAsync("SendMessageToClient", $"{this.PrintResult(result)}"); } }