Avatar billede sebast Nybegynder
19. september 2005 - 17:24 Der er 16 kommentarer

Avanceret søgefunktion

Hvordan kan jeg søge på fx. Seastian og så finde Sebastian?

Altså dele det søgte ord op på en eller anden måde og se at det ligner det i min database? :)

www.Php.net har gjort det. Når man søger på noget der er lidt forkert, kan den godt finde det alligevel.
Avatar billede gf Nybegynder
19. september 2005 - 17:29 #1
$navn = mysql_query("select * from database where felt like '%$soegeord%' ORDER BY felt") or die(mysql_error());

mvh gf
Avatar billede nielle Nybegynder
19. september 2005 - 17:30 #2
Det kaldes phonetisk søgning og er senest blevet diskuteret i denne tråd:

http://www.eksperten.dk/spm/648453
Avatar billede Slettet bruger
19. september 2005 - 18:48 #3
gf måske skal du læse spørgsmålet igen.
Avatar billede Slettet bruger
19. september 2005 - 18:55 #4
Jeg tror det er SOUNDS LIKE du skal have fat i sebast.
Avatar billede gf Nybegynder
19. september 2005 - 18:58 #5
he, jeps, det gik vist lidt hurtigt.

mvh gf
Avatar billede Slettet bruger
19. september 2005 - 19:02 #6
;o)
Avatar billede sebast Nybegynder
19. september 2005 - 19:25 #7
mysql_query("select * from tabel where navn SOUNDS LIKE '%Seastian%'");

hvorfor virker den ikke for mig?
Avatar billede Slettet bruger
19. september 2005 - 20:19 #8
Måske understøtter din version mysql ikke SOUNDS LIKE.
Avatar billede jaw Nybegynder
19. september 2005 - 20:20 #9
SOUNDS LIKE 'Seastian' ? Altså uden %.
Avatar billede nielle Nybegynder
19. september 2005 - 20:24 #10
Får du en fejl - eller hvad skerder (ikke)? Prøv med denne:

mysql_query("SELECT * FROM tabel WHERE navn SOUNDS LIKE 'Seastian'") or die(mysql_error())
Avatar billede sebast Nybegynder
19. september 2005 - 21:16 #11
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SOUNDS LIKE 'Seastian'' at line 1
Avatar billede nielle Nybegynder
19. september 2005 - 21:35 #12
Måske er din MySQL simpelthen ældre end 4.1.0:

http://dev.mysql.com/doc/mysql/en/news-4-1-0.html

Prøv med denne ældre variant:

mysql_query("SELECT * FROM tabel WHERE SOUNDEX(navn) = SOUNDEX('Seastian')") or die(mysql_error())
Avatar billede coderdk Praktikant
20. september 2005 - 01:01 #13
Det vil så ikke virke pga måden soundex virker på, den stripper nemlig alle vokaler og laver en "beregning" på det resterende...

mysql> select soundex('Sebastian') as Med_B, soundex('Seastian') as Uden_B;
+-------+--------+
| Med_B | Uden_B |
+-------+--------+
| S1235 | S350  |
+-------+--------+
1 row in set (0.00 sec)
Avatar billede coderdk Praktikant
20. september 2005 - 01:04 #14
Jeg er ikke sikker, men måske kan du lave noget med mysql's fulltext match/against... Hvis du selecter med match/against så får du en slags "relevans-score"...
Avatar billede coderdk Praktikant
20. september 2005 - 01:05 #15
Avatar billede nielle Nybegynder
20. september 2005 - 07:00 #16
Ifølge release-noten fra MySQL:

http://dev.mysql.com/doc/mysql/en/news-4-1-0.html

- så er SOUNDS LIKE netop et synonym for den SOUNDEX-version som jeg har angivet.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester