Visa ett inlägg
Oläst 2007-12-24, 12:36 #2
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
När jag gjorde min sökmotor så la jag det mesta jobbet vid indexeringen så att sökningarna i slutändan skulle ske så snabbt som möjligt. Om man ska ta mitt exempel och förenkla det så tog jag texten som skulle sparas och sparade den samtidigt som jag lagrade alla unika ord i texten i en separat tabell. Denna tabell innehåller orden från ALLA texter du indexerar och bara unika sådana, så antalet rader bör stagnera efter en tids indexering. För min del så började den bli "mätt" runt 300.000 ord.

Det som nu avgör relevansen är lite upp till dig, men du ska iaf under indexeringsfasen koppla dessa unika ord i en länktabell till din originaltext. I länktabellen har du, förutom pekarna mot de båda andra tabellerna även en kolumn som innehåller en poäng för just den länken (ordet), dvs hur mycket det unika ordet är värt i den utvalda texten. Poängen kan du räkna ut efter din fantasi, men några grundläggande grepp kan vara att ta ett ord och kolla dess längd * antalet förekomster och ta det i procent till textens totala längd (dvs frekvens avgör ordets relevans för just den texten). Du kan också kolla hur ordet förekommer i texten och vikta upp poängen beroendes på detta, dvs ge merpoäng för förekomster i rubriker eller korta meningar etc etc. Det är bara fantasin som avgör hur många viktningsregler du kan komma på. Det finns även ett stort antal algorithmer för olika typer av relevans men det må vara överkurs.

Rent programmeringsmässigt så är det kanske smart att göra en klass som du kan mata med en url och som sedan populerar en komplett lista med alla ord som förekommer samt dess poäng uträknade efter dina regler. Själv kom jag upp i över 50 regler innan jag blev tvungen att intala mig själv om att det kanske räcker nu...

Viktningen på länktabellen använder du då som sorteringsordning när du plockar fram sökresultatet. Det du har otur med är att du antagligen måste dubbellagra texten; dels som komplett text, dels som ord i en tabell. Det behövde inte jag då jag bara pekade ut originalfilen i sökresultatet.

Du har iaf lyxen att veta vilka site du ska indexera samt vilket ämne det rör sig om; då behöver du inte direkt ta hänsyn till andra faktorer utanför texten såsom sökordsförekomst i domännamn, htmlkvalitet och annat krafs.
Robert är inte uppkopplad   Svara med citatSvara med citat