Hej! Detta är tätt kopplat till hur man gör en viss typ av sökmotorer (s.k. vector space model).Rankingsystem i SQL
Jag har lite problem med en SQL-fråga som ska söka efter egenskaper på en person.
Det ska fungera så att man söker efter t.ex. tre egenskaper.
Egenskaperna kan t.ex. vara:
Kunskap i Tyska, Målinriktad och Självständig.
Man har sedan tidigare definerat olika egenskaper på alla personer i databasen.
Nu vill jag få fram en lista på de personer som stämmer bäst överrens med urvalet.
t.ex.
Karl Karlson 10
Dan Dansson 09
Lisa Lisasson 09
Beng Bengtsson 05
osv...
En person ska alltså inte behöva ha alla sökegenskaper men ju fler som stämmer in
ju högre ranking på listan ska de få.
Man skall även kunna tala om att det är extra viktigt att personen kan tyska.
Därför ska de som kan det få högre poäng än de utan.
Är det någon som gjort något liknade innan och har några bra förslag?
Tack
/Tom OlssonSv: Rankingsystem i SQL
Principen är att du anger ett värde på hur viktig varje tänkbar egenskap är. Det enklaste är att man bara anger vilka egenskaper som är intressanta, och resten är ointressanta. Då får de förstnämnda vikten 1, och de sistnämnda vikten 0 (alternativt ett litet tal för att folk som är bra på många andra saker också kan vara relevanta).
Det gör även att den sista grejen fungerar väldigt enkelt, du ökar bara vikten på den egenskapen.
Sen vet jag inte exakt hur du lagrar egenskaperna, men principen är att du tar mängden av en viss persons egenskap gånger dess vikt, och sen summerar dem.
Så om en person har:
tyska: 15
målinriktad: 2
franska: 7
och du har kraven Tyska, Målinriktad och Självständig, så får du vikterna
1
1
0
och alltså totalpoäng 15+2 = 17