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 {@link uk.ac.starlink.table.join.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.
MatchEngine
implementations are provided for a number of
(astronomically) common cases, including N-dimensional Cartesian,
spherical polar, exact value and Sky matching
(the Sky one uses the HEALPix scheme).
You can also combine matches to an arbitrary level of complexity.