Dans postgres, vous pouvez utiliser fuzzystrmatch forfait. Il fournit un levenshtein
, qui renvoie la distance entre deux textes, vous pouvez alors effectuer une correspondance floue avec l'exemple de prédicat suivant :
where levenshtein(street_address, '123 Main Avex') <= 1
Cela correspondra à tous les enregistrements, car la distance entre '123 Main Ave' et '123 Main Avex' est de 1 (1 insertion).
Bien sûr, valeur 1
voici juste un exemple et effectuera une correspondance assez stricte (différence d'un seul caractère). Vous devez soit utiliser un nombre plus grand, soit, ce que suggère @IVO GELOV - utiliser une distance relative (distance divisée par la longueur).