PHP, MySQL - avanceret sortering og gruppering af resultater?
Hejsa.
Sidder og roder med en søge funktion og har i den forbindelse et par PHP/MySQL spørgsmål jeg håber at kunne få hjælp til herinde :)
Spørgsmål 1) Hvis man laver en søgning der hedder: WHERE id LIKE '%$search_query%' - Hvordan sørger man så for at resultaterne bliver sorteret efter relevans - eller bedste match?
Det jeg egentlig gerne vil er at sortere dem efter hvor tidligt i overskriften der er et match med search_queryen, så hvis jeg f.eks. har to forskellige overskrifter der ser ud som følger:
a) Dette er en overskrift b) Overskrift på artikel
- Og laver en søgning WHERE overskrift LIKE '%skr' så vil den matche på begge overskrifter oven over, men jeg vil gerne have resultat "b" til at være det der kommer først, også selvom det evt. har en ældre oprettelses dato end "a"
Spørgsmål 2)
Lad os blive i analogien med artikler på f.eks. en blog. Jeg vil nu lave en søgning i artikler hvor den eksempelvis søger i artikkel overskrift og artikkel kategori. Måske har jeg en kategori der hedder "webdesign", og en anden kategori der hedder "grafisk design". Jeg laver nu en søgning på ordet "design" og får alle artikler i de to kategorier.
Det jeg så gerne vil nu er at grupere dem, i dette tilfælde i to grupper - så den kun viser resultatet "Webdesign", og "Grafisk design" en gang hver.
Så overordnet handler det om sortering og gruppering - 100 point for hvertspørgsmål :)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Takker, det er netop det jeg søger, men problemet er at søgeresultatet både kan matche f.eks. en kategori eller måske et tag... Så det jeg egentlig gerne vil er at sortere alle resultater på f.eks. kategori som du skriver ovenfor, men samtidig sortere alle resultater på f.eks. tags på samme måde.... Noget ala:
GROUP BY kategori OR tag (Alt efter hvad der matches på).
Det med tag forstår jeg ikke helt. Men det kan da sikkert lade sig gøre.
Er det to helt forskellige søgninger (i forskellige felter og/eller tabeller), som du vil kombinere? Kan du ikke forklare lidt mere om hvordan tabellen/tabellerne ser ud og hvordan du gerne vil se resultatet?
- Artikel overskrift: "Her en anden overskrift" - Artikel tags: "SEO", "Google", "Søgemaskiner"
Jeg laver så eksempelvis en søgning på "se" og det vil jo så matche både "se" i a) "SE her..." og "se" i b) "SEo".
Det jeg så gerne vil er at grupere alle resultater der matcher et eller andet i en overskrift sammen, og alle resultater der matcher et eller andet på samme tag, så resultatet af min søgning kommer til at se ud som følger:
Nu er det her bare et eksempel for at gøre det overskueligt og lettere at forklare hvad jeg vil.. Men jo, mine tags i det her eksempel ligger i en anden tabel end artiklerne :)
Jeg kunne selvfølgelig bare lave to separate opslag i databasen men vill egerne forsøge at skrive det hele sammen til en sætning (Men det er måske slet ikke nogen fordel?)
Ok, jeg skulle bare lige tjekke, folk herinde kan jo finde på så meget ;-)
Jeg ville nok lave to sql søgninger. Da de to resultater fra dem ikke kan forbindes til hinanden, bliver det meget svært (umuligt) at lave en samlet sql søgning.
Ja, har teksten "overskrift" stående flere forskellige steder.. Mystisk... Her et screenshot af den tabel jeg prøver at søge i.. Ser det ikke rigtigt ud?
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.