Avatar billede kjoller Nybegynder
08. juni 2001 - 10:38 Der er 12 kommentarer og
1 løsning

Søge i en db med 2 ord

Hvordan kan jeg få min søgemaskine til at søge på 2 ord i en database f.eks. ordene \"bil\" og \"båd\" så der kun kommer sætninger frem som indeholder begge ord i en teksten f.eks. \"Jeg bruge min bil til at trække min både med\"

Jeg har prøvet med \"like\" i en sql sætning men den søger så på en sætning hvor der står \"bil båd\" i den rækkefølge.
Avatar billede tdaugaard Nybegynder
08. juni 2001 - 10:40 #1
SELECT * FROM mintabel WHERE tekst LIKE \'%bil%\' AND tekst LIKE \'%båd%\';

Du kan bruge Split() til at få alle keywords i et array og lave en SQL streng med noget For..Next.
Avatar billede danriis Nybegynder
08. juni 2001 - 10:43 #2
ved ikke helt om denne funktion virker til det du vil have den til....

function menu(str)
temp = split(str,\",\")
for a=0 to Ubound(temp)
  response.write \"\"&temp(a)&\"<BR>\"
next
end function
Avatar billede tdaugaard Nybegynder
08. juni 2001 - 10:55 #3
danriis:> det var da slet ikke det han spurgte om...
Avatar billede danriis Nybegynder
08. juni 2001 - 11:54 #4
nej... efter jeg havde fået det læst ordentligt igennem og er vågnet.... har jeg også fundet ud af det :)
Avatar billede kjoller Nybegynder
08. juni 2001 - 12:45 #5
Ja jeg kan godt se det men hvad nu hvis jeg skriver et tredie ord så der er 3 ord man skal søge på
Avatar billede kjoller Nybegynder
08. juni 2001 - 12:46 #6
den skulle jo gerne ordne det automatisk
Avatar billede tdaugaard Nybegynder
08. juni 2001 - 12:50 #7
Jeg har egentlig ikke tid til at hjælpe nu men jeg ved hvordan det er når jeg selv gerne vil have et svar på noget så her er et script der laver SQL\'et til dig:

<%
    keys = request(\"keywords\")
   
    If keys > \"\" then
        sql = \"select * from mintabel where \"

        if instr(keys, \" \") = 0 then
            sql = sql & \"tekst LIKE \'%\" & keys & \"%\'\"
        else
            arrkeys = split(keys, \" \")
            for index = 0 to ubound(arrkeys)
                sql = sql & \"tekst LIKE \'%\" & keys & \"%\' AND \"
            next
        end if
        if right(sql, 4) = \"AND \" then sql = left(sql, len(sql) - 5)

        set rs = conn.execute(sql)
    end if
%>
Avatar billede tdaugaard Nybegynder
08. juni 2001 - 12:51 #8
det er IKKE testet ... og jeg ved koden ligner lort ...
Avatar billede kjoller Nybegynder
08. juni 2001 - 13:22 #9
Jeg kigger lige på det, og kommer tilbage (nok førdst i morgen) :o)
Avatar billede kjoller Nybegynder
08. juni 2001 - 15:18 #10
kewl med lidt rettelser så virkede det, tak for det, jeg har bare lige et ? hvad gør: if right(sql, 4) = \"AND \" then sql = left(sql, len(sql) - 5)? bare i grove træk
Avatar billede tdaugaard Nybegynder
08. juni 2001 - 15:29 #11
right(sql, 4) - giver mig de første 4 tegn i strengen fra højre (slutningen)
sql = left(sql, len(sql) - 5) - tag alle tegn i strengen fra venstre - 5

Avatar billede kjoller Nybegynder
08. juni 2001 - 15:32 #12
ok takker for hjælpen endnu en gang
Avatar billede tdaugaard Nybegynder
08. juni 2001 - 15:37 #13
Det var så lidt :-)
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