
Classes for performing table joins by matching rows to each other. The matching is done in an entirely configurable and pluggable way by defining a MatchEngine which defines what counts as a match between two tuples (rows) and can be used to work out what counts as a near miss too. Matching is (except in pathological cases) an O(N ln N) process, where N is the total number of rows in all the tables participating in a match.