Учитывая вашу проблему, я не вижу другого способа, кроме как сравнить каждый адрес с любым другим адресом, если вы хотите использовать Lehvenstein distance .
Прежде всего, вы должны нормализовать адрес, избавиться от сокращений и т. Д.
- пр. -> проспект
- Rd. -> Дорога
Вы можете иметь фиксированное максимальное расстояние Левенштейна ( N ) для аналогичных адресов.
Если это так, вы могли бы прервать алгоритм Лехвенштейна, если уверены, что расстояние редактирования для текущей пары адресов больше, чем N. Для этого вам нужно написать собственную версию алгоритма Лехвенштейна. Это сделает алгоритм немного быстрее.
Есть также некоторые связанные тривиальные оптимизации. Например: если адрес A имеет длину 10 символов, а адрес B имеет длину 20 символов, и вы считаете, что адреса с расстоянием по Левенштейну менее 8 одинаковы. Вы можете посмотреть длины адресов и сразу решить, что они не похожи.