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);
        }
示例#2
0
 protected override IReadOnlyList <TResult> BuildResultsInternal(AddressMatchBuilder results) =>
 results.Select(g => g.Municipality).Select(_mapper.Map).ToList();