Why is CrossMultiComparator not finding a match as expected?

Question

 

We have a requirement to match the profiles where first name and last name got swapped. As per the below documentation in https://docs.reltio.com/matchmerge/comparatorclass.html?hl=multigroup1, we have implemented the match rule as below 

{

  "uri": "configuration/entityTypes/Individual/matchGroups/Suspect4",
    "label": "Suspect4: CrossAttributeExact(First, Last); Exact(DoB, AddressLine1), ExactOrNull(SSN)",
  "type": "suspect",
  "useOvOnly": "false",
  "rule": {
      "and": {
          "exact": [
              "configuration/entityTypes/Individual/attributes/DoB",
                "configuration/entityTypes/Individual/attributes/Addresses/attributes/AddressLine1"
          ],
          "exactOrNull": [
              "configuration/entityTypes/Individual/attributes/BC_SSN"
          ],
          "multi": [
              {
                  "uri": "configuration/entityTypes/Individual/attributes/MultiGroup",
                  "attributes": [
                      "configuration/entityTypes/Individual/attributes/FirstName",
                      "configuration/entityTypes/Individual/attributes/LastName"
                  ]
              }
            ],

          "comparatorClasses": {
              "mapping": [
                  {
                        "attribute": "configuration/entityTypes/Individual/attributes/MultiGroup",
                      "class": "com.reltio.match.comparator.CrossMultiComparator"
                  },
                  {
                        "attribute": "configuration/entityTypes/Individual/attributes/FirstName",
                      "class": "com.reltio.match.comparator.BasicStringComparator"
                  },
                  {
                        "attribute": "configuration/entityTypes/Individual/attributes/LastName",
                      "class": "com.reltio.match.comparator.BasicStringComparator"
                  }
              ]
          }
      }
  },
  "scoreStandalone": 70,
  "scoreIncremental": 70
}
 
The rule is not working as intended, Please find the response from verify matches API below.
 
POST {{tenantURL}}/entities/_verifyMatches?rules=configuration/entityTypes/Individual/matchGroups/Suspect4
Request
{
   "first": {
     "uri": "entities/1vnNuz1J"
   },
   "second": {
       "uri": "entities/1LuSBihc"
   }
}
 Response 
 
{
   "matchTokensSummary": {
       "firstTotal": 0,
       "secondTotal": 0,
        "summary": "There are no common match tokens for the given set of match rules. The entities are not considered as match candidates and won’t be compared."
   },
   "applicableMatchGroups": {},
   "rules": {
       "configuration/entityTypes/Individual/matchGroups/Suspect4": {
            "label": "Suspect4: CrossAttributeExact(First, Last); Exact(DoB, AddressLine1), ExactOrNull(SSN)",
           "useOvOnly": false,
           "matchTokens": {
               "first": {
                   "foundInMatchTables": true,
                   "tokensGenerated": 0
               },
               "second": {
                   "foundInMatchTables": true,
                   "tokensGenerated": 0
               },
               "intersection": {}
           },
           "rule": {
               "and": [
                   {
                       "and": [
                           {
                               "exact": {
                                   "DoB": {
                                       "match": true,
                                       "ignoreInToken": false
                                   },
                                   "Addresses.AddressLine1": {
                                       "match": true,
                                       "ignoreInToken": false
                                   }
                               },
                               "exactOrNull": {
                                   "BC_SSN": {
                                       "match": true,
                                       "ignoreInToken": true
                                   }
                               },
                               "multi": {
                                   "FirstName & LastName": {
                                       "match": true,
                                       "ignoreInToken": false
                                   }
                               }
                           }
                       ]
                   }
               ]
           },
           "matched": false,
           "matchedByDocuments": true
       }
   }
}

Answer

     "matchTokenClasses": { 
"mapping": [ "attribute": "configuration/entityTypes/Individual/attributes/MultiGroup",
    "class": "com.reltio.match.token.CrossMultiToken"
    ]
    }
  •  It is usually a better practice to use ExactOrNullCrossMultiComparator rather than CrossMultiComparator as it will cover a more holistic scenario.

===================================================================

CrossMultiComparator -

  • Behaves the same for the Fuzzy operator as it does for any of the Exact operators (ExactExactOrNullExactOrAllNull, and notExactSame). If chosen for any of the Exact operators, the comparator’s logic is used for the Exact part of these.
  • Can be used for the Fuzzy Comparison Operator.
  • Recommended for cases where you wish to compare two or more attributes that could be mixed while filling the values.
  • Guidance regarding Match Token Class: CrossMultiToken class. If a match token class is not defined, the CrossMultiToken class is used by default.

ExactOrNullCrossMultiComparator - 

  • Recommended for cases where you want to compare two or more attributes that could be mixed while filling the values and where one of the attributes can be null.
  • The match operand with the comparator does not produce the match tokens. As a result, the rule must have an additional operand that produces the match tokens and initiates match comparison.

====================================================================

  • You should perform a rebuild match table after you have created this match rule.
Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Please sign in to leave a comment.