public override int SimilarityScore(PostBase post) { var otherPost = (GelbooruPost)post; int similarityScore = 0; if (FileUrl.Contains(".gif") || FileUrl.Contains(".webm")) { return(-10); } List <string> thisTags = new List <string>(GetTags().Split(' ').Where(w => w != "#tagme" && w != "" && w != "#solo")); List <string> postTags = new List <string>(otherPost.GetTags().Split(' ').Where(w => w != "#tagme" && w != "" && w != "#solo")); foreach (var tag in thisTags.Intersect(postTags)) { if (ImportantTags.Contains(tag)) { similarityScore += 100; } else { similarityScore += 1; } } //similarityScore += thisTags.Intersect(postTags).Count(); if (!GetPostAuthor().Equals("danbooru") && GetPostAuthor().Equals(otherPost.GetPostAuthor())) { similarityScore += 100; } if (ParentId != null && otherPost.ParentId != null) { if (ParentId.Equals(otherPost.ParentId)) { similarityScore += 100; } } return(similarityScore); }
public override bool IsSimilar(PostBase post, int trashold = 2) { return(SimilarityScore(post) >= trashold); }
public override bool Equals(PostBase other) { return(Md5.Equals(other.GetHash())); }