示例#1
0
        public static void ProcessCategory(string mcat_path, string job_id)
        {
            var context  = new NearDuplicatesDbContext();
            var listings = context.Listings.Where(x => x.mcat_path.StartsWith(mcat_path)).ToList();

            ProcessListings(listings, job_id, context);
        }
示例#2
0
        public static void ProcessSeller(int seller_id, string job_id)
        {
            var context  = new NearDuplicatesDbContext();
            var listings = context.Listings.Where(x => x.seller_id == seller_id).ToList();

            ProcessListings(listings, job_id, context);
        }
        public JsonResult GetListingsForSeller(int seller_id, string mcat_path)
        {
            if (IsPreFlight())
            {
                return(new JsonResult());
            }

            var context = new NearDuplicatesDbContext();

            var listings = context.Listings.Where(x =>
                                                  x.seller_id == seller_id &&
                                                  x.mcat_path.StartsWith(mcat_path) &&
                                                  (x.likely_duplicate_id_by_title != null && x.likely_duplicate_id_by_description == x.likely_duplicate_id_by_title)
                                                  ).ToList();

            var output = listings
                         .OrderByDescending(a => a.similarity_title)
                         .ThenByDescending(b => b.similarity_description)
                         .Select(x => new
            {
                x.id,
                x.category_id,
                x.mcat_path,
                x.seller_id,
                x.seller_name,
                x.title,
                x.similarity_title,
                x.similarity_description
            });

            return(Json(output, JsonRequestBehavior.AllowGet));
        }
        public JsonResult GetSellers(string mcat_path, int?seller_id)
        {
            if (IsPreFlight())
            {
                return(new JsonResult());
            }

            var context = new NearDuplicatesDbContext();

            var listings = context.Listings.Where(x =>
                                                  (string.IsNullOrEmpty(mcat_path) || x.mcat_path.StartsWith(mcat_path)) &&
                                                  (seller_id == null || x.seller_id == seller_id.Value) &&
                                                  (x.likely_duplicate_id_by_title != null && x.likely_duplicate_id_by_description == x.likely_duplicate_id_by_title))
                           .ToList();

            var sellers = listings.GroupBy(x => x.seller_id).ToList();

            var output = sellers.Select(x => new
            {
                seller_id = x.Key,
                x.First().seller_name,
                listings_count = x.Count()
            });

            return(Json(output, JsonRequestBehavior.AllowGet));
        }
示例#5
0
        private static void ProcessListings(List <Listing> listings, string job_id, NearDuplicatesDbContext context)
        {
            var duplicates = new Dictionary <long, long>();

            AnalyseListingTitles.ProcessTitles(listings, job_id, duplicates);
            AnalyseListingDescriptions.ProcessDescriptions(listings, job_id, duplicates);

            context.SaveChanges();
        }
示例#6
0
        public void RefreshSeller(int seller_id, string job_id)
        {
            var context = new NearDuplicatesDbContext();

            ProgressManager.UpdateJobPercent(job_id, 1M);

            RemoveListingsFromDb(context, seller_id, job_id);

            var output = GetNewListingsFromDb(seller_id);

            ProgressManager.IncrementJobPercentBy(job_id, 5M);

            AddBackToDatabase(context, output, job_id);

            ProgressManager.IncrementJobPercentBy(job_id, 5M);
        }
示例#7
0
        public void RefreshCategory(string mcat_path, string job_id)
        {
            var context = new NearDuplicatesDbContext();

            ProgressManager.UpdateJobPercent(job_id, 1M);

            RemoveListingsFromDb(context, mcat_path, job_id);

            var output = GetNewListingsFromDb(mcat_path);

            ProgressManager.IncrementJobPercentBy(job_id, 5M);

            AddBackToDatabase(context, output, job_id);

            ProgressManager.IncrementJobPercentBy(job_id, 5M);
        }
        public JsonResult GetComparison(long listing_id)
        {
            if (IsPreFlight())
            {
                return(new JsonResult());
            }

            var context = new NearDuplicatesDbContext();
            var query   = context.Listings.AsQueryable();

            var baseListing                   = query.First <Listing>(x => x.id == listing_id);
            var closestDuplicateByTitle       = baseListing.likely_duplicate_id_by_title.HasValue ? query.FirstOrDefault(x => x.id == baseListing.likely_duplicate_id_by_title) : null;
            var closestDuplicateByDescription = baseListing.likely_duplicate_id_by_description.HasValue ? query.FirstOrDefault(x => x.id == baseListing.likely_duplicate_id_by_description) : null;

            var output = new
            {
                baseListing,
                duplicate = closestDuplicateByTitle ?? closestDuplicateByDescription,
            };

            return(Json(output, JsonRequestBehavior.AllowGet));
        }
示例#9
0
 private void RemoveListingsFromDb(NearDuplicatesDbContext context, int seller_id, string job_id)
 {
     context.Listings.RemoveRange(context.Listings.AsQueryable().Where(x => x.seller_id == seller_id));
 }
示例#10
0
 private void RemoveListingsFromDb(NearDuplicatesDbContext context, string mcat_path, string job_id)
 {
     context.Listings.RemoveRange(context.Listings.AsQueryable().Where(x => x.mcat_path.StartsWith(mcat_path)));
 }
示例#11
0
 private void AddBackToDatabase(NearDuplicatesDbContext context, List <Listing> listings, string job_id)
 {
     context.Listings.AddRange(listings);
     context.SaveChanges();
 }