[MYSQL] Sorteren icm Relevance functie

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Ik heb een query gemaakt die gebruikt maakt van de relevance functie in mysql met full text searching.
Daarnaast heb ik voor een paar colums aangegeven dat er meer relevantie toegekend dient te worden indien ze in de desbetreffende column gevonden worden.
Dit werkt prima alleen heb ik een probleempje met het sorteren van de resultaten.
Standaard sorteert hij dus op relevantie. Nu wil ik dat eerst alle gegevens uit de 2de query worden getoond (na de UNION dus) en daarna uit de eerste. Hoe kan ik dit aanpakken?
Ik probeerde te sorteren op url omdat de 2de query geen urls heeft en de 1ste wel, toch sorteert hij op relevantie.

Iemand een idee?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 SELECT id, url, titel, omschrijving, sortorder,
CASE WHEN omschrijving LIKE '%kleding%'
THEN 1
ELSE 0
END AS keywordmatch,
CASE WHEN titel LIKE '%kleding%'
THEN 2
ELSE 0
END AS contentmatch,
MATCH (
url, soort, titel, omschrijving, regio, afzetgebied
)
AGAINST (
'kleding'
) AS relevance
FROM object
WHERE MATCH (
url, soort, titel, omschrijving, regio, afzetgebied
)
AGAINST (
'kleding'
IN BOOLEAN
MODE
)
HAVING relevance >0
UNION (

SELECT advid, url, titel, omschrijving, sortorder,
CASE WHEN omschrijving LIKE '%kleding%'
THEN 1
ELSE 0
END AS keywordmatch,
CASE WHEN titel LIKE '%kleding%'
THEN 2
ELSE 0
END AS contentmatch,
MATCH (
url, soort, titel, omschrijving, regio, afzetgebied
)
AGAINST (
'kleding'
) AS relevance
FROM aanvraag
WHERE MATCH (
url, soort, titel, omschrijving, regio, afzetgebied
)
AGAINST (
'kleding'
IN BOOLEAN
MODE
)
HAVING relevance >0
)
ORDER BY keywordmatch DESC , contentmatch DESC , relevance DESC , url DESC
LIMIT 0 , 10

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
mazz schreef op vrijdag 27 februari 2009 @ 14:09:
Nu wil ik dat eerst alle gegevens uit de 2de query worden getoond (na de UNION dus) en daarna uit de eerste. Hoe kan ik dit aanpakken?
Zet deze voorwaarde voorin de order by?
Ik probeerde te sorteren op url omdat de 2de query geen urls heeft en de 1ste wel, toch sorteert hij op relevantie.
Relevantie staat ook eerder dan url vermeld?

Net als je andere topic (en hiervoor was imo geen nieuw topic nodig) moet je gewoon iets meer in de documentatie lezen en wat meer proberen met eenvoudiger queries...

{signature}


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Maar als ik url vooraan zet wordt de relevantie weer door elkaar gegooid.
Wat jij zei heb ik dus al getest. Op internet is er weinig over te vinden eigenlijk.
Zie jij nog een oplossing of loop ik nu gewoon tegen de limitaties aan?

Edit: ik heb het al :)

ORDER BY url asc, relevance DESC

[ Voor 11% gewijzigd door mazz op 27-02-2009 15:18 ]

20 jaar, en wat had ik bereikt?