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); }
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)); }
/// <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); } }
/// <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)); }