protected override AddressMatchBuilder?DoMatchInternal(AddressMatchBuilder?results) { var municipalities = _latestQueries .GetAllLatestMunicipalities() .ToList(); var municipalitiesByName = FilterByName(municipalities, results); var municipalitiesByNisCode = FilterByNisCode(municipalities, results); results?.AddMunicipalities(municipalitiesByName.Union(municipalitiesByNisCode)); if (results.Distinct(new MunicipalityNameComparer()).Count() > 1) { _warnings.AddWarning("9", "Geen overeenkomst tussen 'Niscode' en 'Gemeentenaam'."); } if (!string.IsNullOrEmpty(results?.Query.PostalCode)) { results .AddMunicipalitiesByPostalCode( FilterByPostalCode(municipalities, results), results.Query.PostalCode); } if (string.IsNullOrEmpty(results?.Query.MunicipalityName) || results.Any()) { return(results); } var municipalitiesByPostalCode = FilterByPartOfMunicipality(municipalities, results) .GroupBy(municipalityPostCode => municipalityPostCode.Item1); foreach (var municipalitiesGroup in municipalitiesByPostalCode) { results.AddMunicipalitiesByPostalCode( municipalitiesGroup .Select(municipalityPostCode => municipalityPostCode.Item2), municipalitiesGroup.Key); } if (results.Any()) { return(results); } var municipalitiesByFuzzyMatch = municipalities .Where(municipality => !string.IsNullOrWhiteSpace(municipality.NameDutchSearch) && municipality.NameDutchSearch.EqFuzzyMatch(results.Query.MunicipalityName, _config.FuzzyMatchThreshold) || !string.IsNullOrWhiteSpace(municipality.NameFrenchSearch) && municipality.NameFrenchSearch.EqFuzzyMatch(results.Query.MunicipalityName, _config.FuzzyMatchThreshold) || !string.IsNullOrWhiteSpace(municipality.NameGermanSearch) && municipality.NameGermanSearch.EqFuzzyMatch(results.Query.MunicipalityName, _config.FuzzyMatchThreshold) || !string.IsNullOrWhiteSpace(municipality.NameEnglishSearch) && municipality.NameEnglishSearch.EqFuzzyMatch(results.Query.MunicipalityName, _config.FuzzyMatchThreshold)); results.AddMunicipalities(municipalitiesByFuzzyMatch); return(results); }
protected override AddressMatchBuilder DoMatchInternal(AddressMatchBuilder results) { if (!string.IsNullOrEmpty(results.Query.KadStreetNameCode)) { FindStreetNamesByKadStreetCode(results); } if (!string.IsNullOrEmpty(results.Query.RrStreetCode) && !string.IsNullOrEmpty(results.Query.PostalCode)) { FindStreetNamesByRrStreetCode(results); } if (!string.IsNullOrEmpty(results.Query.StreetName)) { Dictionary <string, List <StreetNameLatestItem> > municipalityWithStreetNames = _latestQueries.GetLatestStreetNamesBy(results.Select(g => g.Name).ToArray()).GroupBy(s => s.NisCode).ToDictionary(g => g.Key, g => g.ToList()); FindStreetNamesByName(results, municipalityWithStreetNames); if (!IsValidMatch(results)) { FindStreetNamesByNameToggleAbreviations(results, municipalityWithStreetNames); } if (!IsValidMatch(results)) { FindStreetNamesByFuzzyMatch(results, municipalityWithStreetNames); } if (!IsValidMatch(results)) { FindStreetNamesByFuzzyMatchToggleAbreviations(results, municipalityWithStreetNames); } if (!IsValidMatch(results) && results.Query.StreetName.Length > 3) { FindStreetNamesByStreetNameContainsInput(results, municipalityWithStreetNames); } if (!IsValidMatch(results) && results.Query.StreetName.Length > 3) { FindStreetNamesByInputContainsStreetName(results, municipalityWithStreetNames); } } if (!IsValidMatch(results)) { _warnings.AddWarning("10", "'Straatnaam' niet interpreteerbaar."); //foreach (var gemeente in results) // _telemetry.TrackStraatnaamMatch(gemeente.Naam, results.Query.Straatnaam, results.Query.KadStraatcode, results.Query.RrStraatcode, 0, (int)StraatnaamMatchLevel.NoMatch); } else if (results.AllStreetNames().Count() > _config.MaxStreetNamesThreshold) { _warnings.AddWarning("100", "Uw zoekopdracht is te generiek"); results.ClearAllStreetNames(); } return(results); }
protected override AddressMatchBuilder?DoMatchInternal(AddressMatchBuilder?builder) { if (string.IsNullOrEmpty(builder?.Query.HouseNumber) || string.IsNullOrEmpty(builder?.Query.RrStreetCode)) { return(builder); } var rrAddresses = _kadRrService .GetAddressesBy( builder.Query.HouseNumber, builder.Query.Index, builder.Query.RrStreetCode, builder.Query.PostalCode) .ToList(); if (!rrAddresses.Any()) { return(builder); } _warnings.AddWarning("21", "De adressen in het resultaat werden gevonden via een rechtstreekse link naar het opgegeven rijksregister adres."); builder.AddRrAddresses(rrAddresses); return(builder); }
protected override AddressMatchBuilder DoMatchInternal(AddressMatchBuilder results) { var municipalities = _latestQueries.GetAllLatestMunicipalities().ToList(); var municipalitiesByName = FilterByName(municipalities, results); var municipalitiesByNisCode = FilterByNisCode(municipalities, results); results.AddMunicipalities(municipalitiesByName.Union(municipalitiesByNisCode)); if (results.Count() > 1) { _warnings.AddWarning("9", "Geen overeenkomst tussen 'Niscode' en 'Gemeentenaam'."); } if (!string.IsNullOrEmpty(results.Query.PostalCode)) { results.AddMunicipalitiesByPostalCode(FilterByPostalcode(municipalities, results), results.Query.PostalCode); } if (!string.IsNullOrEmpty(results.Query.MunicipalityName) && !results.Any()) { var municipalitiesByPostalCode = FilterByPartOfMunicipality(municipalities, results) .GroupBy(municipalityPostCode => municipalityPostCode.Item1); foreach (var municipalitiesGroup in municipalitiesByPostalCode) { results.AddMunicipalitiesByPostalCode(municipalitiesGroup.Select(municipalityPostCode => municipalityPostCode.Item2), municipalitiesGroup.Key); } if (!results.Any()) { var municipalitiesByFuzzyMatch = municipalities.Where(g => g.DefaultName.Value.EqFuzzyMatch(results.Query.MunicipalityName, _config.FuzzyMatchThreshold)); results.AddMunicipalities(municipalitiesByFuzzyMatch); } } //_telemetry.TrackGemeenteMatch(results.Query.Gemeentenaam, results.Query.Niscode, results.Query.Postcode, results.Count()); return(results); }
protected override AddressMatchBuilder DoMatchInternal(AddressMatchBuilder builder) { if (!string.IsNullOrEmpty(builder.Query.HouseNumber) && !string.IsNullOrEmpty(builder.Query.RrStreetCode)) { IEnumerable <AddressDetailItem> rrAddresses = _kadRrService.GetAddressesBy(builder.Query.HouseNumber, builder.Query.Index, builder.Query.RrStreetCode, builder.Query.PostalCode).ToList(); if (rrAddresses.Any()) { builder.AddRrAddresses(rrAddresses); _warnings.AddWarning("21", "De adressen in het resultaat werden gevonden via een rechtstreekse link naar het opgegeven rijksregister adres."); } } return(builder); }
protected override AddressMatchBuilder?DoMatchInternal(AddressMatchBuilder?results) { if (!string.IsNullOrEmpty(results?.Query.KadStreetNameCode)) { FindStreetNamesByKadStreetCode(results); } if (!string.IsNullOrEmpty(results?.Query.RrStreetCode) && !string.IsNullOrEmpty(results.Query.PostalCode)) { FindStreetNamesByRrStreetCode(results); } if (!string.IsNullOrEmpty(results?.Query.StreetName)) { var municipalityWithStreetNames = _latestQueries .GetLatestStreetNamesBy( results .Select(g => g.Name) .ToArray()) .Where(s => s.NisCode != null) .GroupBy(s => s.NisCode !) .ToDictionary(g => g.Key, g => g.ToList()); FindStreetNamesByName(results, municipalityWithStreetNames); var isValidStreetnameMatch = IsValidMatch(results); if (isValidStreetnameMatch.HasValue && !isValidStreetnameMatch.Value) { FindStreetNamesByNameToggleAbreviations(results, municipalityWithStreetNames); } isValidStreetnameMatch = IsValidMatch(results); if (isValidStreetnameMatch.HasValue && !isValidStreetnameMatch.Value) { FindStreetNamesByFuzzyMatch(results, municipalityWithStreetNames); } isValidStreetnameMatch = IsValidMatch(results); if (isValidStreetnameMatch.HasValue && !isValidStreetnameMatch.Value) { FindStreetNamesByFuzzyMatchToggleAbreviations(results, municipalityWithStreetNames); } isValidStreetnameMatch = IsValidMatch(results); if (isValidStreetnameMatch.HasValue && !isValidStreetnameMatch.Value && results.Query.StreetName.Length > 3) { FindStreetNamesByStreetNameContainsInput(results, municipalityWithStreetNames); } isValidStreetnameMatch = IsValidMatch(results); if (isValidStreetnameMatch.HasValue && !isValidStreetnameMatch.Value && results.Query.StreetName.Length > 3) { FindStreetNamesByInputContainsStreetName(results, municipalityWithStreetNames); } } var validMatch = IsValidMatch(results); if (validMatch.HasValue && !validMatch.Value) { _warnings.AddWarning("10", "'Straatnaam' niet interpreteerbaar."); } else if (results?.AllStreetNames().Count() > _config.MaxStreetNamesThreshold) { _warnings.AddWarning("100", "Uw zoekopdracht is te generiek"); results.ClearAllStreetNames(); } return(results); }