webForumDet fria alternativet

Jämföra gatuadresser (soundex, similar_text etc)

PHP

4 svar · 614 visningar · startad av Diggin

Medlem sedan juli 20026 inlägg
Frågan#1

Tänkte implentera en funktion som jämför två strängar och avgör om det är samma gatuadress.

Ex.
Korrekt adress:
Kungsgatan 15, 2tr

Alternativ som ska ge rätt svar:
Kungsg. 15
Kungsg. 15,2
Kungsgat 15
Kungsg 15, 2 tr
etc.

Jag har tänkt använda mig av soundex samt similar_text. Det kanske går att göra nån smart ereg_replace eller liknade för att lösa problemet. Soundex släpper igenom väldigt mycket (speciellt långa strängar) och jag tror inte metaphone är mycket bättre.

Nån som har några tips ???

soundex -- Calculate the soundex key of a string
similar_text -- Calculate the similarity between two strings

Medlem sedan juli 20026 inlägg
#2

Ett litet kod exempel

function cmpStreetName($str1, $str2)
{
   // Lägger till en bokstav i början på strängarna så att den kan jämföra t ex Catarina gata och Katarina gata.

   $str1 = "O" . strtoupper(trim($str1));
   $str2 = "O" . strtoupper(trim($str2));
   if(soundex($str1) == soundex($str2))
   {
       /* Här skulle behövas göras något åt g./g/gata/gatan etc */
       $i = similar_text($str1, $str2, &$p);
       if($p > 80)          //  strängarna liknar varandra till mer än 80%
          return true;
   }
   return false;
}
Medlem sedan juli 200012 978 inlägg
#3

Soundex har ju mest byggts som amerikanskt likaljudande.
Om man tar bort alla vokaler och ersätter konsonanter med en siffra kommer man rätt när.
I ditt fall är det nog skrivningen av uppgång och våning som är det svåra. Bolla gärna fler exemepel. Hur kan man styra inmatningen?

Medlem sedan juli 20026 inlägg
#4

Man kan inte styra inmatningen. Det är det som är det jobbiga. Antal trappor, lägenhetsnummer och liknade information är ointressant.

Det som måste stämma är namnet på gatan och numret. Problemet är att det finns massa specialfall som sommarstugeområden, skärgården m fl. Dom kan ha helskumma adresser.

Medlem sedan juli 200012 978 inlägg
#5

Om du tar postnumret till hjälp är du rätt nära.
Det finns en beskrivning på alla adresser inkl nummerstorheter på de större gatorna inom ett postnummer.
Kan det vara till hjälp?
Förklara gärna syftet med sökningen och vad du har för underlag.

257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)