Avatar billede EveryMA Mester
17. oktober 2011 - 18:28 Der er 6 kommentarer og
1 løsning

Funktion; Læs også i ASP

Hej,

Normalt ville dette ikke være et problem for mig, men jeg kan ikke lige gennemskue hvordan det skal drejes og kodes.

Jeg ønsker, at når men klikker sig ind på en nyhed, så skal der være en udkald som finder relaterede nyheder.
Jeg for forsøgt mig med følgende:


sql = "select * from XXX where emne like '%" & rs("emne") & "%' order by id desc limit 0,5"

Altså at den skal finde 5 af de seneste indlæg, som har noget med det samme emne at gøre.

Men det eneste den giver mig er præcis den nyhed man er inde på, netop fordi den ville søge således:

... where emne like "Hej du er ikke velkommen her"
Og naturligvis er der kun 1 nyhed som har samme topic.
Hvordan får man den til at søge bredt, så den viser flere relaterede nyheder ?
Avatar billede arne_v Ekspert
17. oktober 2011 - 19:03 #1
Det er faktisk ikke helt simpelt.

Hvis du opretter en ny tabel:

nyhedskeywords
  nyhedsid
  keyword

Saa kan du lave en:

SELECT * FROM nyheder WHERE id IN (SELECT nyhedsid FROM nyhedskeywords WHERE keyword IN ('foo','bar'))

hvor for og bar saa er kewords man leder efter.

Keywords skal enten intastes manuelt eller du kan tage alle ord i overskriften minus kendte ord.
Avatar billede EveryMA Mester
17. oktober 2011 - 19:07 #2
Okay. Det var "keywords"-vejen jeg ville undgå, da det gør det mere besværligt at skulle indtaste dem hele tiden :)
Avatar billede softspot Forsker
17. oktober 2011 - 21:05 #3
Som arne nævner, kan du jo opdatere keyword-tabellen, når nyheden gemmes, således du splitter teksten op i de enkelte ord og gemmer hvert enkelt ord i keyword-tabellen sammen med det aktuelle nyhedsid. Dog er jeg lidt uenig med arne i, at du skal undlade at gemme ordet for kendte ord (med mindre det er kendte ord for samme nyhedsid), for ellers vil der jo kun komme én nyhed for f.eks. ordet "velkommen", selvom der måske er 50 nyheder som indeholder "velkommen".

Du kan evt. lave en relationstabel mellem ordlisten og nyhedstabellen (indeholdende kolonnerne nyhedsid og ordid), således du ikke har så meget redundans af samme ord, men det hører måske til i afdelingen for flueknepperi... :-)

Hvis det skal være rigtig fancy, sørger din rutine for at filtrere de ord fra som er mest almindelige. Dette kunne gøres ud fra forskellige kriterier, f.eks. forholdsord, bindeord, eller en simpel liste af ekskluderede ord eller noget helt fjerde...
Avatar billede arne_v Ekspert
18. oktober 2011 - 09:32 #4
Med kendte ord mener jeg alle de almindelige ord.

Paa dansk: er, at, en, et, det, den ....

Match paa dem fortaeller intet.
Avatar billede softspot Forsker
18. oktober 2011 - 13:19 #5
@arne >> så er jeg enig :-)
Avatar billede EveryMA Mester
21. oktober 2011 - 11:48 #6
Arne_v smid et svar.

Så må det blive på den måde jeg ellers frygtede.
Mere arbejde til mig ! =)
Avatar billede arne_v Ekspert
21. oktober 2011 - 12:10 #7
svar
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