On this page
Classifier configuration
Configure a Trazadera Golden weighted classifier with dataset-based comparisons, weights, options, and decision thresholds.
A classifier-weight resource evaluates records that an
indexer placed in the same candidate group. The indexer determines
which records meet; the classifier determines the resulting classification.
Core settings
This is sample-customer-classifier from the
Aurelia Utilities sample, shortened to four
of its seven mappings:
{
"type": "classifier-weight",
"_id": "sample-customer-classifier",
"description": "Decides whether two records in a bucket are the same person",
"dataset": "sample-customer",
"nonMatchThreshold": 0.55,
"matchThreshold": 0.85,
"bucketSizeReviewThreshold": 10,
"defaultWeight": 1.0,
"defaultOptions": ["AGGRESSIVE"],
"mappings": [
{ "id": "tax-id", "keys": ["taxId"], "weight": 3.0, "options": ["AGGRESSIVE"], "object": false, "nullMismatch": false },
{ "id": "email", "keys": ["email"], "weight": 2.0, "options": ["AGGRESSIVE"], "object": false, "nullMismatch": false },
{ "id": "full-name", "keys": ["fullName"], "weight": 2.0, "options": ["AGGRESSIVE"], "object": false, "nullMismatch": false },
{ "id": "phone", "keys": ["phone"], "weight": 1.5, "options": ["AGGRESSIVE"], "object": false, "nullMismatch": false }
]
}
The remaining three are street at 1.0, and postcode and city at 0.5 each,
for a total weight of 10.5.
Comparisons are derived from dataset column semantics and mapping settings.
There is no comparer property with values such as LEVENSHTEIN or
JARO_WINKLER in this resource model.
| Mapping field | Purpose |
|---|---|
id | Name shown with the comparison result |
keys | One or more same-type dataset columns compared together |
weight | Relative influence compared with other mappings |
object | Compare supported date, number, or coordinate values as their semantic type |
nullMismatch | Decide whether a missing-versus-present value counts as disagreement |
threshold | Allowed semantic distance for supported object comparisons |
options | Text normalization override for the mapping |
Text options include NONE, IGNORE_CASE, IGNORE_SPACES,
ONLY_ALPHANUMERIC, IGNORE_ACCENTS, and AGGRESSIVE. Apply them according to
the field’s business meaning; identifiers often need stricter normalization
than names or addresses.
Comparison scores
The reported score summarizes comparisons according to the configured mappings and weights. Read both the result and its field-level evidence; a high score is not a probability that the records belong to one subject.
GET /api/golden/{entity}/duplicates/clusters/{clusterId}/evaluate returns
those similarities so a reviewer can inspect the evidence. In the current
customer sample, cleaning makes the two CRM phones for Ana comparable and their
group is classified MATCH. The pair of different people
named Javier Torres Melgar remains REVIEW, despite agreeing on name and
postcode, because their tax identifiers differ. Inspect evaluate for the
current per-field similarities and score; those values can move with the
dataset, cleaner, indexer, and classifier definitions.
Mappings default to object: false, threshold: 50 for object comparison,
and nullMismatch: false. A mapping without an explicit weight uses the
classifier’s defaultWeight, initially 1.0.
Thresholds
| Setting | Default | Purpose |
|---|---|---|
nonMatchThreshold | 0.5 | Upper boundary for non-matches |
matchThreshold | 0.8 | Lower boundary for matches |
reviewScoreThreshold | 0.75 | Minimum representative score for the default candidates view; unset or invalid values use this default |
bucketSizeReviewThreshold | 10 | Groups larger than this require review |
reviewScoreThreshold accepts values above 0 and up to 1. It controls which
cases appear in the default review queue, independently of their classification.
Configuration thresholds use a scale from 0 to 1. Reported cluster scores
use integers from 0 to 100. A matchThreshold of 0.85 corresponds to a
reported score of 85.
| Where | Scale | Example |
|---|---|---|
matchThreshold, nonMatchThreshold in this resource | 0 to 1 | 0.85, 0.55 |
score on a cluster, and the interface | 0 to 100 | 90, 60 |
A steward rule’s SCORE condition | 0 to 100 | min: 90 |
Multiply by 100 to go from one to the other, and state which one you mean when
you write a runbook. A steward rule written with min: 0.9 does not select the
clusters scoring 90 and above; it applies a threshold close to zero on the reported score scale. See Configure automatic stewardship.
Scores at or below nonMatchThreshold become NON_MATCH; scores at or above
matchThreshold become MATCH; values between them become REVIEW.
bucketSizeReviewThreshold sends large groups to review as a safety control,
whatever they scored.
The interval between the thresholds affects review volume. In the initial
sample, thresholds of 0.55 and 0.85 yield one REVIEW group and 349
MATCH groups. Classification alone does not apply a merge.
Tune these settings with labeled representative examples. Do not copy the illustrative values above into production without measuring false matches, missed duplicates, and review volume for your data.
Related reading
- Configure an indexer
- Configure the merger
- Configure automatic stewardship
- Steward duplicate candidates
- Review duplicates manually, which walks these two clusters