Answer
When the geographical location of two entities is within a certain distance (in miles), those entities can be considered as fuzzy matches for each other using the proximity match rule.
Match rules for proximity fuzzy matching are built by using the following:
- Multi-Match Rule
- ProximateGeoToken
Multi-Match Rule:
The “multi” comparison depends on comparatorClasses defined for the multi URI. Do not specify the multi operand in the match rule without also setting the comparator class. Attribute values are forwarded to the comparator class as a list in the order they are defined in the “attributes” section.
ProximateGeoToken:
The ProximateGeoToken only works correctly with multi match rule, and the attributes in the multi match rule must be specified in the following order:
- Latitude
- Longitude
For samples of the Multi-Match Rule and the ProximateGeo Token, see the "Reference" section.
How to determine proximity for a match
Using the link (gps-coordinates.org) or this link (Geodatasource.com)determines the distance between two coordinates (please note that this is NOT the driving distance, it is the physical distance).
Match groups are defined by the cumulative distance
Example of distance-transitive:
The distance of A to C = 0.6 miles (supposedly not merged)
The distance of A to B = 0.3 miles (merged)
The distance of B to C = 0.3 miles (merged)
A and C are merged due to B.
1 A----0.3miles East------B--------0.3miles East-------C
====================================================================
Note: There are also multiple sites that allow calculating the distance between 2 points.
"matchGroups": [
{
"uri": "configuration/entityTypes/GeoMatch/matchGroups/GeoMatchRule",
"label": "Geo Location Match Rule",
"type": "automatic",
"useOvOnly": "true",
"rule": {
"matchTokenClasses": {
"mapping": [
{
"attribute": "configuration/entityTypes/GeoMatch/attributes/Address/attributes/GeoLocation1",
"parameters": [
{
"parameter": "distance_miles",
"value": "0.4"
}
],
"class": "com.reltio.match.token.ProximateGeoToken"
},
{
"attribute": "configuration/entityTypes/GeoMatch/attributes/XREFID1",
"class": "com.reltio.match.token.ExactMatchToken"
}
]
},
"comparatorClasses": {
"mapping": [
{
"attribute": "configuration/entityTypes/GeoMatch/attributes/Address/attributes/GeoLocation1",
"parameters": [
{
"parameter": "distance_miles",
"value": "0.4"
}
],
"class": "com.reltio.match.comparator.ProximateGeoComparator"
}
]
},
"and": {
"exact": [
"configuration/entityTypes/GeoMatch/attributes/XREFID1"
]
},
"multi": [
{
"uri": "configuration/entityTypes/GeoMatch/attributes/Address/attributes/GeoLocation1",
"attributes": [
"configuration/entityTypes/GeoMatch/attributes/Address/attributes/GeoLocation/attributes/Latitude",
"configuration/entityTypes/GeoMatch/attributes/Address/attributes/GeoLocation/attributes/Longitude"
]
}
]
},
"scoreStandalone": 0,
"scoreIncremental": 0
}
],
Related Documentation:
Our Doc Links can change over time, so please search for the Documentation based on the titles shared below. Thank you.
- Fuzzy Filtering
Comments
Hi @Shantanu Indra,
Please let us know if there is any way to configure this in "or" Condition. The rule we want to implement is to have a fuzzy address line1 or proximity range less than 0.5 mile.
Thanks,
Harsha
Please sign in to leave a comment.