Efficient Large-Scale Clustering of Spelling Variants, with Applications to Error-Tolerant Text Search