Why is my duplicate store matching these two addresses?

robm
robm Member

Can anyone shine some light onto why my duplicate store is matching these two addresses:

Flat 11, Kylna Court, Wood Lane End, Hemel Hempstead, Hertfordshire, HP2 4BF
Flat 22, Kylna Court, Wood Lane End, Hemel Hempstead, Hertfordshire, HP2 4BF

The records are being standardised like this:

The workbench explains the match as follows:

Can my problem be fixed simply by changing:

RuralAddressType.Exact={RuralAddressCriteria.Exact & PremisesTheme.Exact & (MinorStreetAbsent.Exact | MinorStreetTheme.Exact) & LocalityPostcodeTheme.Exact}

to

RuralAddressType.Exact={RuralAddressCriteria.Exact & PremisesTheme.Exact & (MinorStreetAbsent.Exact | MinorStreetTheme.Exact) & LocalityPostcodeTheme.Exact & SubPremisesAbsent.Exact}

Also, why isn’t FLATADDRESSCRITERIA.EXACT true?

// RULES
@default.country=GBR

/*

  • ALIASES
    */
    define Exact as L0
    define Close as L1
    define Probable as L2
    define Possible as L3
    // Default match levels might still appear in low level Theme and Element rules on specific data elements, but will not contribute to highest level Match result

/*

  • MATCH RULES
    */
    Match.Exact={Address.Exact}
    Match.Close={Address.Close}

/*

  • TOP LEVEL RULES
    */
    Address.Exact={BuildingAddressType.Exact | CompanyAddressType.Exact | FlatAddressType.Exact | HouseAddressType.Exact | PoBoxAddressType.Exact | RuralAddressType.Exact}
    Address.Close={BuildingAddressType.Close | CompanyAddressType.Close | FlatAddressType.Close | HouseAddressType.Close | PoBoxAddressType.Close | RuralAddressType.Close}

/*

  • Address Type - HOUSE ADDRESS
  • 10 DOWNING STREET, LONDON, SW1A 2AA

*/
HouseAddressCriteria.Exact={CompanyAbsent.Exact & PoBoxAbsent.Exact & SubPremisesAbsent.Exact & BuildingAbsent.Exact}
HouseAddressType.Exact={HouseAddressCriteria.Exact & PremisesTheme.Exact & MinorStreetTheme.Exact & LocalityPostcodeTheme.Exact}
HouseAddressType.Close={HouseAddressCriteria.Exact & PremisesTheme.Close & MinorStreetTheme.Close & LocalityPostcodeTheme.Close}
HouseAddressType.Probable={HouseAddressCriteria.Exact & MinorStreetTheme.Probable & ((PremisesTheme.Probable & LocalityPostcodeTheme.Probable) | (PremisesOnePopulated.Exact & LocalityPostcodeTheme.Close))}
HouseAddressType.Possible={HouseAddressCriteria.Exact & MinorStreetTheme.Probable & LocalityPostcodeTheme.Possible}

/*

  • Address Type - BUILDING ADDRESS
  • OLD BREWERY, 2 THE MALTINGS, MILTON ABBAS, BLANDFORD, DT11 0BH

*/
BuildingAddressCriteria.Exact={CompanyAbsent.Exact & PoBoxAbsent.Exact & SubPremisesAbsent.Exact & BuildingPresent.Exact}

BuildingAddressType.Exact={BuildingAddressCriteria.Exact & PremisesTheme.Exact & MinorStreetTheme.Exact & LocalityPostcodeTheme.Exact}
BuildingAddressType.Close={BuildingAddressCriteria.Exact & PremisesTheme.Close & MinorStreetTheme.Close & LocalityPostcodeTheme.Close}
BuildingAddressType.Probable={BuildingAddressCriteria.Exact & ((PremisesTheme.Probable & MinorStreetTheme.Probable & LocalityPostcodeTheme.Probable) | BuildingLocalityOrPostcodeMatch.Exact)}
BuildingAddressType.Possible={BuildingAddressCriteria.Exact & PremisesTheme.Close & LocalityPostcodeTheme.Probable}

/*

  • Address Type - FLAT ADDRESS
  • FLAT 14, PEMBROKE HOUSE, 71 KINGS AVENUE, LONDON, SW4 8CG

*/
FlatAddressCriteria.Exact={CompanyAbsent.Exact & PoBoxAbsent.Exact & (SubPremisesPresent.Exact | SubPremisesOnePopulated.Exact)}

FlatAddressType.Exact={FlatAddressCriteria.Exact & SubPremisesTheme.Exact & PremisesTheme.Exact & MinorStreetTheme.Exact & LocalityPostcodeTheme.Exact}
FlatAddressType.Close={FlatAddressCriteria.Exact & SubPremisesTheme.Close & (PremisesTheme.Close | PremisesOnePopulated.Exact) & MinorStreetTheme.Close & LocalityPostcodeTheme.Close}
FlatAddressType.Probable={FlatAddressCriteria.Exact & SubPremisesTheme.Probable & PremisesTheme.Close & MinorStreetTheme.Probable & LocalityPostcodeTheme.Probable}
FlatAddressType.Possible={FlatAddressCriteria.Exact & SubPremisesTheme.Possible & MinorStreetTheme.Probable & LocalityPostcodeTheme.Probable}

/*

  • Address Type - RURAL ADDRESS
  • NEW INN COTTAGE, BECKLEY, OXFORD, OX3 9TY
  • MANOR FARM BARNS, FOX ROAD, FRAMINGHAM PIGOT, NORWICH, NR14 7PZ

*/
RuralAddressCriteria.Exact={CompanyAbsent.Exact & PoBoxAbsent.Exact & MinorStreetNumberAbsent.Exact}

RuralAddressType.Exact={RuralAddressCriteria.Exact & PremisesTheme.Exact & (MinorStreetAbsent.Exact | MinorStreetTheme.Exact) & LocalityPostcodeTheme.Exact}
RuralAddressType.Close={RuralAddressCriteria.Exact & PremisesTheme.Close & LocalityPostcodeTheme.Close}
RuralAddressType.Probable={RuralAddressCriteria.Exact & MinorStreetTheme.Close & LocalityPostcodeTheme.Close}
RuralAddressType.Possible={RuralAddressCriteria.Exact & PremisesTheme.Close & LocalityPostcodeTheme.Probable}

/*

  • Address Type - COMPANY ADDRESS
  • SWEET N SOUR CHINESE TAKEAWAY, 1127 BOLTON ROAD, BRADFORD, BD2 4SP

*/
CompanyAddressCriteria.Exact={CompanyPresent.Exact | CompanyOnePopulated.Exact}

CompanyAddressType.Exact={CompanyAddressCriteria.Exact & Company.Exact & (SubPremisesAbsent.Exact | SubPremisesTheme.Exact) & (PremisesAbsent.Exact | PremisesTheme.Exact) & MinorStreetTheme.Exact & LocalityPostcodeTheme.Exact}
CompanyAddressType.Close={CompanyAddressCriteria.Exact & (Company.Close | PremisesTheme.Exact) & (MinorStreetAbsent.Exact | MinorStreetTheme.Close | DependentLocality.Close) & LocalityPostcodeTheme.Probable}
CompanyAddressType.Probable={CompanyAddressCriteria.Exact & Company.Probable & LocalityPostcodeTheme.Close}
CompanyAddressType.Possible={CompanyAddressCriteria.Exact & MinorStreetTheme.Probable & LocalityPostcodeTheme.Probable}

/*

  • Address Type - POSTAL DELIVERY
  • RCA BANK, PO BOX 789, BRISTOL, BS99 7PP

*/
PoBoxAddressType.Exact={(CompanyAbsent.Exact | Company.Exact) & PoBoxTheme.Exact & LocalityPostcodeTheme.Exact}
PoBoxAddressType.Close={PoBoxTheme.Close & LocalityPostcodeTheme.Close}
PoBoxAddressType.Probable={PoBoxTheme.Probable & LocalityPostcodeTheme.Probable}
PoBoxAddressType.Possible={PoBoxTheme.Possible & LocalityPostcodeTheme.Probable}

