Skip to contents

Strategies

Declare how matching works. A strategy holds preparation pipelines, blocking, weights, and a threshold; it runs nothing itself.

search_strategy()
Define a Search Strategy for Record Linkage
exact_strategy()
Define an Exact Matching Strategy
embedding_strategy()
Create an Embedding Strategy
block_on_tokens()
Block on a Column's Rare Tokens (region-free blocking)
smooth_rip_identity() smooth_rip_log() smooth_rip_offset() smooth_rip_softmax()
Configure rIP smoothing for a search strategy

Text preparation

Turn a column’s text into tokens. Used inside a strategy formula (column ~ step1 + step2).

normalize_text()
Normalize text for matching
normalize_street()
Normalize street names across languages
normalize_date()
Normalize dates to ISO 8601 format (YYYY-MM-DD)
approximate_date()
Approximate dates by rounding to coarser time units
word_tokens()
Split text into word tokens
numeric_tokens()
Tokenize numeric fields, expanding ranges into individual numbers
date_tokens()
Extract date components as tokens
fuzzy_tokens()
Collapse near-duplicate tokens to a canonical form
generate_ngrams()
Generate character n-grams from text
token_shapes()
Convert tokens to shape signatures
extract_initials()
Extract initials from tokens
as_metaphone()
Encode text phonetically with Metaphone
as_soundex()
Encode text phonetically with Soundex
as_cologne()
Encode text phonetically with the Cologne procedure
strip_vowels()
Strip vowels from text (consonant skeleton)
filter_stopwords()
Filter out stopwords from token lists
find_stopwords()
Discover candidate stopwords from a prepared token table
drop_numeric_tokens()
Drop numeric (house-number) tokens from token lists
drop_short_tokens()
Drop short tokens from token lists
use_dictionary()
Map tokens to canonical groups with a lookup table

Matching

Find duplicates within a table, candidates across tables, resolve pairs into entities, and stage passes together.

detect_duplicates()
Detect Duplicate Records
deduplicate_table()
Deduplicate a Table
search_candidates()
Search for Candidate Matches Between Tables
extract_unmatched()
Extract Unmatched Records
materialize_records()
Materialize Records by ID
resolve_entities()
Group Matched Pairs into Entities
multi_stage_dedup()
Staged Duplicate Detection (within one table)
multi_stage_search()
Staged Search Across Tables or Sources
prepare_search_data()
Prepare Data for Record Linkage Search
compute_rarity()
Compute Token Rarity for Record Linkage

Diagnostics

Check a strategy before you run it, and inspect what it found.

inspect_tokens()
Inspect Tokens for a Specific Column
plan_strategy()
Plan a Search Strategy from Raw Inputs
audit_strategy()
Audit a Search Strategy Against Data
rarity_distribution()
Read the Token Rarity Distribution
summarise_matches()
Summarise a Match Result
explain_match()
Explain a Single Match
sample_matches()
Sample Matches for Review
compare_stages()
Compare Stages of a Multi-Stage Match
recommendations()
Recommendations from a Diagnostic Object

Plots

Visualise a diagnostic result. Each verb returns data; these draw it. The default plot() method of each diagnostic class calls the most useful one of these.

score_histogram()
Bar chart of the pre-binned score distribution
score_density()
Kernel density of the score distribution
coverage_plot()
Bar chart of match coverage (base and/or target)
cluster_size_plot()
Bar chart of cluster-size distribution (duplicates only)
ambiguity_plot()
Bar chart of candidates-per-record distribution (candidates only)
top_gap_density()
Bar chart of top-1 vs top-2 score gap distribution (candidates only)
rarity_histogram()
Bar chart of median token rarity per column
token_frequency_plot()
Bar chart of average tokens per record per column
block_size_plot()
Bar chart of block sizes (requires block_by on strategy)
vocab_overlap_plot()
Bar chart of vocabulary overlap between base and target per column
similarity_histogram()
Histogram of sampled pairwise cosine similarities
norm_plot()
Bar chart of embedding norm quantiles
contribution_plot()
Horizontal bar chart of per-column score contributions
token_contribution_plot()
Horizontal bar chart of per-token score contributions, coloured by column
stage_coverage_plot()
Line plot of cumulative base coverage by stage
stage_score_plot()
Grouped bar chart of score distributions by stage
frontier_plot()
Cost/recall frontier scatter for a strategy plan

Calibration

Train and evaluate a false-positive filter on labelled pairs.

export_for_labelling()
Export a match sample to CSV for manual labelling
import_labels()
Import a labelled CSV back into a feature/label table
match_features()
Build a per-pair feature table for calibration
fit_filter()
Fit a false-positive filter on labelled match pairs
apply_filter()
Apply a fitted filter to match features
calibrate_matches()
Calibrate matches end-to-end (features -> filter -> apply)
calibrate()
Evaluate a fitted filter on labelled pairs
joinery_recipe()
Build a tidymodels recipe for calibration features

Embeddings

Vector-based matching for the embedding strategy.

compute_embeddings()
Compute Embeddings for Records
score_embeddings()
Score Embedding Pairs Using Cosine Similarity
clear_embedding_cache()
Clear the embedding reuse cache

DuckDB backend control

Tuning for the out-of-core DuckDB backend.

duckdb_control()
DuckDB Execution Control
duckdb_batch_plan()
Create a Batch Plan for DuckDB Table Processing
batch_map()
Apply a function to DuckDB table batches
drop_joinery_temp_tables()
Drop all temporary DuckDB tables created by joinery

Example data

Synthetic datasets used throughout the documentation.

base_example
Base dataset for record linkage example
target_example
Target dataset for record linkage example
workshop_register
Workshop guild register (base) for record linkage examples
workshop_listings
Workshop external directory (target) for record linkage examples
workshop_panel
Multi-year workshop panel for cross-year linkage examples
match_labels_example
Labelled candidate pairs for calibration examples
street_types
Multilingual Street-Type Normalization Dictionary
street_stopwords
Multilingual Street-Name Stopwords