Avatar billede loukas Mester
28. april 2002 - 00:16 Der er 16 kommentarer og
1 løsning

Tekst søgning

Jeg har lavet en søgefunktion således:
strSQL = SELECT * FROM Tabel WHERE"
strSQL = strSQL & "(description LIKE '%" & strKeyword & "%')"

Nu er mit problem så at hvis du søger på f.eks 'ØL'
så kommer der resultater som ØLgod eller gØL pØLser.
Ikke så fedt.
Nogen som kan hjælpe mig med dette problem ??

Avatar billede kimiwan Nybegynder
28. april 2002 - 00:22 #1
søg på  LIKE '% " & strKeyword & " %'

dvs. inkluder et ekstra space før og efter dit søgeord.
Avatar billede loukas Mester
28. april 2002 - 00:45 #2
Jeg har lavet den sådan her:
(description LIKE '% "&strKeyword&" %')"
og får stadig gØL pØLser
?????
:-(
Avatar billede eagleeye Praktikant
28. april 2002 - 00:54 #3
Ved LIKE:
%X  : finder alle ord der starter med X
X%  : finder alle ord som slutter med X
%X% : finder alle ord som indeholder X

Når du skriver Øl hvad skal den så finde?
Avatar billede kimiwan Nybegynder
28. april 2002 - 00:56 #4
Tja.. med mit forslag finder den vist egentlig ikke øl i starten og øl i slutningen af feltet - selvom det står alene.  Var nok lidt for hurtig der.
Avatar billede kimiwan Nybegynder
28. april 2002 - 00:57 #5
eagleeye: du har vist byttet om på de to første forklaringer, har du ikke?
Avatar billede eagleeye Praktikant
28. april 2002 - 00:58 #6
ups jo :) det er omvednt
Avatar billede loukas Mester
28. april 2002 - 01:03 #7
Jeg Skal søge i beskrivelserne af nogle links i min DB.

Et eksempel på en beskrivelse:
Madsens Hjemmeside er en side der handler om øl og hornmusik...

Når så jeg søger på øl må den meget gerne komme mellem resultaterne, men der kommer også, som sagt før gØL pØLser eller noget helt 3.
eagleeye: Jeg er klar over det, men det løser ikke mit problem :-(
Avatar billede loukas Mester
28. april 2002 - 01:10 #8
Det skal hverken 'starte med', 'indeholde' eller 'slutte med' X
Det skal være præcis samme ord. ?!?!?!?!
Avatar billede kimiwan Nybegynder
28. april 2002 - 13:37 #9
jamen så skal du jo slet ikke bruge wildcards..

"SELECT * FROM tabel WHERE  description LIKE '" & strKeyword & "'"
Avatar billede loukas Mester
28. april 2002 - 20:23 #10
På den måde vil jeg jo kun få resultater der passer til hele Beskrivelsen.
Et søgeord som f.eks 'ØL' vil ikke give nogle resultater, med mindre beskrivelsen er 'ØL'

Hvis beskrivelsen er: 'En hjemmeside om øl'
Ja så kommer den kun hvis du skriver HELE sætningen 'En hjemmeside om øl'
Jeg ved ikke, men kan man ikke splitte 'Beskrivelsen på en eller måde ???
Avatar billede kotelet Nybegynder
28. april 2002 - 20:50 #11
Der skal selvf(ØL)gelig ikke bruges wildcards hvis du ikke vil finde pØLser eller lign. Så LIKE er det korrekte at bruge.
Med "SELECT * FROM tabel WHERE  description LIKE '" & strKeyword & "'" vil den finde SÆTNINGER der indeholder SELVE ordet øl... Verstehe?

/Kotelet
Avatar billede loukas Mester
29. april 2002 - 00:45 #12
Jeg har forstået !!!
Men det løser ikke problemet :-(

Og kotelet:

strKeyword='ØL'

Med "SELECT * FROM tabel WHERE  description LIKE '" & strKeyword & "'" vil den IKKE finde SÆTNINGER der indeholder SELVE ordet øl...
Men poster i kolonnen 'description' hvor der står 'ØL' og intet andet. I en sætning finder den det ikke :-(
Avatar billede kotelet Nybegynder
29. april 2002 - 00:47 #13
hmmmmmmmm ... Så er jeg sgu på bar bund. I min verden duede det... Jeg fik bare ikke lige testet det..
Avatar billede loukas Mester
29. april 2002 - 00:53 #14
Jeg må kunne "splitte" description på en eller anden måde ???
Avatar billede kotelet Nybegynder
29. april 2002 - 15:57 #15
Jo, man kan godt splitte den. Dette script gør netop dette. Men du får kun sætninger hvor øl står som et ord for sig. Den kan så, hvis man vil (evt. som en søgemulighed for brugeren) udviddes til at man foretager begge slags søgninger.

strSQL1 = "SELECT * FROM tabel"
set Rs = Conn.Execute(StrSQL1)

strKeyword = request.form("search") 'Bare et forslag

<table cellpadding=2>
DO
<tr><td>
    ArrDescription = Split(Rs("description")," ")
    FOR i = 0 to UBound(ArrDescription)
        IF strKeyword = ArrDescription(i) AND rs("description") <> strLast THEN
            response.write rs("description") & "<br>"
            strLast = rs("description")
        END IF
    NEXT
    rs.Movenext
</td></tr>
LOOP while not rs.EOF
</table>

Scriptet udskriver alle descriptions fra databasen i en tabel, hvor ordet 'strKeyword' indgår.

Håber du kan bruge det.
Avatar billede kotelet Nybegynder
29. april 2002 - 15:59 #16
Hov... Nu var det jo en tabel... Så glem lige

& "<br>"

efter response.write rs("description"), ok? :-)

/Kotelet
Avatar billede loukas Mester
02. maj 2002 - 11:17 #17
OK, nu lukker jeg.
Kotelet: Det er helt klart noget jeg vil gå videre med.
Tak for interessen !!!!
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