26. august 2002 - 11:56Der er
10 kommentarer og 1 løsning
Opdele tekst i MySQL
Hej,
Jeg har en MySQL database, hvor jeg skal kunne lave fonetisk søgning på fx efternavn. Det har jeg også fået lavet så den kan:
SELECT * FROM person WHERE STRCMP(SOUNDEX(efternavn), SOUNDEX("Petersen")) = 0;
Mit problem er hvis personen hedder "Erik Petersen", og brugeren søger på "Petersen". Så kommer "Erik Petersen" ikke længere med som resultat, da "Erik Petersen" har en anden værdi end "Petersen" har.
Ja så får man godt nok "Erik Petersen" med som resultat.
Problemet er bare at søgningen skal fungere fonetisk... for hvad hvis brugeren kommer til at skrive "Pedersen". Her skulle "Erik Petersen" også gerne komme med som resultat.
Det er rigtigt at det ikke er hele navnet, der er registreret i "efternavn". Problemer er at en person fx godt kan hedde "Hans Erik Petersen" eller måske "Hans Peter Erik Petersen"... I min database har jeg kun mulighed for at gemme "fornavn" og "efternavn". Alligevel skal brugerne kunne nøjes med at søge på "Petersen" og alligevel få "Erik Petersen" med som resultat.
Så "SELECT * FROM person WHERE SOUNDEX(efternavn)=SOUNDEX("Petersen");" virker desværre heller ikke...
Hvis du nu nøjedes med at lagre EFTERNAVNET i det dertil indrettede felt, så kunne resten være i fornavn's-feltet... Og så ville det køre... (altså søgning på EFTERNAVN)
Hvis du nu prøver at udtale "Erik Petersen" efter fulgt af "Petersen", så lyder det jo heller ikke helt ens... vel ;0)
Hvis det bare ville være så let at alle personer havde et fornavn og efternavn, ville der heller ikke være et problem. Desværre kan personer have en navn delt op i 3, 4 og endda mere.
Sommetider er det desværre ikke til at komme over, hvor gærdet er lavest... God arbejdslyst.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.