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

Why did this score 85 on Business?

Example 1:

Record A
Company: The Palmer Air Charters service company
Add1: 7350 Airport Rd #106
Add2: Wilmington
Add3: NC

Example 2: 

Record B
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, are they 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





mkorgname1 + mkpostout


PAC + 28401

mkorgname1 + mkphoneticstreet

pymyy + ypyt

PAC + ypyt

mkaddresskey + mkpremise

wylmypyt + 7350

wylmypyt + 7350


Because one of the records is missing a zip, we didn’t line it up on the first key.

because one of the companies is an acronym, we didn’t line it up on the 2nd key.

But because we had the same sounding street/city and same house number, we can line it up on the third key.

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 like most others, we try to look at it more like a human would, instead of a machine.

There’s three main components to the score



1. Organization

With the Company, we want to look at the mknormalizedorganization, as mentioned previously, we look at it left to right, generally limiting ourselves to the first three significant words

So we have

Company A : The Palmer Air Charters service company      
Company B : PAC

which normalize to



There’s a matrix xml that we have with many predetermined decisions, so when we look at this from left to right

In this case, we have the one exception to the rule with this example, an acronym match, we’ll scan through the matrix and realize there wasn’t a match, and do a final check and see the PAC and Pamer Air Charters line up, and default it to a likely score.

If we look at the matrix stored by default in 


If we had something like Palmr Air and Palmer Air Charters, 

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

Whereas  if we had a Palmer Air, and Palmer Air charters  it would  be  Equal, Equal, one empty, and score  sure, which is 60 points

Wheras if the name were transposed  like Air Charters by Palmer, and  Palmer Air Charters, 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

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

Wheras say the zip was transposed

28401-4273  matching


 = possible  = 15

So company 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