/*

  • ADDRESS THEMES
    */

// Theme - SUBPREMISES
SubPremisesTheme.Exact={(SubBuilding_Number.Exact | SubBuilding_Description.Exact) & SubBuilding_Type.Exact}
SubPremisesTheme.Close={((SubBuilding_Number.Close | SubBuilding_Description.Close) & SubBuilding_Type.Close) | SubBuilding_Number.Exact | SubBuilding_Description.Exact}
SubPremisesTheme.Probable={(SubBuilding_Number.Probable | SubBuilding_Description.Probable) & SubBuilding_Type.Probable}
SubPremisesTheme.Possible={(SubBuilding_Number.Possible | SubBuilding_Description.Possible) & SubBuilding_Type.Probable}

SubPremisesAbsent.Exact={SubBuilding_Number[NonePopulated] & SubBuilding_Description[NonePopulated]}
SubPremisesOnePopulated.Exact={SubBuilding_Number[OnePopulated] | SubBuilding_Description[OnePopulated]}
SubPremisesNoMatch.Exact={SubBuilding_Number[NoMatch] & SubBuilding_Description[NoMatch]}
SubPremisesPresent.Exact={SubPremisesTheme.Possible | SubPremisesNoMatch.Exact}

// Theme - PREMISES
PremisesTheme.Exact={FullPremisesMatch.Exact | (BuildingAbsent.Exact & MinorStreet_Number.Exact) | (MinorStreetNumberAbsent.Exact & Building_Description.Exact)}
PremisesTheme.Close={Building_Description.Close | MinorStreet_Number.Close}
PremisesTheme.Probable={Building_Description.Probable | MinorStreet_Number.Probable}
PremisesTheme.Possible={Building_Description.Possible | MinorStreet_Number.Possible}

PremisesAbsent.Exact={Building_Description[NonePopulated] & MinorStreet_Number[NonePopulated]}
PremisesOnePopulated.Exact={Building_Description[OnePopulated] | MinorStreet_Number[OnePopulated]}
FullPremisesMatch.Exact={MinorStreet_Number.Exact & Building_Description.Exact}

// Theme - MINOR STREET
MinorStreetTheme.Exact={MinorStreet_Description.Exact & MinorStreet_Type.Exact & MinorStreet_Postdirectional.Exact}
MinorStreetTheme.Close={MinorStreet_Description.Close & MinorStreet_Postdirectional.Close}
MinorStreetTheme.Probable={MinorStreet_Description.Probable & MinorStreet_Type.Close}

MinorStreetAbsent.Exact={MinorStreet_Description[NonePopulated] & MinorStreet_Type[NonePopulated] & MinorStreet_Postdirectional[NonePopulated]}
MinorStreetOnePopulated.Exact={MinorStreet_Description[OnePopulated]}

// Theme - PO BOX
PoBoxTheme.Exact={PoBox_Number.Exact & PoBox_Description.Exact}
PoBoxTheme.Close={PoBox_Number.Exact & PoBox_Description.Close}
PoBoxTheme.Probable={PoBox_Number.Close & PoBox_Description.Probable}
PoBoxTheme.Possible={PoBox_Number.Probable & PoBox_Description.Probable}

PoBoxAbsent.Exact={PoBox_Description[NonePopulated]}
PoBoxOnePopulated.Exact={PoBox_Description[OnePopulated]}

// Theme - DEPENDENT LOCALITY, LOCALITY AND POSTCODE
LocalityPostcodeTheme.Exact={(DependentLocalityAbsent.Exact | DependentLocality.Exact) & Locality.Exact & Postcode.Exact}
LocalityPostcodeTheme.Close={(DependentLocality.Close & Locality.Close) | ((DependentLocality.Close | Locality.Probable) & Postcode.Close)}
LocalityPostcodeTheme.Probable={(DependentLocality.Probable & Locality.Close) | DependentLocality.Close | Postcode.Probable}
LocalityPostcodeTheme.Possible={(Locality.Probable | Postcode.Possible)}

