diff --git a/server/AyaNova/biz/Search.cs b/server/AyaNova/biz/Search.cs index 193eaee0..1c0111ff 100644 --- a/server/AyaNova/biz/Search.cs +++ b/server/AyaNova/biz/Search.cs @@ -462,8 +462,8 @@ namespace AyaNova.Biz List tempList = new List(); tempList.AddRange(KeyWordList); tempList.AddRange(p.Tags); - var DistinctAllKeywordsCombinedList=tempList.Distinct(); - // AllKeyWordsCombinedList=((IEnumerable)AllKeyWordsCombinedList).Distinct(); + var DistinctAllKeywordsCombinedList = tempList.Distinct(); + // AllKeyWordsCombinedList=((IEnumerable)AllKeyWordsCombinedList).Distinct(); //EARLY EXIT IF NO KEYWORDS OR NAME RECORD OR TAGS TO PROCESS if (KeyWordList.Count == 0 && string.IsNullOrWhiteSpace(p.Name)) @@ -476,17 +476,19 @@ namespace AyaNova.Biz List MatchingKeywordIdList = new List(); //ITERATE ALL THE KEYWORDS, SEARCH IN THE SEARCHDICTIONARY TABLE AND COLLECT ID'S OF ANY PRE-EXISTING IN DB KEYWORDS - // var ExistingKeywordMatches = ServiceProviderProvider.DBContext.SearchDictionary.AsNoTracking().Where(m => KeyWordList.Contains(m.Word)).ToDictionary(m => m.Id, m => m.Word); + // var ExistingKeywordMatches = ServiceProviderProvider.DBContext.SearchDictionary.AsNoTracking().Where(m => KeyWordList.Contains(m.Word)).ToDictionary(m => m.Id, m => m.Word); var ExistingKeywordMatches = ServiceProviderProvider.DBContext.SearchDictionary.AsNoTracking().Where(m => DistinctAllKeywordsCombinedList.Contains(m.Word)).ToDictionary(m => m.Id, m => m.Word); //Put the matching keyword ID's into the list foreach (KeyValuePair K in ExistingKeywordMatches) { - bool IsName = false; - if (NameKeyWordList.Contains(K.Value)) - IsName = true; - MatchingKeywordIdList.Add(new MatchingDictionaryEntry() { DictionaryId = K.Key, InName = IsName }); -//todo: make two records if both in + //Name or regular word match? + bool IsName = NameKeyWordList.Contains(K.Value); + if (IsName || KeyWordList.Contains(K.Value)) + MatchingKeywordIdList.Add(new MatchingDictionaryEntry() { DictionaryId = K.Key, InName = IsName }); + //Tag match? + if (p.Tags.Contains(K.Value)) + MatchingKeywordIdList.Add(new MatchingDictionaryEntry() { DictionaryId = K.Key, InTags = true }); } @@ -513,7 +515,24 @@ namespace AyaNova.Biz var CtAdd = ServiceProviderProvider.DBContext; CtAdd.SearchDictionary.Add(NewWord); CtAdd.SaveChanges(); - MatchingKeywordIdList.Add(new MatchingDictionaryEntry() { DictionaryId = NewWord.Id, InName = NameKeyWordList.Contains(KeyWord) }); + + //------- + //Add to matching keywords + //was this before tags: MatchingKeywordIdList.Add(new MatchingDictionaryEntry() { DictionaryId = NewWord.Id, InName = NameKeyWordList.Contains(KeyWord) }); + //Name or regular word match? + bool IsName = NameKeyWordList.Contains(KeyWord); + if (IsName || KeyWordList.Contains(KeyWord)) + MatchingKeywordIdList.Add(new MatchingDictionaryEntry() { DictionaryId = NewWord.Id, InName = IsName }); + + //Tag match? + if (p.Tags.Contains(KeyWord)) + MatchingKeywordIdList.Add(new MatchingDictionaryEntry() { DictionaryId = NewWord.Id, InTags = true }); + + //------- + + + + //It exists now ExistingKeywordMatches.Add(NewWord.Id, NewWord.Word); } @@ -536,7 +555,19 @@ namespace AyaNova.Biz var SearchDictionaryMatchFoundInDB = ServiceProviderProvider.DBContext.SearchDictionary.AsNoTracking().Where(x => x.Word == KeyWord).FirstOrDefault(); if (SearchDictionaryMatchFoundInDB != null) { - MatchingKeywordIdList.Add(new MatchingDictionaryEntry() { DictionaryId = SearchDictionaryMatchFoundInDB.Id, InName = NameKeyWordList.Contains(KeyWord) }); + //was before tags: MatchingKeywordIdList.Add(new MatchingDictionaryEntry() { DictionaryId = SearchDictionaryMatchFoundInDB.Id, InName = NameKeyWordList.Contains(KeyWord) }); + //------- + //Add to matching keywords + //Name or regular word match? + bool IsName = NameKeyWordList.Contains(KeyWord); + if (IsName || KeyWordList.Contains(KeyWord)) + MatchingKeywordIdList.Add(new MatchingDictionaryEntry() { DictionaryId = SearchDictionaryMatchFoundInDB.Id, InName = IsName }); + + //Tag match? + if (p.Tags.Contains(KeyWord)) + MatchingKeywordIdList.Add(new MatchingDictionaryEntry() { DictionaryId = SearchDictionaryMatchFoundInDB.Id, InTags = true }); + + //------- //It exists now ExistingKeywordMatches.Add(SearchDictionaryMatchFoundInDB.Id, SearchDictionaryMatchFoundInDB.Word); }