From bbed6233cd3343b087e1c7932a1add9f2cc03189 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 20 Sep 2018 18:32:45 +0000 Subject: [PATCH] --- server/AyaNova/biz/Search.cs | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/server/AyaNova/biz/Search.cs b/server/AyaNova/biz/Search.cs index 54357688..cec30b51 100644 --- a/server/AyaNova/biz/Search.cs +++ b/server/AyaNova/biz/Search.cs @@ -201,7 +201,8 @@ namespace AyaNova.Biz if (string.IsNullOrWhiteSpace(searchParameters.Phrase)) { - //TAGS ONLY SEARCH (NO PHRASE) ALL FULL MATCHES ARE INCLUSIVE + + #region TAGS ONLY SEARCH (NO PHRASE) ALL FULL MATCHES ARE INCLUSIVE Dictionary TagCounts = new Dictionary(); //QUERY FOR ALL TAGMAPS THAT MATCH OBJECT TYPE AND ID FOR EVERY TAG SPECIFIED (UNION) @@ -243,7 +244,7 @@ namespace AyaNova.Biz if (TagId != ShortestMatchingTag) { //Ok, does this object have this tag? - bool HasTag = await ct.TagMap.Where(x => x.TagToObjectId == t.TagToObjectId && x.TagId == TagId).AnyAsync(); + bool HasTag = await ct.TagMap.Where(x => x.TagToObjectId == t.TagToObjectId && x.TagToObjectType == t.TagToObjectType && x.TagId == TagId).AnyAsync(); if (HasTag) matchCount++; } @@ -255,17 +256,28 @@ namespace AyaNova.Biz MatchingObjects.Add(new AyaTypeId(t.TagToObjectType, t.TagToObjectId)); } } - + #endregion } else { - //It's a tags plus search phrase search so tags are exclusive - //LOOP THROUGH SEARCHKEY MATCHES - //FOREACH OBJECT SEARCH TAGMAP FOR MATCHING OBJECTTYPE AND ID + #region TAGS PLUS PHRASE SEARCH NONE MATCHING TAGS ARE EXCLUSIVE + //list to hold temporary matches + List TagMatchingObjects = new List(); + + //LOOP THROUGH MATCHING OBJECTS LIST + foreach (AyaTypeId i in MatchingObjects) + { + var matchCount = await ct.TagMap.Where(x => x.TagToObjectId == i.ObjectId && x.TagToObjectType == i.ObjectType && searchParameters.Tags.Contains(x.TagId)).LongCountAsync(); + + } + + //FOREACH OBJECT SEARCH TAGMAP FOR MATCHING ALL TAGS FOR OBJECTTYPE AND ID + //IF NOT MATCH THEN REMOVE //REMOVE RESULTS FROM SEARCH PHRASE PHASE THAT ARE NOT MATCHING - //TODO: this + + #endregion } }