mSQL - SSIS Tutorial - Understanding Matching - Why did this score 85 on Individual Level?

Why did this score 85 on individual

Example 1:

Record A
Fullname: Mr. W. R Dayton Jr
Company: The Palmer Air Charters service company
Add1: 7350 Airport Rd #106
Add2: Wilmington
Add3: NC


Example 2: 

Record B
First Name: Bill
Last name: Deighton
Company: PAC
Add1: Suite 106
Add2: 7350 Airport Rd
Add3: Wilmington
Add4: NC
Zip:  28401-4273


And we’re trying to match them on name or company.

The first question we should be asking is actually if they're even being compared in the first place.  Because remember our matching works as a two step process, we line it up on the keys, then score it.

So we have 3 default keys





mkname1 + mkpostout


dytym + 28401

mkname1 + mkphoneticstreet

dytym + ypyt

dytym + ypyt

mkaddresskey + mkpremise

wylmypyt + 7350

wylmypyt + 7350


Because one of the records is missing a zip, we can’t line it up there.

But because we have the same sounding last name and street name, we were able to line it up on the 2nd key.

And because we had the same sounding street/city and same house number, we can line it up on the third key (although because we found it on the 2nd, we’re not going to compare it twice). 

So we know its being compared, often clients may wonder why something isn’t scoring, but the actual issue is that it wasn’t being compared in the first place, so that should be the first thing you check. 

So now that we know its being compared, let's find out what it's going to score.

By default, the score is a cumulative score, we don’t work on percentages, we try to look at it more like a human would, instead of a machine.

There are three main components to the score



1. Name Scoring

With the Name, we want to look at the mknormalizedname, as mentioned previously, we look at it as last/first/middle.

So we have:

Fullname : Mr. W. R Dayton Jr

Firstname: Bill
Lastname: Deighton

Which normalized to:





There’s a matching matrix xml that we have with many pre determined decisions, so when we look at this from left to right we see this pattern:


The last name sounds equal

The first initial is likely short for Will, which is equivalent to Bill, so we assume that’s equal (we'll scan through the names.dat for those translations).

And one has a middle initial, and one doesn’t



Last = Sounds Equal
First = Equal
Middle = One Empty

If we look at the matrix stored by default in

If we navigate through it, we see the pattern it follows, and the associated score. So in this case, the likely score is equal to 40 points.

Whereas  if we had a Will Dayton and Bill Dayton, it would be Equal, Equal, both empty, and score sure, which is 60 points

Wheras if the name were transposed like Bill Dayton, and Dayton Will,  it would only score possible, which is 25.

Some advanced clients will replace the sure/likely/possible entries in the matrix with decimal values, to get more granularity in their results 


2. Address

 When we score on the address, we look at the address lines as a whole, we don't explicitly match address1 to address1, address2 to address2, etc...

Record A:
Add1: 7350 Airport Rd #106
Add2: Wilmington
Add3: NC


Record B:
Add1: Suite 106
Add2: 7350 Airport Rd
Add3: Wilmington
Add4: NC

We use our own proprietary algorithm that looks across these columns as a whole.

In this case, even though the number of address lines is different, and the suite’s before the street in one, and abbreviated differently in the other, we’re pretty sure these are dead on, so we will give it a 40 out of 40,  whereas say one was missing the city, we’d only get a 34, and if less than 50% of it was right, we’d end up just throwing it out and not scoring at all.

Address scores range from 20-40 by default in the US

Or 15-30 by default in the UK


3. Zipcode

In this case one record had a postcode/zip, and one didn’t, 

If you look at the weights under zipcode, you’ll see we still have a score for this situation. (you can access these weights from findmatches or find overlap tasks , each matching level has its own set of weights).

The reason we put a small weight because of the lack of information is that sometimes that score will give it a little extra to push it above the minimum score, as well as separate it from a situation where it was just two completely different postcode/zips. 

So if the address wasn’t 100%, we’d need those extra points to push it above the minimum score – which is 80 by default.

Now if both your records actually have a zip, your scores may be different.


A sure score is when you have two records with the same 9 digit zip

28401-4273  matching 28401-4273 =  sure   = 30



28401-4273 matching

28401 or 


Where only the first five digits are the same   = likely  = 20


Whereas say the zip was transposed

28401-4273  matching 


= possible  = 15


4. The Cumulative Score

So names are based on the matrix, address is based on an algorithm that looks at the address lines as a whole, and the zip has its own separate rules.

Once we go through all 3  we add up the score

Name = 40
Address = 40
Zip = 5

Total =  85

To get more insight into why your matches scored what they did, ensure you’re breaking out the component scores, its an option in your findmatches/findoverlap task when you’re showing advanced options.




Was this article helpful?
0 out of 0 found this helpful

have a question or not finding what you're looking for?

Submit a ticket to get some help