Match on string for position rather than the individual fields

The original approach broke when the same target url appeared both
as the main link and also as a sublink. So the query was the same
except for the (optional) sublink field - you can't query
the datastore for nulls (afaics).

The approach of just matching in string is a whole lot simpler though
to be honest.