// Composite themes
BuildingLocalityOrPostcodeMatch.Exact={Building_Description.Exact & LocalityPostcodeTheme.Close}
PremisesOrStreetAndLocalityPostcodeMatch.Exact={(PremisesTheme.Exact | MinorStreetTheme.Exact| PreLocalityElementsOneOrBothMissing.Exact) & (LocalityPostcodeTheme.Exact | (LocalityElementsOneOrBothMissing.Exact & Postcode.Exact))}

PreLocalityElementsOneOrBothMissing.Exact={(PremisesAbsent.Exact | PremisesOnePopulated.Exact) & (MinorStreetAbsent.Exact | MinorStreetOnePopulated.Exact) & (CompanyAbsent.Exact | CompanyOnePopulated.Exact) & (PoBoxAbsent.Exact | PoBoxOnePopulated.Exact)}
LocalityElementsOneOrBothMissing.Exact={(DependentLocalityAbsent.Exact | DependentLocalityOnePopulated.Exact) & (LocalityAbsent.Exact | LocalityOnePopulated.Exact)}

/*

  • ADDRESS ELEMENTS
    */

// Element - COMPANY
Company.Exact={[ExactMatch]}
Company.Close={Levenshtein[77%]}
Company.Probable={Levenshtein[60%]}

CompanyAbsent.Exact={Company[NonePopulated]}
CompanyOnePopulated.Exact={Company[OnePopulated]}
CompanyNoMatch.Exact={Company[NoMatch]}
CompanyPresent.Exact={Company.Probable | CompanyNoMatch.Exact}

// Elements - SUBBUILDING_NUMBER, SUBBUILDING_DESCRIPTION and SUBBUILDING_TYPE
SubBuilding_Number.Exact={[ExactMatch]}
SubBuilding_Number.Close={PremiseCompare[StartMatch,StartMatchAndEncapsulated,EndMatch,EndMatchAndEncapsulated]}
SubBuilding_Number.Probable={PremiseCompare[Encapsulated,NumberMatchWithTrailingAlpha,OnePopulated]}
SubBuilding_Number.Possible={PremiseCompare[Overlapped,NumberMatchWithDifferingAlpha]}

SubBuilding_Description.Exact={[ExactMatch]}
SubBuilding_Description.Close={Levenshtein[77%]}
SubBuilding_Description.Probable={Levenshtein[60%,OnePopulated]}
SubBuilding_Description.Possible={Levenshtein[50%]}

SubBuilding_Type.Exact={StandardSpelling[ExactMatch,NonePopulated] | StandardAbbreviation[ExactMatch]}
SubBuilding_Type.Close={StandardSpelling.Levenshtein[1]}
SubBuilding_Type.Probable={StandardSpelling.Levenshtein[2,OnePopulated]}

// Element - BUILDING_DESCRIPTION
Building_Description.Exact={[ExactMatch]}
Building_Description.Close={Levenshtein[77%]}
Building_Description.Probable={Levenshtein[60%,OnePopulated]}
Building_Description.Possible={Levenshtein[50%]}

BuildingAbsent.Exact={Building_Description[NonePopulated]}
BuildingNoMatch.Exact={Building_Description[NoMatch]}
BuildingPresent.Exact={Building_Description.Possible | BuildingNoMatch.Exact}

// Element - MINORSTREET_NUMBER
MinorStreet_Number.Exact={[ExactMatch]}
MinorStreet_Number.Close={PremiseCompare[StartMatch,StartMatchAndEncapsulated,EndMatch,EndMatchAndEncapsulated]}
MinorStreet_Number.Probable={PremiseCompare[Encapsulated,NumberMatchWithTrailingAlpha]}
MinorStreet_Number.Possible={PremiseCompare[Overlapped,NumberMatchWithDifferingAlpha,OnePopulated]}

MinorStreetNumberAbsent.Exact={MinorStreet_Number[NonePopulated]}

// Elements - MINORSTREET_DESCRIPTION, MINORSTREET_TYPE and MINORSTREET_POSTDIRECTIONAL
MinorStreet_Description.Exact={[ExactMatch]}
MinorStreet_Description.Close={Levenshtein[77%]}
MinorStreet_Description.Probable={Levenshtein[60%]}

