private void Individuals_without_data_do_not_match_at_all()
        {
            var individual1 = new GedcomIndividualRecord();
            var individual2 = new GedcomIndividualRecord();

            var match = individual1.CalculateSimilarityScore(individual2);

            Assert.Equal(decimal.Zero, match);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Finds the duplicates.
        /// </summary>
        /// <param name="indi">The indi.</param>
        /// <param name="databaseB">The database b.</param>
        /// <param name="matchThreshold">The match threshold.</param>
        /// <returns>A list of duplicate records.</returns>
        public static List <GedcomIndividualRecord> FindDuplicates(GedcomIndividualRecord indi, GedcomDatabase databaseB, decimal matchThreshold)
        {
            List <GedcomIndividualRecord> matches = new List <GedcomIndividualRecord>();

            foreach (GedcomIndividualRecord matchIndi in databaseB.Individuals)
            {
                // can't match self, databaseB could be the same database as indi.Database
                // so we can check this
                if (matchIndi != indi)
                {
                    var match = indi.CalculateSimilarityScore(matchIndi);

                    if (match > matchThreshold)
                    {
                        matches.Add(matchIndi);

                        // System.Console.WriteLine(indi.Names[0].Name + " matches " + matchIndi.Names[0].Name + " at " + match + "%");
                    }
                }
            }

            return(matches);
        }