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 IReadOnlyList <TResult> BuildResultsInternal(AddressMatchBuilder results) => results.Select(g => g.Municipality).Select(_mapper.Map).ToList();