MinorStreet_Type.Exact={StandardSpelling.[ExactMatch,NonePopulated]}
MinorStreet_Type.Close={StandardSpelling.Levenshtein[77%,OnePopulated]}

MinorStreet_Postdirectional.Exact={StandardSpelling.[ExactMatch,NonePopulated]}
MinorStreet_Postdirectional.Close={StandardSpelling.Levenshtein[77%,OnePopulated]}
MinorStreet_Postdirectional.Probable={StandardSpelling.Levenshtein[60%]}

// Elements - POBOX_NUMBER and POBOX_DESCRIPTION
PoBox_Number.Exact={[ExactMatch]}
PoBox_Number.Close={Levenshtein[75%]}
PoBox_Number.Probable={Levenshtein[65%]}

PoBox_Description.Exact={[ExactMatch] | StandardAbbreviation[ExactMatch]}
PoBox_Description.Close={Levenshtein[1] | StandardAbbreviation.Levenshtein[1]}
PoBox_Description.Probable={Levenshtein[2] | StandardAbbreviation.Levenshtein[2]}

// Elements - DEPENDENTLOCALITY and LOCALITY
DependentLocality.Exact={StandardSpelling.[ExactMatch]}
DependentLocality.Close={StandardSpelling.Levenshtein[77%]}
DependentLocality.Probable={StandardSpelling.Levenshtein[60%,NonePopulated,OnePopulated]}

DependentLocalityAbsent.Exact={DependentLocality[NonePopulated]}
DependentLocalityOnePopulated.Exact={DependentLocality[OnePopulated]}

Locality.Exact={StandardSpelling.[ExactMatch]}
Locality.Close={StandardSpelling.Levenshtein[77%]}
Locality.Probable={StandardSpelling.Levenshtein[60%,NonePopulated,OnePopulated]}

LocalityAbsent.Exact={Locality[NonePopulated]}
LocalityOnePopulated.Exact={Locality[OnePopulated]}

// Element - POSTCODE
Postcode.Exact={StandardSpelling.[ExactMatch]}
Postcode.Close={StandardSpelling.Levenshtein[1] | StandardSpelling.PostcodeCompare[Part1Match]}
Postcode.Probable={StandardSpelling.Levenshtein[75%]}
Postcode.Possible={StandardSpelling.PostcodeCompare[Part2Match]}

