Avatar billede crapman Nybegynder
23. februar 2005 - 13:02 Der er 12 kommentarer

Speciel søgning i mysql

Jeg har et felt som hedder "item_name" i en mysql tabel. Den indeholder eksempelvis 16x6.50-8 i en af de mange records. Brugeren skal nu have mulighed for at søge efter denne record ved at skrive 166508, 16x6.50-8, 166.508 osv.

Altså, skal den se bort fra de andre tegn der er i feltet udover talene, og den skal også se bort fra de tegn brugeren eventuelt måtte indtaste som søgeord.

Kan det lade sig gøre?
Avatar billede erikjacobsen Ekspert
23. februar 2005 - 13:07 #1
Hvis du ved at formatet er: "16x6.50-8" kan du jo lave "166508" om til "16x6.50-8".
Hvis du ikke ved noget om formatet i feltet, vil jeg anbefale dig at lave et felt
yderligere i tabellen, med teksten "166508", og så også fjerne sjove tegn fra brugerens
indtastning. Det nye felt skal så også indexeres, så du får en hurtig søgning.
Avatar billede dadane Novice
23. februar 2005 - 13:08 #2
Det nemmeste er sikkert at lave en pseudofelt med rene tal. Det gemmes samtidigt med det oprindelige data.

Det vil så f.eks. her indeholde 166508. Når du søger renser du så selv for andet end tal i din ASP kode.
Avatar billede crapman Nybegynder
23. februar 2005 - 13:09 #3
Nej jeg kender ikke formateringen, og jeg har også tænkt på muligheden med at lave et ekstra felt. Jeg synes bare det ville være smartere uden...
Avatar billede crapman Nybegynder
23. februar 2005 - 13:10 #4
Altså uden et ekstra felt. Kan det virkelig ikke lade sig gøre at trimme et felt direkte i sql sætningen?
Avatar billede erikjacobsen Ekspert
23. februar 2005 - 13:12 #5
Jo, det kan du godt, men så laver du en lineær søgning i tabellen, der vil tage lang tid.
Hvor mange tupler (rækker) har du / forventer du i tabellen.
Avatar billede crapman Nybegynder
23. februar 2005 - 13:13 #6
Jeg regner med omkring 2000 records
Avatar billede erikjacobsen Ekspert
23. februar 2005 - 13:14 #7
Hvis det var 20 records så ville jeg ikke anfægte din foreslåede metode, men med 2000 poster er det en urimelig arbejdsbelastning for serveren - syn's jeg ;)
Avatar billede crapman Nybegynder
23. februar 2005 - 13:16 #8
Fandens.. nå, jeg søger lige lidt rundt på google og ser om jeg kan finde noget.. og så skal jeg nok vende tilbage når jeg ved mere :)

Foreløbig tak for hjælpen, og skal nok vende tilbage med point senere ;)
Avatar billede crapman Nybegynder
23. februar 2005 - 13:42 #9
Okay, jeg har fundet en hurtig løsning som fungerer perfekt.

Jeg trimmer mit input for alle andre tegn end tal, og indsætter %-tegn imellem hvert tal.

Dette fodrer jeg så en like sætning med, og vupti, så fungerer det helt perfekt!
Avatar billede erikjacobsen Ekspert
23. februar 2005 - 13:46 #10
Jah, men langsomt. Jeg håber ikke jeg er på samme webhotel som dig ;)
Avatar billede crapman Nybegynder
23. februar 2005 - 13:48 #11
Tja.. det må blive sådan.. der skal uanset hvad også køres en anden like selection i samme sætning.
Avatar billede dadane Novice
23. februar 2005 - 14:04 #12
Erik har fat i noget med hastigheden, - men derudover får du også for mange hits (som du så evt. kan filtrere selv i din kode).

Hvis du f.eks. søger på 18 får også hittet: "16x6.50-8" - hvilket formodentligt ikke var meningen.
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
Kurser inden for grundlæggende programmering

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