31. juli 2001 - 23:59Der er
7 kommentarer og 1 løsning
En lidt mere avanceret søgning...
Hejsa
Jeg vil gerne lave min søgning på food4u.dk lidt mere avanceret, ind den er idag. I dag ser mit SQL-string sådan ud: SQL = \"SELECT * FROM food4u where godkendt = \'ja\' and opnavn LIKE \'%\" & request(\"opnavn\") & \"%\' and type LIKE \'%\" & request(\"type\") & \"%\' and anledning LIKE \'%\" & request(\"anledning\") & \"%\' and antal LIKE \'%\" & request(\"antal\") & \"%\' and ing LIKE \'%\" & request(\"ing\") & \"%\' order by opnavn
Men da ingredienser indeholder rigtig mange ting, vil jeg gerne have, så man kan skrive:
laks rejer
og så skal den så søge hvor der er laks, hvor der er rejer, og hvor der er begge dele. Som man gør her, og på f.eks. jubii.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Du er nødt til at splitte strengen og så opbygge dit SQL kald via det. Og for at opnå en ordentlig søgning er du også nødt til at replace alle punktummer, kommaer, (semi)kolon\'er, stjerner, minusser osv.
Hvis du bruger SQL server vil jeg helt klart anbefale at bruge \"Full Text Index\". Så kan du lave forspørsler alá.
SELECT Opskrift.Title, Rowset_1.RANK FROM CONTAINSTABLE(opskrift, Ingredienser, \'fisk and skaldyr\') Rowset_1 INNER JOIN Article ON Rowset_1.[KEY] = Article.ArticleID ORDER BY Rowset_1.RANK DESC
Det vil give din en liste over alle opskrifter hvor ingerdiens feltet indeholder fisk og skaldyr.
Desuden går det fandens hurtigt. Jeg ændrede en lignende forspørgsel fra ca. 50 sek til under 1 sek ved at bruge full text index.
Ud skal naturligvis modificerer dit input med noget i stilen med seekstr = replace(1,Seek,\" \",\" and \") og så skal du sætte Full Text Index op hvilket kan give lidt problemer, men resultatet er guld værd.
Ok, jeg var vist lidt kryptisk og maniskt, men jeg er selv meget glad for teknikken. ;)
Hvis du har en SQL server, findes der noget der hedder \"Full Text Index\" der er som designet til det du vil.
Alternativt skal du bryde din tekst op og lave en clause for hvert ord. (\"Laks og skaldyr\" bliver til \"where .... and ing LIKE \'%Laks%\' and ing LIKE \'%skaldyr%\'\") og Like \'% ... %\' er den langsomste type sammenligning du kan lave.
Endnu et alternativ er at opbygge en table over alle ingredienser og så lave en relations tabel mellem ingredienser og opskrifter. men det er en større omgang.
tdaugaard > Hvis du laver noget, så send det til admin@food4u.dk
Så får du point
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.