yo mismo soy muy fascinado con la forma en que Google maneja. No recuerdo haber visto nada similar en ningún otro lado.
Creo que intenta separar una cadena de entrada en palabras probando varios delímetros: espacio, coma, punto y coma, etc. Entonces tiene varias combinaciones. Para cada combinación, toma cada palabra y la compara con país, ciudad, pueblo, base de datos de código postal. Luego, define una métrica sobre cómo evaluar el resultado de la coincidencia de grupo para cada combinación. Aquí también deberían existir reglas cruzadas, como si el código postal no coincide bien, pero el país, la ciudad, la ciudad coinciden bien y en combinación hacen referencia a una dirección válida, luego la métrica arroja una calificación alta.
Es difícil y no es un ejercicio de código de tarde. También requiere fuertes recursos computacionales: un hosting compartido probablemente se descifraría en solo 10 solicitudes, pero un centro de datos podría servirlo bien.
No estoy seguro de si hay una implementación de ejemplo. Muchos servicios geográficos se ofrecen en base a pago. Algo tan sofisticado como Google Maps podría costar una fortuna.
Corrígeme si me equivoco.