public List <KeywordModel> GetWordAndCount(ISEOViewModel model, string content) { List <KeywordModel> returnData = new List <KeywordModel>(); bool removeStopWord = false; // Check if user select to filter stop words var stopWordsOption = model.UserInputModel.AnalysisOptions.Where(x => x.Value == "StopWords").FirstOrDefault(); if (stopWordsOption != null && stopWordsOption.Selected == true) { removeStopWord = true; } string[] words = Regex.Replace(content, "<.*?>", String.Empty).Split(' '); //string[] words = content.Replace("<", " ").Replace(">", " ").Replace("</", " ").Split(' '); foreach (string word in words) { string newWord = word.Trim(); if (newWord != "" && IsAWord(newWord) && !newWord.Any(c => char.IsDigit(c))) { if (removeStopWord == true && WordFilters.StopWords.Any(s => s.ToUpper().Contains(newWord.ToUpper()))) { // ignore and dont add } else { var checkData = returnData.Where(x => x.Name == newWord).FirstOrDefault(); if (checkData == null) { returnData.Add(new KeywordModel { Name = newWord , WordCount = 1 }); } else { checkData.WordCount++; } } } } return(returnData); }
public async Task <IResultModel> ProcessInput(ISEOViewModel model) { IResultModel returnModel = new ResultModel(); // 1. Extract Url link information from URL input List <LinkModel> links = _linkExtractor.GetLinkFromContent(model.UserInputModel.TextContent); returnModel.Links = links; // 2. Extract HTML returnModel.Content = await Task.Run(() => model.UserInputModel.TextContent); // 3. Get the META keywords _metaExtractor.Content = returnModel.Content; returnModel.Metas = _metaExtractor.GetMeta(); // 4. Get words and its count returnModel.Keywords = _htmlExtractor.GetWordAndCount(model, _metaExtractor.Content); return(returnModel); }