public EnContactMatcher()

in src/cs/Microsoft.PhoneticMatching/Matchers/ContactMatcher/EnContactMatcher.cs [43:87]


        public EnContactMatcher(IList<Contact> contacts, Func<Contact, ContactFields> extractContactFields, MatcherConfig config)
            : base(config)
        {
            var targetEqualityComparer = new TargetEqualityComparer();
            HashSet<Target<Contact>> nameTargets = new HashSet<Target<Contact>>(targetEqualityComparer);
            HashSet<Target<Contact>> aliasTargets = new HashSet<Target<Contact>>(targetEqualityComparer);

            this.nameMaxWindowSize = 1;
            this.aliasMaxWindowSize = 1;

            for (int idx = 0; idx < contacts.Count; ++idx)
            {
                var contact = contacts[idx];
                var fields = extractContactFields(contact);

                if (fields.Name != null)
                {
                    var name = Preprocessor.PreProcess(fields.Name);
                    var nameVariations = this.AddNameVariations(contact, name, idx);

                    this.nameMaxWindowSize = Math.Max(this.nameMaxWindowSize, nameVariations.Count);

                    foreach (var variation in nameVariations)
                    {
                        nameTargets.Add(variation);
                    }
                }

                if (fields.Aliases != null)
                {
                    foreach (var aliasName in fields.Aliases)
                    {
                        var aliasVariations = this.AddNameVariations(contact, aliasName, idx);
                        this.aliasMaxWindowSize = Math.Max(this.aliasMaxWindowSize, aliasVariations.Count);
                        foreach (var variation in aliasVariations)
                        {
                            aliasTargets.Add(variation);
                        }
                    }
                }
            }
            
            this.nameFuzzyMatcher = new EnHybridFuzzyMatcher<Target<Contact>>(nameTargets.ToArray(), this.Config.PhoneticWeightPercentage, (contact) => contact.Phrase);
            this.aliasFuzzyMatcher = new EnHybridFuzzyMatcher<Target<Contact>>(aliasTargets.ToArray(), this.Config.PhoneticWeightPercentage, (contact) => contact.Phrase);
        }