Avatar billede MPVM Nybegynder
15. august 2009 - 02:20 Der er 1 kommentar

SORT BY relevance SQL query

Hej Eksperter!

Jeg har lavet en søge funktion på min side. Når den søges spitter den først søgestrængen op i ord og laver derefter en LIKE søgning på hvert enkelt ord og forener resultaterne v.h.a UNION. Er der nogen der ved hvordan jeg på en næm måde kan få SQL til at søge efter relevans?

Jeg har prøvet at søge lidt på det, og har fundet ud af at man måske kunne gøre følgende:

SELECT title,
        relevans = CASE title
        WHEN title LIKE '%$search%' THEN relevans=relevans+1 ELSE relevans=relevans
        WHEN title LIKE '%$search%' THEN relevans=relevans+1 ELSE relevans=relevans
        WHEN title LIKE '%$search%' THEN relevans=relevans+1 ELSE relevans=relevans

Den vil hver gang der finder en række der indeholder $search (De 3 $search er selvfølgelig de 3 ord der er blevet skrevet, hvis der var skrevet 3 ord) tilføje 1 til relevans. Derfor vil der blive tilføjet talværdier efter hvor mange ord der forekommer.

Jeg har desværre ikke fået dette til at virke.
Er der nogle der kunne give mig en hjælpende hånd :D

Tak på forhånd og undskyld den lange tekst :S
Venlig Hilsen MPVM :D
Avatar billede _skou_ Nybegynder
15. august 2009 - 13:59 #1
Måske vil følgende virke (ikke afprøvet):

SELECT title, COUNT(title) relevans
FROM
(
SELECT title
WHERE title LIKE '%$search[0]%'
UNION
SELECT title
WHERE title LIKE '%$search[1]%'
UNION
.
.
.
)
GROUP BY title
SORT BY relevans
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
Computerworld tilbyder specialiserede kurser i database-management

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