private string FindDuplicatesSafety(FindDuplicatesRequest findDuplicatesOnSaveRequest)
        {
            var result = string.Empty;

            try {
                var duplicates = DeduplicationManager.FindDuplicates(findDuplicatesOnSaveRequest);
                result = JsonConvert.SerializeObject(duplicates);
            } catch (Exception ex) {
                _log.Error("There is error during searching duplicates", ex);
            }
            return(result);
        }
Esempio n. 2
0
        private DuplicatesCollection FindSimilarRecords(
            ICollection <DuplicatesRuleDTO> duplicatesRules,
            FindDuplicatesRequest findDuplicatesOnSaveRequest)
        {
            if (duplicatesRules.Count == 0)
            {
                return(null);
            }
            var searchQuery = _deduplicationSearchQueryBuilder
                              .BuildSearchQuery(duplicatesRules, findDuplicatesOnSaveRequest);

            return(searchQuery == null ? null : _searchProvider.Search(searchQuery));
        }
Esempio n. 3
0
        /// <inheritdoc cref="IDeduplicationManager.FindDuplicates"/>
        public DuplicatesCollection FindDuplicates(FindDuplicatesRequest findDuplicatesOnSaveRequest)
        {
            var timer = new Stopwatch();

            try {
                timer.Start();
                var entityRules = _duplicatesRuleManager
                                  .GetDuplicatesRules(findDuplicatesOnSaveRequest.SchemaName);
                return(FindSimilarRecords(entityRules.ToList(), findDuplicatesOnSaveRequest));
            }
            finally {
                timer.Stop();
                _metricReporter.Gauge(DuplicationSearchDurationMetricName, timer.ElapsedMilliseconds);
            }
        }
Esempio n. 4
0
        /// <inheritdoc cref="IFindSimilarRecordsRequestBuilder.BuildRequest(FindSimilarRecordsFromStoredRequest)"/>
        public FindDuplicatesRequest BuildRequest(FindSimilarRecordsFromStoredRequest findSimilarRecordsFromStoredRequest)
        {
            var filters = GetDuplicatesRuleFilters(findSimilarRecordsFromStoredRequest.SchemaName,
                                                   findSimilarRecordsFromStoredRequest.SourceSchemaName);
            var sourceColumnUids = GetColumnUIds(filters);
            var sourceEntity     = GetSourceEntity(findSimilarRecordsFromStoredRequest.SourceId,
                                                   findSimilarRecordsFromStoredRequest.SourceSchemaName, sourceColumnUids);
            var requestModel = GetRequestModel(sourceEntity, filters);
            var result       = new FindDuplicatesRequest {
                SchemaName = findSimilarRecordsFromStoredRequest.SchemaName,
                Columns    = new List <string> {
                    "Id"
                },
                Model = requestModel
            };

            return(result);
        }
        /// <inheritdoc cref="IDeduplicationSearchQueryBuilder.BuildSearchQuery"/>
        public SearchQuery BuildSearchQuery(
            IEnumerable <DuplicatesRuleDTO> rules,
            FindDuplicatesRequest findDuplicatesOnSaveRequest)
        {
            var model            = findDuplicatesOnSaveRequest.Model;
            var schemaName       = findDuplicatesOnSaveRequest.SchemaName;
            var searchQueryRules = rules.Select(rule => BuildSearchQueryRule(rule, model, schemaName))
                                   .Where(searchQueryRule => searchQueryRule != null)
                                   .ToList();

            if (searchQueryRules.Count == 0)
            {
                return(null);
            }
            return(new SearchQuery {
                From = findDuplicatesOnSaveRequest.From,
                Size = findDuplicatesOnSaveRequest.Size,
                Rules = searchQueryRules,
                Columns = findDuplicatesOnSaveRequest.Columns,
                SchemaName = findDuplicatesOnSaveRequest.SchemaName,
                PrimaryColumnValue = findDuplicatesOnSaveRequest.PrimaryColumnValue
            });
        }
 public string FindSimilarLeads(FindDuplicatesRequest findDuplicatesOnSaveRequest)
 {
     return(FindDuplicatesSafety(findDuplicatesOnSaveRequest));
 }