// BLOCKING KEYS
[
{
"description" : "MinorStreetDescriptionLocality",
"countryCode" : "GBR",
"elementSpecifications" : [
{
"elementType" : "MINORSTREET_DESCRIPTION",
"algorithm" : {
"name" : "SOUNDEX"
},
"includeFromNChars" : 1
},
{
"elementType" : "LOCALITY",
"elementModifiers" : [
"STANDARDSPELLING",
"DERIVED"
],
"includeFromNChars" : 1,
"truncateToNChars" : 30
}
]
},
{
"description" : "SurnameMinorStreetNumberLocality",
"countryCode" : "GBR",
"elementSpecifications" : [
{
"elementType" : "SURNAME",
"algorithm" : {
"name" : "INITIAL"
},
"includeFromNChars" : 1
},
{
"elementType" : "MINORSTREET_NUMBER",
"includeFromNChars" : 1,
"truncateToNChars" : 5
},
{
"elementType" : "LOCALITY",
"elementModifiers" : [
"STANDARDSPELLING",
"DERIVED"
],
"includeFromNChars" : 2,
"truncateToNChars" : 30
}
]
},
{
"description" : "BuildingDescriptionLocality",
"countryCode" : "GBR",
"elementSpecifications" : [
{
"elementType" : "BUILDING_DESCRIPTION",
"algorithm" : {
"name" : "SOUNDEX"
},
"includeFromNChars" : 1
},
{
"elementType" : "LOCALITY",
"elementModifiers" : [
"STANDARDSPELLING",
"DERIVED"
],
"includeFromNChars" : 2,
"truncateToNChars" : 30
}
]
},
{
"description" : "POBoxNumberLocality",
"countryCode" : "GBR",
"elementSpecifications" : [
{
"elementType" : "POBOX_NUMBER",
"includeFromNChars" : 1
},
{
"elementType" : "LOCALITY",
"elementModifiers" : [
"STANDARDSPELLING",
"DERIVED"
],
"includeFromNChars" : 2,
"truncateToNChars" : 30
}
]
},
{
"description" : "FullPostcode",
"countryCode" : "GBR",
"elementSpecifications" : [
{
"elementType" : "POSTCODE",
"elementModifiers" : [
"STANDARDSPELLING"
],
"includeFromNChars" : 5,
"truncateToNChars" : 7
}
]
},
{
"description" : "ForenameSurnameMinorStreetNumber",
"countryCode" : "GBR",
"elementSpecifications" : [
{
"elementType" : "FORENAMES",
"elementModifiers" : [
"ROOTNAME"
],
"algorithm" : {
"name" : "DOUBLE_METAPHONE_FIRST_WORD"
},
"includeFromNChars" : 1,
"truncateToNChars" : 10
},
{
"elementType" : "SURNAME",
"algorithm" : {
"name" : "DOUBLE_METAPHONE"
},
"includeFromNChars" : 1,
"truncateToNChars" : 10
},
{
"elementType" : "MINORSTREET_NUMBER",
"includeFromNChars" : 1,
"truncateToNChars" : 5
}
]
},
{
"description" : "PostcodeMinorStreetBuildingSurnameForenames",
"countryCode" : "GBR",
"elementSpecifications" : [
{
"elementType" : "POSTCODE",
"elementModifiers" : [
"STANDARDSPELLING"
],
"includeFromNChars" : 2,
"truncateToNChars" : 4
},
{
"elementType" : "MINORSTREET_DESCRIPTION",
"algorithm" : {
"name" : "SOUNDEX"
},
"includeFromNChars" : 1
},
{
"elementType" : "BUILDING_DESCRIPTION",
"algorithm" : {
"name" : "SOUNDEX"
},
"includeFromNChars" : 1
},
{
"elementType" : "SURNAME",
"algorithm" : {
"name" : "DOUBLE_METAPHONE"
},
"includeFromNChars" : 1,
"truncateToNChars" : 4
},
{
"elementType" : "FORENAMES",
"elementModifiers" : [
"ROOTNAME"
],
"algorithm" : {
"name" : "INITIAL"
},
"includeFromNChars" : 1
}
]
},
{
"description" : "LocalityDLocalityDDLocalitySurname",
"countryCode" : "GBR",
"elementSpecifications" : [
{
"elementType" : "LOCALITY",
"elementModifiers" : [
"STANDARDSPELLING",
"DERIVED"
],
"includeFromNChars" : 2,
"truncateToNChars" : 30
},
{
"elementType" : "DEPENDENTLOCALITY",
"elementModifiers" : [
"STANDARDSPELLING",
"DERIVED"
],
"includeFromNChars" : 2,
"truncateToNChars" : 30
},
{
"elementType" : "DOUBLEDEPENDENTLOCALITY",
"elementModifiers" : [
"STANDARDSPELLING",
"DERIVED"
],
"includeFromNChars" : 1,
"truncateToNChars" : 30
},
{
"elementType" : "SURNAME",
"algorithm" : {
"name" : "INITIAL"
},
"includeFromNChars" : 1
}
]
}
]

Best Answer

  • David Ranson
    David Ranson Experian Employee
    edited August 7 Answer ✓

    The above appears to be based on the shipped GBR address only ruleset. It appears this has an issue not previously identified. I'd be tempted to change the RuralAddressCriteria theme as below. The match status is then "Possible" (3) not "Exact".

    RuralAddressCriteria.Exact={CompanyAbsent.Exact & PoBoxAbsent.Exact & MinorStreetNumberAbsent.Exact & SubPremisesAbsent.Exact}

Answers

  • David Ranson
    David Ranson Experian Employee

    Also the FlatAddressCriteria theme does not match because it requires the subbuilding (flat in this case) number to match.

  • robm
    robm Member

    I have taken your suggestion and my results are much better now thank you. In particular, these two flats are no longer being matched.