(Advanced) How Numeric Range Matching Works

how numeric range matching works

Numeric Range matching is designed for fields where an exact match is not expected but the values should be close to each other within a defined tolerance. Rather than measuring character similarity, it measures the arithmetic difference between two numeric values and returns a match if that difference falls within acceptable bounds.

How It Works

When two records are compared on a Numeric Range criteria, MatchLogic calculates the absolute difference between the two field values and then checks whether that difference falls within the configured tolerance. If it does, the criteria produces a positive field-level score; if the difference exceeds the tolerance, the field-level score is 0 for that criteria.

The tolerance can be expressed in two ways: as an absolute fixed value, or as a percentage of the larger value.

Absolute Mode

In absolute mode, the LowerLimit and UpperLimit parameters define a fixed numeric range around the difference that is acceptable. A match is produced when:

LowerLimit ≤ |value_a - value_b| ≤ UpperLimit

Typically LowerLimit is set to 0 (meaning an exact match is included) and UpperLimit is set to the maximum acceptable difference. For example, with UpperLimit = 2:

  • Age 35 vs Age 37 — difference of 2 — within tolerance, match produced
  • Age 35 vs Age 38 — difference of 3 — outside tolerance, no match
  • Age 35 vs Age 35 — difference of 0 — exact match, within tolerance

Absolute mode is best when the field has a natural unit where a fixed deviation is meaningful regardless of the magnitude of the values. Age (within 2 years), dates converted to day-counts (within 30 days), or sequential record numbers (within 1) are common examples.

Percentage Mode

When UsePercentage is enabled, the tolerance is expressed as a percentage of the larger of the two values rather than a fixed amount. This makes the tolerance scale with the magnitude of the values, which is often more appropriate for financial or quantity fields. A match is produced when:

|value_a - value_b| / max(value_a, value_b) ≤ UpperLimit / 100

For example, with UpperLimit = 10 (meaning within 10%):

  • Price $100 vs Price $108 — difference of 8%, within 10% — match produced
  • Price $100 vs Price $115 — difference of 13%, outside 10% — no match
  • Price $1,000 vs Price $1,095 — difference of 8.7%, within 10% — match produced
  • Price $1,000 vs Price $1,150 — difference of 13%, outside 10% — no match

Notice that in percentage mode, a $95 difference is acceptable for a $1,000 item (9.5%) but not for a $100 item (87%). The tolerance adapts to the scale of the values, which is appropriate for monetary amounts, market prices, measured quantities, and similar fields.

The Field-Level Score

When the difference falls within the tolerance, the criteria returns a score based on how close the values are relative to the tolerance bounds. A difference of 0 (exact numeric match) returns a score of 100 for that criteria. As the difference approaches the UpperLimit, the score decreases. This graduated scoring means that two records with identical values on a Numeric Range criteria contribute fully to the weighted average, while records that are close but not identical contribute proportionally less.

When to Use Numeric Range Matching

Numeric Range matching is the right choice when:

  • Matching ages — records for the same person may have slightly different ages if one was recorded in a different year, or if the age was estimated rather than calculated from a birth date
  • Matching prices or amounts — product prices across different systems may include or exclude tax, rounding differences, or currency conversion approximations
  • Matching dates stored as numbers — Unix timestamps, Julian day numbers, or year values where a small numeric difference is expected
  • Matching measured quantities — weights, dimensions, or volumes where measurement precision varies between systems
  • Matching records with slightly different numeric identifiers — when an identifier such as an account number may have been entered with a leading or trailing digit error

Numeric Range matching should not be used for text fields, categorical codes, or any field where arithmetic difference has no meaningful interpretation. For those fields, use Exact or Fuzzy matching instead.

Combining with Other Criteria

Numeric Range criteria work best as part of a multi-criteria match definition rather than as the sole matching signal. For example, matching on a name (fuzzy) plus an age (numeric range within 2 years) provides much stronger evidence of a true match than either criterion alone. The weight assigned to the numeric range criteria should reflect how discriminating the field is: a tightly-bounded age range on a large dataset is reasonably discriminating; a loose 20% price tolerance on a dataset with many similarly-priced products is not.