% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/joins.R
\name{fuzzy_join}
\alias{fuzzy_join}
\title{Fuzzy join two vectra tables by string distance}
\usage{
fuzzy_join(
  x,
  y,
  by,
  method = "dl",
  max_dist = 0.2,
  block_by = NULL,
  n_threads = 4L,
  suffix = ".y"
)
}
\arguments{
\item{x}{A \code{vectra_node} object (probe / query side).}

\item{y}{A \code{vectra_node} object (build / reference side).}

\item{by}{A named character vector of length 1: \code{c("probe_col" = "build_col")}.
The columns to compute string distance on.}

\item{method}{Character. Distance algorithm: \code{"dl"} (Damerau-Levenshtein,
default), \code{"levenshtein"}, or \code{"jw"} (Jaro-Winkler).}

\item{max_dist}{Numeric. Maximum normalized distance (0-1) to keep a match.
Default \code{0.2}.}

\item{block_by}{Optional named character vector of length 1:
\code{c("probe_col" = "build_col")}. Rows must match exactly on these columns
before distance is computed. Dramatically reduces comparisons.}

\item{n_threads}{Integer. Number of OpenMP threads for parallel distance
computation over partitions. Default \code{4L}.}

\item{suffix}{Character. Suffix appended to build-side column names that
collide with probe-side names. Default \code{".y"}.}
}
\value{
A \code{vectra_node} with all probe columns, all build columns (suffixed
on collision), and a \code{fuzzy_dist} column (double).
}
\description{
Joins two tables using approximate string matching on key columns.
Optionally blocks by a second column (e.g., genus) for performance —
only rows sharing the same blocking key are compared.
}
