Avatar billede oasen Nybegynder
21. marts 2003 - 16:51 Der er 8 kommentarer og
1 løsning

Markering af søgeresultater

Hvordan vil I nemmest mene, man fremhæver de ord, der er søgt på i søgeteksterne.
Ligesom Eksperten her har gjort efter en søgning på "database": http://www.eksperten.dk/kat/3?searchtype=txt&words=database&method=and&sort=score&excerpt_on=1&catid=3

Ordene skal ikke blot fremhæves. Der skal også kun vises f.eks. max 100 tegn af teksten. Dvs. at det ikke er nok bare at trække det ud med Left() eller Right().

Jeg kunne forestille mig noget RegExp, men er lidt i tvivl.
Avatar billede mortrr Praktikant
21. marts 2003 - 17:13 #1
Fremhævningen kan godt gøres med en regexp. Den er bedst hvis resultatet skal vises i samme case som originalt.

Visning af den del af teksten der er interessant, kunne gøres ved at hente fx 200 tegn - 100 før og 100 efter teksten (det kan gøres direkte på databasen) - og så søge til næste mellemrum så teksten starter med et helt ord, og derefter foretage en regexp.replace på teksten for at fremhæve.
Avatar billede oasen Nybegynder
21. marts 2003 - 17:47 #2
Det var også noget i den stil, jeg tænkte på. Men det bliver lidt tricky, at få den til at ramme 100 tegn. Hvis søgeordet er på 30 tegn, og der kun er 20 tegn før første forekomst, skal de resterende 50 tegn hentes efter søgeordet (hvis der er så mange).
Avatar billede mortrr Praktikant
21. marts 2003 - 17:56 #3
Man kunne kigge på positionen i forhold til hvor lang teksten er. Hvis hittet ligger for sent i teksten - mindre end fx 50-(len(ordet)/2) fra slut - henter man de sidste 100. Og det samme hvis den ligger for tidligt i teksten.

Du skal kun beregne start position af hele teksten du skal bruge, og groft tage 100 tegn herfra og frem.
Avatar billede oasen Nybegynder
21. marts 2003 - 18:20 #4
Jeg tror, jeg dropper det med tegnene. Så vil jeg bare highlighte de fundne ord. Men følgende erstatter store bogstaver med små, hvis søgeordet er skrevet med småt (og omvendt). Hvorfor?

Function HighLightResults(strToReplace, strSearchWord)
    Set regEx = new RegExp
    regEx.Pattern = strSearchWord
    regEx.IgnoreCase = true
    regEx.Global = true
    Set Matches = regEx.Execute(strToReplace)
    For Each Match in Matches
        HighLightResults = regEX.Replace(strToReplace, "<b>" & Match.Value & "</b>")
    Next
End Function
Avatar billede mortrr Praktikant
21. marts 2003 - 18:32 #5
Fordi den selv be'r om det ;-)

Function HighLightResults(strToReplace, strSearchWord)
    Set regEx = new RegExp
    regEx.Pattern = "(" & strSearchWord & ")"
    regEx.IgnoreCase = true
    regEx.Global = true
    HighLightResults = regEX.Replace(strToReplace, "<b>$1</b>")
End Function
Avatar billede oasen Nybegynder
21. marts 2003 - 18:56 #6
Nå ja, det kan jeg da godt se nu.
Avatar billede jnissen Nybegynder
25. marts 2003 - 07:14 #7
Du kan også bruge denne kode til at fremhæve det du har søgt på:
<%= Replace(rs("tekst"), request("soegning"),"<span style='background-color: #FFFF00'><b>" & request("soegning") & "</b></span>") %>
Avatar billede oasen Nybegynder
27. april 2003 - 04:38 #8
Jeg havde da rent glemt dette spørgsmål. Vil du ikke have dine points, mortrr?
Avatar billede mortrr Praktikant
27. april 2003 - 13:13 #9
Jow da, gerne.
Tak som byder.
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