

Für ein Projekt musste ich eine Suche nach Kundendaten entwickeln, die möglichst schnell ist und natürlich auch brauchbare Ergebnisse liefert. Die php internen Funktionen wie Soundex oder Levenshtein finde ich persönlich für überhaupt nicht brauchbar.
Deshalb hab ich eine kleine Funktion entwickelt, die "Begriffe" vereinfacht. zB Gibt es in der Datenbank einen Namen, Ort, Plz, Adresse.... Ich füge alles zusammen in einen String und lasse die Funktion darüber laufen. Auch der Suchbegriff wird entsprechend angepasst, danach reicht ein einfaches like = '%$string%'. Einfach, schnell und gut.
<?php
function matchcode ($string) {
$arr = array(
'MAI'=>'MEI',
'MY'=>'MEI',
'P'=>'B',
'T'=>'D',
'Ä'=>'A',
'Ö'=>'O',
'Ü'=>'U',
'ß'=>'s',
'-'=>'',
'?'=>'',
'/'=>'',
'- & '=>'',
' & '=>'',
'&'=>'',
' '=>'',
'.'=>'',
'"'=>'',
'>'=>'',
'<'=>'',
'''=>'',
'+'=>'',
'*'=>'%',
'('=>'',
')'=>'',
','=>'',
'á'=>'a',
'é'=>'e',
'è'=>'e',
'ê'=>'e',
'ě'=>'e',
'š'=>'s',
'č'=>'c',
'Â'=>'A',
'Š'=>'S',
'ã'=>'a',
'ą'=>'a',
'ú'=>'u',
'ć'=>'c',
'CK'=>'K',
'CH'=>'K',
'CA'=>'TSCHA',
'G'=>'K',
'Y'=>'I',
'AR'=>'A',
'EH'=>'E',
'IE'=>'I',
'und'=>'',
'WW'=>'W',
'EE'=>'E',
'RR'=>'R',
'ZZ'=>'Z',
'UU'=>'U',
'II'=>'I',
'OO'=>'O',
'AA'=>'A',
'SS'=>'S',
'DD'=>'D',
'FF'=>'F',
'HH'=>'H',
'JJ'=>'J',
'KK'=>'K',
'LL'=>'L',
'XX'=>'X',
'CC'=>'C',
'VV'=>'V',
'BB'=>'B',
'NN'=>'N',
'MM'=>'M',
);
$search = array();
$replace = array();
foreach ($arr as $key=>$value) {
$search[] = $key;
$replace[] = $value;
}
$string = str_ireplace($search,$replace,trim($string));
return $string;
}
?>
Kommentare
gute idee. das werde ich
gute idee.
das werde ich auf jeden fall mal testen.
mal sehen, ob das auch bei einer datenbank mit mehr als 1 mio. kontakten schnell und vor allem treffsicher ist.